2005/C6/y2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
ライン上にいるときは前進するようにプログラムしてみました。
左右に振りながら動くプログラムよりはっきりと速いのがわか...
精度もよく、ヘアピンカーブもOKです。センサーの数は1個です。
/* 黒い線をトレースするロボット のプログラム */
// 作成者:山崎
// 作成日:2005-11-18
//右折のサブルーチン
sub right()
{OnRev(OUT_C);
OnFwd(OUT_A);}
//左折のサブルーチン
sub left()
{OnRev(OUT_A);
OnFwd(OUT_C);}
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);//光センサーをセン...
while (true ) {
OnRev(OUT_A+OUT_C);//前進
if (SENSOR_2 > 40){ //ラインから外れ...
ClearTimer(0);//...
right();//右折
until((SENSOR_2 <...
//センサーがライ...
if ((Timer(0)>2) ...
...
...
...
}
}
}
*&size(25){わかったこと}; [#p1ae528f]
-光センサーは、白いところではセンサー>40、黒いところでは...
-複雑な条件式でも()でくくってやればできる。
-untilはWaitより大事かもしれない。
-二つの処理のうちどちらかを選ぶ(今回は右折と左折)場合、ど...
**Timerを使うと処理時間が計れる。これを利用すればそろそろ...
これはこれからもよくでてきそうなのでテンプレート感覚で使...
AまたはBの処理をしてやらないといけないとき
{
ClearTimer(0);//Aの行動時間を計るタイマースタート
A();
until((処理効果が出たときの条件式) || ((Timer(0)>効果...
//効果がでる または 予想タイムになっても効果なしなら...
if ((Timer(0)>効果が出るまでの予想タイム) && (効果なし...
{
//場合によってはここにAの処理でしてしまった間違った...
B();
until(処理効果が出たときの条件式);//効果が出るまで
}
}
*明るさを測るプログラム [#q182f8f5]
このプログラムは光センサーをセンサー1に付ければ本体には特...
いろいろな物の表面で試すと楽しいです。え!?そんなの使わな...
使い方
-Runを押すと、その場の光センサーの値を音で表します。
-低い音の鳴った回数が10の位の数、短い音の鳴った回数が1の...
// 明るさを測るプログラム
// 作成者:山崎
// 作成日:2005-11-27
// 変更日:2005-11-28
// 変更点:%を使って簡単に書き換えました。
task main ()
{
SetSensor (SENSOR_1, SENSOR_LIGHT);
repeat ((SENSOR_1-SENSOR_1%10)/10) //10の位の数だけ低い...
{
PlaySound (SOUND_LOW_BEEP);
Wait (150);
}
Wait (200); //10の位の数を鳴らし終わると少し待ちます。
repeat (SENSOR_1%10) //1の位の数だけ短い音を鳴らします。
{
PlaySound (SOUND_CLICK);
Wait (100);
}
}
*&size(25){わかったこと}; [#g4c3f7a1]
-白と黒の明るさの値がとてもよくわかりました。やはり40が白...
白い部分は50,49,48,47など
黒い部分は33,31,30,27など
青い部分は27、黄色い部分は44、蛍光灯の真下は77、真っ暗な...
-真っ暗な部屋でも物にセンサーを近づけると普通の値、白47や...
-茶色は40前後の値が出るので、これが白と黒の中間の明るさみ...
*&size(25){疑問点}; [#qcfc550e]
-サブルーチンの中に別のサブルーチンがあるとエラーが出るみ...
-割り算の余りを返す命令などはないのか?(解決済)
**アドバイスなどありましたらこちらへ [#z8a29125]
-残念ながら NQC の仕様で、サブルーチンから他のサブルーチ...
-紙や線の濃さによって閾値を調整する必要がありますが、白と...
-白と黒の部分の明るさの値を調べて載せました。 -- [[山崎]]...
-割算の余りは『%』という演算子で得られます。(例) z = x % ...
-早速書き換えてみました。 -- [[山崎]] &new{2005-11-28 (月...
#comment
[[戻る>2005/C6/y0]]
[[C6のTOPへ>2005/C6]]
RIGHT:
tya&counter(today);
&counter(yesterday);
&counter(all);
//11月18より
終了行:
ライン上にいるときは前進するようにプログラムしてみました。
左右に振りながら動くプログラムよりはっきりと速いのがわか...
精度もよく、ヘアピンカーブもOKです。センサーの数は1個です。
/* 黒い線をトレースするロボット のプログラム */
// 作成者:山崎
// 作成日:2005-11-18
//右折のサブルーチン
sub right()
{OnRev(OUT_C);
OnFwd(OUT_A);}
//左折のサブルーチン
sub left()
{OnRev(OUT_A);
OnFwd(OUT_C);}
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);//光センサーをセン...
while (true ) {
OnRev(OUT_A+OUT_C);//前進
if (SENSOR_2 > 40){ //ラインから外れ...
ClearTimer(0);//...
right();//右折
until((SENSOR_2 <...
//センサーがライ...
if ((Timer(0)>2) ...
...
...
...
}
}
}
*&size(25){わかったこと}; [#p1ae528f]
-光センサーは、白いところではセンサー>40、黒いところでは...
-複雑な条件式でも()でくくってやればできる。
-untilはWaitより大事かもしれない。
-二つの処理のうちどちらかを選ぶ(今回は右折と左折)場合、ど...
**Timerを使うと処理時間が計れる。これを利用すればそろそろ...
これはこれからもよくでてきそうなのでテンプレート感覚で使...
AまたはBの処理をしてやらないといけないとき
{
ClearTimer(0);//Aの行動時間を計るタイマースタート
A();
until((処理効果が出たときの条件式) || ((Timer(0)>効果...
//効果がでる または 予想タイムになっても効果なしなら...
if ((Timer(0)>効果が出るまでの予想タイム) && (効果なし...
{
//場合によってはここにAの処理でしてしまった間違った...
B();
until(処理効果が出たときの条件式);//効果が出るまで
}
}
*明るさを測るプログラム [#q182f8f5]
このプログラムは光センサーをセンサー1に付ければ本体には特...
いろいろな物の表面で試すと楽しいです。え!?そんなの使わな...
使い方
-Runを押すと、その場の光センサーの値を音で表します。
-低い音の鳴った回数が10の位の数、短い音の鳴った回数が1の...
// 明るさを測るプログラム
// 作成者:山崎
// 作成日:2005-11-27
// 変更日:2005-11-28
// 変更点:%を使って簡単に書き換えました。
task main ()
{
SetSensor (SENSOR_1, SENSOR_LIGHT);
repeat ((SENSOR_1-SENSOR_1%10)/10) //10の位の数だけ低い...
{
PlaySound (SOUND_LOW_BEEP);
Wait (150);
}
Wait (200); //10の位の数を鳴らし終わると少し待ちます。
repeat (SENSOR_1%10) //1の位の数だけ短い音を鳴らします。
{
PlaySound (SOUND_CLICK);
Wait (100);
}
}
*&size(25){わかったこと}; [#g4c3f7a1]
-白と黒の明るさの値がとてもよくわかりました。やはり40が白...
白い部分は50,49,48,47など
黒い部分は33,31,30,27など
青い部分は27、黄色い部分は44、蛍光灯の真下は77、真っ暗な...
-真っ暗な部屋でも物にセンサーを近づけると普通の値、白47や...
-茶色は40前後の値が出るので、これが白と黒の中間の明るさみ...
*&size(25){疑問点}; [#qcfc550e]
-サブルーチンの中に別のサブルーチンがあるとエラーが出るみ...
-割り算の余りを返す命令などはないのか?(解決済)
**アドバイスなどありましたらこちらへ [#z8a29125]
-残念ながら NQC の仕様で、サブルーチンから他のサブルーチ...
-紙や線の濃さによって閾値を調整する必要がありますが、白と...
-白と黒の部分の明るさの値を調べて載せました。 -- [[山崎]]...
-割算の余りは『%』という演算子で得られます。(例) z = x % ...
-早速書き換えてみました。 -- [[山崎]] &new{2005-11-28 (月...
#comment
[[戻る>2005/C6/y0]]
[[C6のTOPへ>2005/C6]]
RIGHT:
tya&counter(today);
&counter(yesterday);
&counter(all);
//11月18より
ページ名: