Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング入門第5回 ~レゴロボットのプログラミング5~

Similar presentations


Presentation on theme: "プログラミング入門第5回 ~レゴロボットのプログラミング5~"— Presentation transcript:

1 プログラミング入門第5回 ~レゴロボットのプログラミング5~
情報工学科1年生 2007/5/22 プログラミング入門第5回 ~レゴロボットのプログラミング5~ 湘南工科大学 工学部 情報工学科 高畠俊徳,小林 学 二宮 洋,鈴木 誠

2 1. legOSとは RCXモジュール用のフリーのOS 余計な動作を省いて、必要最小限の機能を持っている。 フィードバックが速い。
⇔より細かく記述する必要がある。

3 1. C言語とは C言語の例 #include<dsensor.h> #include<unistd.h>
#include<dmotor.h> #include<conio.h> main() { int akarui=80; ds_active(&SENSOR_2); cputs("GO!!"); while(1){ if(LIGHT_2>=akarui){ motor_a_dir(brake); motor_c_speed(MAX_SPEED); motor_c_dir(fwd); } else{ motor_c_dir(brake); motor_a_speed(MAX_SPEED); motor_a_dir(fwd); C言語の例

4 1. プログラミングとは?(復習) プログラムを作る≠パソコンに向かって作業する その前にやることがいっぱい 1.テーマを決める
LEGOブロックでライン・トレースカーを作ろう!! 2.シナリオを考える どんなライン・トレースカーにするか? 3.シナリオを書く ライン・トレースカーってどうやって動くのか? 4.プログラミング言語に翻訳する 純正ファームウェア,C言語など 5.動かしてみる ライン・トレースカーを走らせる 6.確認する 線を辿って前進している事を確認 7.バージョンアップする もっと早く・複雑に動かすためには? シナリオ?

5 C言語プログラミングに挑戦! ・準備:C言語を使ったプログラミング ・プログラムの制御構造1 順次 ・プログラムの制御構造2 反復 ・プログラムの制御構造3 条件分岐 図のライントレースカー(基本形) を準備する

6 「メモ帳」(Notepad)を使って、C言語を入力する 「スタート」→「プログラム」→「アクセサリ」→「メモ帳」を開く

7 2. C言語を使ったプログラミング #include<sit.h> main(){ Init(); Zenshin(1.0);
Hidari_Turn(1.0); Migi_Turn(1.0); Koutai(1.0); }

8 2. C言語を使ったプログラミング 「メモ帳」に「半角」で入力 #include<sit.h> main(){ Init();
Zenshin(1.0); Hidari_Turn(1.0); Migi_Turn(1.0); Koutai(1.0); } 「メモ帳」に「半角」で入力 入力が終了したら「名前を付けて保存」する。 「ファイル」→「名前を付けて保存」を選択する。

9 2. C言語を使ったプログラミング (ファイルの保存)
「保存する場所」は「ローカルディスク(C:)」→「legOS」→「Demo」とする。

10 2. C言語を使ったプログラミング (ファイルの保存)
「ファイルの種類」を「すべてのファイル」とする。 「ファイル名」は「sit1.c」とする。 ファイル名を入力したら「保存」ボタンを押す。

11 3. 動かしてみる 純正ファームウェアと異なる点 ↓ C言語はコンパイルという操作が必要
コンパイルしたファイル(コンピュータの理解できるファイル)をロボットへ転送する。 コンパイルする環境を起動 「スタート」→「プログラム」→「Cygnus Solutions」→「Cygwin B20」をクリックしCygwin B20を起動する。 プログラム コンパイル(ビルド) 実行可能ファイル

12 3. 動かしてみる Cygwin B20

13 3. 動かしてみる コンパイル ⇒右の画面に次のように入力する。 cd /legOS 2回目以降は次のように 入力する。 ./sit.sh
(エラーがでたら、もう一度始めから確かめてやり直す.) ロボットの「Run」ボタンを押す。 前進,左ターン,右ターン,後退することを確認する。

14 4 プログラミングの基礎 4.1 プログラムの制御構造1:順次 数値の入力に注意! #include<sit.h>
4.1 プログラムの制御構造1:順次  #include<sit.h>  main(){   Init(); Zenshin(2.0); Hidari_Turn(0.5); Migi_Turn(0.5); Koutai(2.0); } 数値の入力に注意!

15 非常に重要 4.1 プログラムの制御構造1:順次(復習) プログラムの基本ルール1: 命令は,一度に一つだけ実行される 命令1
4.1 プログラムの制御構造1:順次(復習) #include<sit.h> main(){ Init(); Zenshin(2.0); Hidari_Turn(0.5); Migi_Turn(0.5); Koutai(2.0); } 非常に重要 プログラムの基本ルール1: 命令は,一度に一つだけ実行される プログラムの基本ルール2: 命令は,一つずつ(下に)順々に実行される 命令1 命令2 命令3 命令4

