2009年6月29日月曜日

AVRのライタ作りが順調に進む

 DVC10029_毎週木曜日をAVRの日としてロボ班一同ライタ作りに勤しんで来ましたが、ライタの形が出来上がった人がちらほら出てきました。あとは、ライタとして動作するように、悪いところを除去していくのみです。のみです、と言ってもここからが大変で、失敗しては回路を見直すといった作業を繰り返している段階です。なんとか期末テストシーズンまでには全員完成したいと思います。

DVC10031

C言語講座 お引っ越しします。

ぶっけんブログに場所をお借りしてやってましたC言語講座ですが、記事がどうしても長くなってしまうので、日々の活動記録がどんどん流れてしまう状況に陥ってしまいました。なので、お引っ越しして、引き続きそこで講座を継続していこうとおもいます。

お引っ越し先
http://cgengo.blogspot.com/

ここで記事を更新すると、ぶっけんブログで更新のお知らせが出るようにTマモト君がしてくれるので、ぶっけんブログから飛べると思います。

どんどんぶっけんブログに活動報告を投下して、がんがんぐんぐんずいずい上昇活性化させていきましょう。

2009年6月27日土曜日

C言語講座 第4回 ifとelseと時々演算子

お題:
①プログラム実行中に1以上99以下の”2つの整数”a,bの入力を受けつけ、そのa,bの関係(a=b,a<b,a>b)を表示させる。
②a==a,a==0,a<100,a<0,a>0,a>100の関係演算子の結果をそれぞれ表示させる。

プログラム実行例

1以上99以下の整数を2つ入力してください。
a:
b:
a<bです。

関係演算子の結果は、
?
?
・・・

必須文字列
・if
・else
・==, < , >

ifとelseのスマートな書き方、関係演算子(==,<,>など)の仕組みを理解してください。

解答掲載は6月29日です。それまでに各自プログラムを作成し、
・プログラム文
・その実行ファイル
をメールに添付するか、8G以上のUSBメモリに入れてプレゼントするか、16GのmicroSDに入れてプレゼントするか、1TのHDに入れてプレゼントするか、いずれかの方法で提出してください。

質問等はメールまたはコメントにて。 どんな些細なことでも答えるので、頑張って取り組んでください。
cosmo-cleaner@za.pial.jp

2009年6月23日火曜日

C言語講座 第3回 if と else [解答済]

お題:
①プログラム実行中に”整数”の入力を受け付け、その整数が偶数か奇数か判断する。偶数の時は「偶数です」、奇数の時は「奇数です」と表示させる。
②プログラム実行中に整数以外の値を入力された場合、「整数ちゃうよ」といったメッセージを表示させる。

プログラム実行表示例

整数を入力してください。
x:
入力された値は偶数(奇数)です。


or

なんで整数を入力しないんですか。ディスってるんですか。

必須文字列
・if
・else
・% (剰余を計算する演算子)

if文の本質をよく理解してください。条件がゼロならどうなるか、など。

解答掲載までの期間は3日間です。それまでに各自プログラムを作成し、
・プログラム文
・プログラムをコンパイルした実行ファイル
をメールに添付するなり、紙に書いてポストに投函するなり、言葉で伝えるなり、いかなる方法をつかっても構わないので提出してください。

質問等はメールまたはコメントにて。 どんな些細なことでも答えるので、頑張って取り組んでください。
cosmo-cleaner@za.pial.jp

---------------------------------------------------------------

解答

解答例は以下の通りです。

#include <stdio.h>

int main () {
    double x;    //入力値を格納
    int y;        //整数判定に使用
    printf("x:");    scanf("%lf",&x);
    y = 100000*x;

    if ( y % 100000)
        printf("なんで整数を入力しないんですか。\nディスってんディスか。\n");          
                 //x/10^5に余りがある時、ここを通る。
    else                                              
                //x/10^5の余りが"0"の時、ここを通る。
        if ((int)x % 2)
            puts("そいつは奇数です。");
        else
            puts("そいつは偶数です。");
    return(0);
}

解説
整数判定は、まず、入力された値を10^5倍し、小数点以下を整数に引きずり出し、int型のyに整数としてぶち込みます。次にifの条件でyを10^5で割った余りを判定します。

例えば、x=123.12345を代入すると、y=12312345となり、y/10^5の余りは12345となって、if条件が非0となるので、1つ目の命令を実行して終了します。
この場合、小数点以下5桁の値まで、整数か否かの判定ができます。それ以上の桁数だと判定出来ない場合があります。例えば123.0000023などの値です。結果と理由は考えてみてください。

ここで、注意しなければならないのは、int型は10ケタまでの整数しか扱えない、ということです。10ケタ以上の数を入れようとすると、エラーが起きて分け分からん値が代入されます。つまり、このプログラムでxに代入できる数は、整数5桁までの数字となります。それ以上だと1億万1回の1億万回くらいは”なんで整数入力しないんディスか”となります。例えば123456は10^5倍した時に10ケタを超えてしまうので、エラーになります。代入されるわけわからん値が見たい人は、プログラム作って試してみてください。簡単にできます。
つまり、このプログラムで扱えるxは
・小数点以下あわせて10ケタ
・小数点以下5ケタ
・整数5桁
の実数です。精度を変えたければ、10の乗数を変えます。

奇数、偶数判定はプログラムの通りです。2で割れるか、割れないかで判断します。この段階では、xは整数であると決まってるので、(int)xで、xをint型にします。みなさんから質問ありましたが、%は整数の計算しか扱えません。

あと、puts関数について。これは与えられた文字列を出力した後、改行してくれる便利な関数です。つまり、
puts(“ナイスデース”); = printf(“ナイスデース\n”);
という事になります。一行メッセージをちょろっと入れたい時に便利です。

2009年6月21日日曜日

C言語講座 アンケート

ぬーっと始まったC言語講座ですが、まだ確固とした方針が決まってません。なので、今後講座を進めるにあたって参考にしたいので意見してほしいと思います。

次の質問に答えてください
1.この講座で学ぶC言語の知識はAVR寄りがいいか、それともまんべんなく学びたいか。
2.どのくらいの頻度で問題を出してほしいか。また、自分が耐えられる解答頻度はどれくらいか。
3.講座への要望、改善点等

解答はコメントにお願いします。あくまで参考なので、全ての要望に答えられるかどうかは分かりません。
答えてくれたら、もれなくネジあげます。

2009年6月20日土曜日

C言語講座 第2回 演算と型 [解答済]

お題:
①プログラム実行中に2つの”小数点を持った実数値”の入力を受け付け、その実数値の足し算、引き算、掛け算、割り算の計算結果を表示する。
②”1/7”の計算結果を小数点以下3桁まで計算して表示させる。
以上の①、②を実行するプログラムを作成せよ。

プログラム実行表示例

2つの”小数点を持った実数値”を入力してください。
x:(ここに入力)
y:(ここに入力)

x + y =
x – y =
x * y =
x / y =

1 / 7 =

必須文字列
・double
・scanf
・%l(エル)f
・%.3f

解答掲載までの期間は3日間です。それまでに各自プログラムを作成し、
・プログラム文
・プログラムをコンパイルした実行ファイル
をメールに添付するなり、紙に書いてポストに投函するなり、言葉で伝えるなり、いかなる方法をつかっても構わないので提出してください。

質問等はメールまたはコメントにて。
cosmo-cleaner@za.pial.jp

-----------------------------------------------------------

解答

解答例は以下の通りです

#include <stdio.h>

int main () {

    double x,y;

    printf("2つの小数点を持った実数値を入力してください。\n");
    printf("x:");    scanf("%lf", &x);
    printf("y:");    scanf("%lf", &y);

    printf("x + y = %f \n",x+y);
    printf("x - y = %f \n",x-y);
    printf("x * y = %f \n",x*y);
    printf("x / y = %f \n",x/y);

    printf("1 / 7 = %.3f \n",1.0/7.0);    //ここは1と7ではなく1.0と7.0にしないとダメ
    return(0);

}

%lfは倍精度実数値といって、%fより精度が必要な時に使います。
たいていは使わないと思いますが、scanf()の場合は、%lfでないと、小数点以下の数を受け付けない(みたい)です。気になる人は実験してみてください。

1/7の計算をするときは、解答例のような書き方もありますが、この場合は小数点を含む実数を扱う%.3fに合わせて、1.0/7.0と計算式を入れなければなりません。しかし、島本君の解答にありましたが、このような書き方もあります。

printf("1 / 7 = %.3f\n" ,(double)1 / (double)7);

これは、1と7という整数を、double型に変換しています。書き方は、

(double) a //aは実数

このような変換はキャストと呼ばれ、()をキャスト演算子と言います。この方法を使えば、double型に変換されるので、小数点を含む実数を扱う%.3fにも対応できます。

解答早かった順位
1位 O氏
2位 島本

