kolejne warunki w void loop - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: kolejne warunki w void loop (/watek-kolejne-warunki-w-void-loop) |
kolejne warunki w void loop - divpp - 16-06-2020 Witam Wszystkich, Potrzebuje pomocy przy dopisaniu kolejnego warunku, gdzie go dopisać? Oczywiście w sekcji void loop() Jeżeli w kodzie chciałabym dołożyć kolejne przyciski to zostanie wywołany kolejny kod, gdzie go umieścić, np dla int przyciskTESTPin = 4; if(digitalRead(przyciskTESTPin) == HIGH) oraz to co chcę aby się wykonało lub coś wyłączyło. Gdzie w moim kodzie umieścić int ledCzerwonaPin = 12; int ledZoltaPin = 10; int ledZielonaPin = 8; int przyciskPin = 2; int licznik; int opoznienie1 = 7000; int opoznienie2 = 900; int opoznienie3 = 3500; int opoznienie4 = 100; void setup() { pinMode(ledCzerwonaPin, OUTPUT); pinMode(ledZoltaPin, OUTPUT); pinMode(ledZielonaPin, OUTPUT); pinMode(przyciskPin, INPUT); } void loop() { if(digitalRead(przyciskPin) == HIGH) { for(int licznik=0;;licznik=licznik+1) { digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); } } [url=https://forum.arduinopolska.pl/][/url] RE: kolejne warunki w void loop - Jarewa0606 - 16-06-2020 Między dolnymi klarmami tam gdzie się się kończy kod tego pierwszego warunku... RE: kolejne warunki w void loop - divpp - 16-06-2020 Jeżeli mam kilka takich , nieznacznie różniących się bloków kodu uruchamianych z różnych przycisków. Kolejne naciśnięcia innego przycisku działają tylko po zresetowaniu arduino. W jaki sposób programowo mogę zresetować arduino dodając po tym ifie, jeżeli jest naciśnięty przycisk to najpierw zresetuj. W jaki sposób zastosować tu przerwania? if(digitalRead(przyciskPin) == HIGH) { for(int licznik=0;;licznik=licznik+1) { digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); } } if(digitalRead(przycisKPin) == HIGH) { for(int licznik=0;;licznik=licznik+1) { digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); } } } RE: kolejne warunki w void loop - Jarewa0606 - 16-06-2020 A kurczak dopiero teraz zauważyłem masz funkcje for i ona blokuje. Po prostu program działa tak jak pisałeś jeszcze tyle tyle delay-ów.. Pozbądź się funkcji "for" czymś innym... i pozbądź się delay nie blokuj mikrokontrolera RE: kolejne warunki w void loop - divpp - 16-06-2020 w jaki sposób wstawić mogę np while, proszę pomóż mi RE: kolejne warunki w void loop - Jarewa0606 - 16-06-2020 nie zmienić na coś inne ale wywalić, ten for to pętla która nigdy się nie kończy również mogło by być for(; Zmień sposób myślenia utwórz zmienną "X" void loop() { if(digitalRead(przyciskPin) == HIGH){ x=1; } if(digitalRead(przyciskPin1) == HIGH){ x=2; } if(digitalRead(przyciskPin2) == HIGH){ x=3; } /// case albo if switch( x ) { case 1: digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); break; case 2: digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); break; case 3: digitalWrite(ledCzerwonaPin, HIGH); delay(opoznienie1); digitalWrite(ledCzerwonaPin, LOW); delay(opoznienie4); digitalWrite(ledZoltaPin, HIGH); delay(opoznienie2); digitalWrite(ledZoltaPin, LOW); delay(opoznienie4); digitalWrite(ledZielonaPin, HIGH); delay(opoznienie3); digitalWrite(ledZielonaPin, LOW); delay(opoznienie4); break; } } I zmień delay na millis... bo zmiany przycisku zauwazy dopiero jak bedzie przycisk nacisniety powyzej 12s |