ここから本文です

mbed初心者です。

adi********さん

2016/8/1513:00:01

mbed初心者です。

例えば、
while(1){
led=1;
wait=(2);
led=2;
wait=(2)
}
などの動作をしている間(whileの中が実行されている時)にボタンを押したら動作が止まるプログラムをつくりたいのですが、whileの外にそれを書くしか思いつきません。
なので、前述の動作をするプログラムをご教授お願いします。

補足ロボット
ロボティクス

閲覧数:
160
回答数:
2

違反報告

ベストアンサーに選ばれた回答

gar********さん

2016/8/1619:07:16

割り込みを使ってみれば良いかと思います。
ピン変化割り込みとか
参考になりそうなサイト
https://developer.mbed.org/users/okini3939/notebook/ref_jp/

質問した人からのコメント

2016/8/17 13:33:50

ありがとう!!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

qui********さん

2016/8/1513:57:09

思いついたのならその方法を試してみればいい、とは思いますけれど。

とりあえず、waitしている間は基本的には「何も出来なくなる」ので、2秒のwaitならそれを分解して例えば200回の0.01秒のwaitにしてみるとか。

while(1){
led=1;
for(int i=0;i<200;i++){
wait(0.01);
}
led=2;//本当にこうなの?
for(int i=0;i<200;i++){
wait(0.01);
}
}

そしたら、その0.01秒の繰り返しループの中でスイッチを調べてやればいいんじゃないかな。

while(1){
led=1;
for(int i=0;i<200;i++){
if(sw.read()==0){//スイッチが押されていたら
while(1);//動作停止
}
wait(0.01);
}
led=2;//本当にこうなの?
for(int i=0;i<200;i++){
if(sw.read()==0){//スイッチが押されていたら
while(1);//動作停止
}
wait(0.01);
}
}

もっと「かっこ良く」書く方法はいくらでもあるけれど、まずは泥臭い方法から。

いずれは割込みを使うとか、OSを使うとかいろいろ調べてみて下さいな。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる