悩んでいます。下記の内容の対応はどの様にすれば解決するのでしょうか回答をお待ちします。
Arduinoのディジタル入力(PIN12:プルアップ)が、HIGHからLOWになればaという関数(a())に飛ぶように
作成しています。
このa()内では、for文で回数が多く、且つ1ループごとにdelay(100);が有るので1ループごとの時間が掛るため
デジタル入力PIN12が、HIGHに変っているのに戻ってくるのに時間がかかります。
実際は、デジタル入力はPin8~Pin12、デジタル制御(出力)をPin0~Pin7まで同様な使用方法をしています。
ループしている中でも即関数を抜け出る方法があるでしょうか。
While文、for文内にif(PIN12==LOW)等でbreak;を使いましたが解決していません。(入れる場所が適切でないのかも知れません)
よろしくお願いいたします。
###該当のソースコード
Win10PCで、Arduino1.8.1を使用、ターゲットはArduinoUNOです。
void loop() {
Vala = digitalRead(digitalPin1); // (HIGH:停止/LOW:演出)
Valb = digitalRead(digitalPin2); // (HIGH:停止/LOW:演出)
Valc = digitalRead(digitalPin3); // (HIGH:停止/LOW:演出)
Vald = digitalRead(digitalPin4); // (HIGH:停止/LOW:演出)
if(Vala == HIGH){ // 演出停止
}else{
RyuseiKIIRO(); // 黄色
}
if(Valb == HIGH){ // 演出停止
}else{
RyuseiAO(); // 青色
}
if(Valc == HIGH){ // 演出停止
}else{
RyuseiORENJI(); // オレンジ
}
if(Vald == HIGH){ // 演出停止
}else{
RyuseiKIIRO_SLO(); // 黄色
}
}
//**** 黄色***********************************
void RyuseiKIIRO_SLO(){
for (int q=0; q < 17; q++) {
for (int i=0; i < strip1.numPixels(); i=i+17) {
strip1.setPixelColor(i+q-1, strip1.Color(50,38,0));
strip2.setPixelColor(i+q-1, strip2.Color(5,35,0));
strip3.setPixelColor(i+q-1, strip3.Color(50,35,0));
strip1.setPixelColor(i+q-2, strip1.Color(50,38,0));
strip2.setPixelColor(i+q-2, strip2.Color(50,35,0));
strip3.setPixelColor(i+q-2, strip3.Color(50,35,0));
strip1.setPixelColor(i+q-3, strip1.Color(20,14,0));
strip2.setPixelColor(i+q-3, strip2.Color(One,110,0));
strip3.setPixelColor(i+q-3, strip3.Color(One,110,0));
strip1.setPixelColor(i+q-4, strip1.Color(13,10,0));
strip2.setPixelColor(i+q-4, strip2.Color(two,70,0));
strip3.setPixelColor(i+q-4, strip3.Color(two,70,0));
strip1.setPixelColor(i+q-5, strip1.Color(10,8,0));
strip2.setPixelColor(i+q-5, strip2.Color(three,60,0));
strip3.setPixelColor(i+q-5, strip3.Color(three,60,0));
strip1.setPixelColor(i+q-6, strip1.Color(4,4,0));
strip2.setPixelColor(i+q-6, strip2.Color(four,45,0));
strip3.setPixelColor(i+q-6, strip3.Color(four,45,0));
strip1.setPixelColor(i+q-7, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-7, strip2.Color(five,25,0));
strip3.setPixelColor(i+q-7, strip3.Color(five,25,0));
strip1.setPixelColor(i+q-8, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-8, strip2.Color(six,15,0));
strip3.setPixelColor(i+q-8, strip3.Color(six,15,0));
strip1.setPixelColor(i+q-9, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-9, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-9, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-10, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-10, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-10, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-11, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-11, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-11, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-12, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-12, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-12, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-13, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-13, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-13, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-14, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-14, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-14, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-15, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-15, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-15, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-16, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-16, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-16, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-17, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-17, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-17, strip3.Color(seven,8,0));
}
strip1.show();
strip2.show();
strip3.show();
delay(500);
}
}
###試したこと
//**** 黄色流星流れ***********************************
void RyuseiKIIRO_SLO(){
while(!Vald){
for (int q=0; q < 17; q++) {
while(!Vald){
for (int i=0; i < strip1.numPixels(); i=i+17) {
strip1.setPixelColor(i+q-1, strip1.Color(50,38,0));
strip2.setPixelColor(i+q-1, strip2.Color(5,35,0));
strip3.setPixelColor(i+q-1, strip3.Color(50,35,0));
strip1.setPixelColor(i+q-2, strip1.Color(50,38,0));
strip2.setPixelColor(i+q-2, strip2.Color(50,35,0));
strip3.setPixelColor(i+q-2, strip3.Color(50,35,0));
strip1.setPixelColor(i+q-3, strip1.Color(20,14,0));
strip2.setPixelColor(i+q-3, strip2.Color(One,110,0));
strip3.setPixelColor(i+q-3, strip3.Color(One,110,0));
strip1.setPixelColor(i+q-4, strip1.Color(13,10,0));
strip2.setPixelColor(i+q-4, strip2.Color(two,70,0));
strip3.setPixelColor(i+q-4, strip3.Color(two,70,0));
strip1.setPixelColor(i+q-5, strip1.Color(10,8,0));
strip2.setPixelColor(i+q-5, strip2.Color(three,60,0));
strip3.setPixelColor(i+q-5, strip3.Color(three,60,0));
strip1.setPixelColor(i+q-6, strip1.Color(4,4,0));
strip2.setPixelColor(i+q-6, strip2.Color(four,45,0));
strip3.setPixelColor(i+q-6, strip3.Color(four,45,0));
strip1.setPixelColor(i+q-7, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-7, strip2.Color(five,25,0));
strip3.setPixelColor(i+q-7, strip3.Color(five,25,0));
strip1.setPixelColor(i+q-8, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-8, strip2.Color(six,15,0));
strip3.setPixelColor(i+q-8, strip3.Color(six,15,0));
strip1.setPixelColor(i+q-9, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-9, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-9, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-10, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-10, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-10, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-11, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-11, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-11, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-12, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-12, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-12, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-13, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-13, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-13, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-14, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-14, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-14, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-15, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-15, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-15, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-16, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-16, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-16, strip3.Color(seven,8,0));
strip1.setPixelColor(i+q-17, strip1.Color(1,1,0));
strip2.setPixelColor(i+q-17, strip2.Color(seven,8,0));
strip3.setPixelColor(i+q-17, strip3.Color(seven,8,0));
}
strip1.show();
strip2.show();
strip3.show();
delay(500);
}
}
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/22 05:36
2017/12/22 05:46
2017/12/22 06:08 編集
2017/12/22 06:12
2017/12/22 08:17
2017/12/22 08:21