16 4.2 プログラムの制御構造2:反復(ループ,リピート)
4.2 プログラムの制御構造2:反復(ループ,リピート) #include<sit.h>  main(){ Init();    while(MUGEN){      Zenshin(2.0);          Hidari_Turn(0.5);    }  }

17 非常に重要 4.2 プログラムの制御構造2:反復(復習) プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る.
4.2 プログラムの制御構造2:反復(復習) 非常に重要 #include<sit.h> main(){ Init(); while(MUGEN){ Zenshin(2.0); Hidari_Turn(0.5); } プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る. ある終了条件を満たすまで反復は繰り返される. 注:命令が一つずつ実行される    のは変わらない 反復の始 反復の終 終了条件が書いてある(ここでは無限回繰り返す) ここでは「前進」→「左ターン」→「前進」→「左ターン」・・・を繰り返す

18 4.3 プログラムの制御構造3:条件分岐 #include<sit.h> main(){ Init();
4.3 プログラムの制御構造3:条件分岐 #include<sit.h> main(){ Init(); while(MUGEN){ if(Oshita1){ Hidari_Turn(0.5); } else{ Zenshin(2.0); 図のようにタッチセンサー を1番に取り付ける

19 非常に重要 4.3 プログラムの制御構造3:条件分岐(復習) 条件が記述されている (センサー1とつながったタッチ
4.3 プログラムの制御構造3:条件分岐(復習) 非常に重要 #include<sit.h> main(){ Init(); while( MUGEN ){     if( Oshita1 ){       Hidari_Turn(0.5);     }     else{  Zenshin(2.0); } プログラムの基本ルール3(条件分岐): ある条件を満たした場合には,「はい」の方が実行され,満たしていない場合には「いいえ」の方が実行される. 注:一度に実行されるのはどちらか   一方だけ. 条件が記述されている (センサー1とつながったタッチ  センサーがおされているか?) 「はい」のとき実行 「いいえ」のとき実行

20 5. いくつかの例題 次のいくつかの例を実行してみよう(C言語) (注:プログラムを理解しながら作成すること)
[例1]数値を変えてロボットの反応を確かめる #include<sit.h> main () { Init(); while (MUGEN) {     if (Oshita1) {        Hidari_Turn(0.1);     }     else {  Zenshin(0.1); } 時間を0.1秒に

21 [例2]ライントレースカー(基本形) #include<sit.h> main () { Init();
while (MUGEN) {      if (Akarui2) {      Hidari_Turn(0.1);      }      else { Migi_Turn(0.1); }

22 [例3]ライントレースカー(衝突するとストップ)
#include<sit.h> main () { Init(); while (MUGEN) {      if (Oshita1) { }      else { if ( Akarui2 ) {        Hidari_Turn(0.1); } else {   Migi_Turn(0.1);

23 [例4]前方が暗いとバック 2番のライトセンサーが暗いか? #include<sit.h> main() { Init();
図のようにライトセンサーをつなぐ #include<sit.h> main() { Init(); while (MUGEN) {      if (Kurai2) {      Koutai(1.0);      }      else {   Zenshin(1.0); } 2番のライトセンサーが暗いか?

24 [例5]リモコンカー 図のようにタッチセンサーを2つつなぐ #include<sit.h> main() { Init();
while (MUGEN) {      if (Oshita1) { if (Oshita3) { Zenshin(0.1); } else { Migi_Turn(0.1); }      } else { Hidari_Turn(0.1);

25 5. 課題 次の課題の車をC言語でプログラミング及び実行しなさい [課題1]1秒前進,0.5秒左ターンを繰り返す
[課題2]左ターンを繰り返し、ボタンを押している間だけ前進する [課題3]前進し,衝突したら1秒バックし,右へ障害物をよける [課題4]シートの黒枠より内側を走り続ける(ライントレースではない) [課題5]ライントレースカー(障害物に衝突したら1秒バックし,右へ障害物をよけ,再びもとのラインに戻る) [課題6]タッチセンサー1,3,ライトセンサー2をつける.センサー1だけ押すと左ターン,センサー3だけ押すと右ターン.センサー1,3両方押すと前進.両方押していないときはライントレースする. [課題7]次のページを参照 [課題8]ライントレースカー(前方が暗かったら1秒バックし,右へ障害物をよけ,再びラインに戻る.

26 [課題7]2つのライトセンサーを使った次の動きをするライントレースカー
センサー1 センサー3 センサー接続方法

27 [課題7]2つのライトセンサーを使った次の動きをするライントレースカー
2つのセンサーが両方とも白の時 2つのセンサーが両方とも黒線上の時 右折 左折 直進 2つのセンサーが境界線をまたいでいる時


Download ppt "プログラミング入門第5回 ~レゴロボットのプログラミング5~"

Similar presentations


Ads by Google