忙しいとは思いますが、こちらも時間さいて問題と解答作ってるので、頑張って講座に取り組んでください。質問があったらいつでも受け付けます。

質問、補足ありましたら、コメントまたはメールにて。

C言語講座 第1回(A)

解答の一例

#include <stdio.h>

int main () {

    int age=220000;        //ageは年齢
    printf("私の名前は篠岡健です。\n%d歳です。\n" , age);

    return(0);

}

 

return(0)はあっても無くてもかまいません。プログラムを終わるときに添えます。

解答が早かった順に 島本、valda、こばやし。

EML計画

とりあえず中間終わった ながかった しんどかった 気を抜いてたら 小テストオワタ

将来的にはEMLを作りたい ただ材料も設計も大掛かりなのですぐにはできそうにない
せっかくHP作るんだしすぐに動くレベルのものを作ってモチベーションをあげようか、ということでガウスカノン(コイルガン)を作ろう 原理的にまったくの別物だけどとりあえず電磁力使って物体を加速させたいし・・・
というわけで、ガウスカノンを作ります。仕組み自体は作成可能みたいですが、実際にやってみながら調整したいので、とりあえず制御回路と充放電回路を作ります。明日(今日)買出しに行きますが、加速用コイルやメインコンデンサ(コンデンサバンク)の材料は後回しにさせていただきます。理由はコストの意味でももう少し考えたいからです。 
とりあえず、ある程度形にしないとなかなか面白みに欠けますね また報告します でわ 

6足歩行ロボットの試験歩行 - YouTube アップデート



ぎこちないけど...ちゃんと進みそう。ムーンウォークもしてる
最後脚つった。

2009年6月18日木曜日

教訓

電子部品

投げては

ダメ!

絶対!

2009年6月16日火曜日

C言語講座 第1回(Q) 基本的な定型文とコンパイル

お題:

私の名前は○○ △△です。
□□歳です。

と表示するプログラムを作成し、コンパイルせよ。□□には、整数の数字を代入する。

 

必須文字列 (これらを機能的に使用したプログラムにすること)
・include
・<stdio.h>
・printf
・%d
・int 

解答掲載までの期間は3日間です。それまでに各自プログラムを作成し、
・プログラム文
・プログラムをコンパイルした実行ファイル
をメールに添付するなり、紙に書いてポストに投函するなり、言葉で伝えるなり、いかなる方法をつかっても構わないので提出してください。

質問等はメールまたはコメントにて。
cosmo-cleaner@za.pial.jp

テスト前の独り言

HIROKIさんから、何でもいいから日常を書け言われたので、特に書くことはないですが、初投稿します
行き詰っていたAVRライターがもうすぐ完成(?)し、ようやくAVRに触れることができそうだ・・・と思っていたら、そうだった。ライター作成と平行していたはずのC言語学習も、まったく使わない→モチベーションが下がる→一切触れなくなる→忘れる→もう一度はじめから→モチベーションが下がる→・・・ という悪循環に陥っていた事を忘れていた    今週からまじめにやろう・・・今度こそ
HIROKIさんcosmo-cleanerさんお疲れ様です C言語講座まじめに参加します 私ロボットよりも断然AVRのほうに興味あるんで

AVRライターまともに動けばいいな 結構苦労したんだから 断線とか、接続ミスとか・・・怖いよ
では、テスト勉強に戻ります

2009年6月15日月曜日

C言語講座 開設のお知らせ

AVRマイコンのプログラムにはC言語の知識が不可欠なので、C言語を学ぶための講座を開きます。

形式としては、ここにお題投下して、各自お題の目的を達するプログラムを作成。質問はメール、メッセで応答。数日後、ここに回答や計算結果を投下、、、といった感じになると思います。

教材はありません。ネットにC言語に関する資料がいっぱいあるので、それをgoogleなりで調べてください。ちなみに、問題は「明解 C言語 入門編(柴田望伀洋 著)」 を参考に作ります。この本は2chの人が大絶賛してた本なので、超絶いいものです。

51N3ym-NBRL

講座を受ける前に、まず各自のPCにC言語の環境を整えてください。C言語のプログラムがコンパイル出来ればなんでもいいですが、便宜上「CPad for Borland C++Compiler」というソフトに統一します。このリンクにインストールの仕方が乗ってるので、他のサイトなども参考にして頑張って導入してください。ちなみにこんな感じのソフトです。

image

問題は後日投下します。

導入の報告、質問等は cosmo-cleaner@za.pial.jp までお願いします。