Sterowanie włącz wyłącz na 2 kanały prośba o porade - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: "Projekt Arduino Polska" (https://forum.arduinopolska.pl/dzial-projekt-arduino-polska) +--- Dział: Zarys "Projektu Arduino Polska" (https://forum.arduinopolska.pl/dzial-zarys-projektu-arduino-polska) +--- Wątek: Sterowanie włącz wyłącz na 2 kanały prośba o porade (/watek-sterowanie-w%C5%82%C4%85cz-wy%C5%82%C4%85cz-na-2-kana%C5%82y-pro%C5%9Bba-o-porade) |
Sterowanie włącz wyłącz na 2 kanały prośba o porade - Jurex - 06-03-2019 Witam mam oto taki prosty program void setup() { pinMode(10, OUTPUT); //Dioda czerwona pinMode(9, OUTPUT); //Dioda żółta pinMode(8, OUTPUT); //Dioda zielona pinMode(11, OUTPUT); //dioda biala pinMode(7, INPUT_PULLUP); //Przycisk pinMode(6, INPUT_PULLUP); //przycisk2 digitalWrite(10, LOW); //Wyłączenie diod digitalWrite(9, LOW); digitalWrite(8, LOW); digitalWrite(11, LOW); } void loop() { digitalWrite(10, LOW); //Czerwona digitalWrite(11, LOW); //Czerwona digitalWrite(9, LOW); //Czerwona digitalWrite(8, LOW); //Czerwona delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde while (digitalRead(7) == HIGH) {} //Czekaj na wciśnięcie przycisku digitalWrite(11, HIGH); //Czerwona delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde while (digitalRead(7) == HIGH) {} //Czekaj na wciśnięcie przycisku } załącza i wyłącza 1 diode 1 tym samym przyciskiem Chciałbym do programu dodac 2 diode i 2 przycisk niezależnie załączane przypisac do 1 przycisku włącz wyłącz 1 diode do 2 przycisku włącz wyłącz 2 diode. Prosze o pomoc czego mi brakuje co mam dodac do programu by dodac 2gi przycisk do sterowania ?? Kombinowałem powielic program pozamieniac wyjscia ale zawsze jest jedna dioda zalezna od 2giej. Dodam tez taki program działa tylko nie podtrzymuje swiecenia diody jak dodac zeby dioda swieciała stale a nie mrugała i szło ją wyłączać ? ? void setup() { pinMode(10, OUTPUT); //Dioda czerwona pinMode(9, OUTPUT); //Dioda żółta pinMode(8, OUTPUT); //Dioda zielona pinMode(11, OUTPUT); //DIODA BIALA pinMode(7, INPUT_PULLUP); //Przycisk pinMode(6, INPUT_PULLUP); //P2 pinMode(5, INPUT_PULLUP); //P3 pinMode(4, INPUT_PULLUP); //P4 digitalWrite(10, LOW); //Wyłączenie diod digitalWrite(9, LOW); digitalWrite(8, LOW); digitalWrite(11, LOW); } void loop() { while (digitalRead(7) == LOW) { //Jeśli przycisk jest wciśnięty digitalWrite(11, HIGH); //Czerwona wyłącz delay(300); digitalWrite(11, LOW); //Czerwona włącz delay(300); } while (digitalRead(6) == LOW) { //Jeśli przycisk jest wciśnięty digitalWrite(10, HIGH); //Czerwona wyłącz delay(300); digitalWrite(10, LOW); //Czerwona włącz delay(300); } while (digitalRead(5) == LOW) { //Jeśli przycisk jest wciśnięty digitalWrite(9, HIGH); //Czerwona wyłącz delay(300); digitalWrite(9, LOW); //Czerwona włącz delay(300); } while (digitalRead(4) == LOW) { //Jeśli przycisk jest wciśnięty digitalWrite(8, HIGH); //Czerwona wyłącz delay(300); digitalWrite(8, LOW); //Czerwona włącz delay(300);} } RE: Sterowanie włącz wyłącz na 2 kanały prośba o porade - kaczakat - 06-03-2019 Używając delay możesz stworzyć tylko jedną linię czynności w programie następujących po sobie. Jak chcesz mieć namiastkę pracy równoległej to zapoznaj się z millis(). Każdą czynność uzależniasz wtedy od tego kiedy wydarzyła się poprzednia, program nie jest zatrzymywany w delay, a po prostu ignoruje czynności, których jeszcze nie powinien wykonać. Po kodzie widać jednak, że nie masz o tym pojęcia, zacznij więc kurs Arduino od początku: https://forbot.pl/blog/kursy. RE: Sterowanie włącz wyłącz na 2 kanały prośba o porade - tabazka - 16-05-2023 Czy ktos juz ci pomogl z tym projektem? RE: Sterowanie włącz wyłącz na 2 kanały prośba o porade - Irvin - 16-05-2023 Jaki projekt? To jest zakres kursu Arduino, jest link do kursu, to są postawy, siedzisz w kursie aż zrozumiesz, przerabiasz zagadnienia z kursu od góry do dołu, z prawej do lewej i potem na odwrót, a na koniec wszystko od nowa z millis. Idea millis jest bardzo prosta, zamiast zatrzymywać działanie programu na 300ms pomijasz wykonywanie danej czynności przez 300ms. Jak użyjesz kilka razy krótkich delay to kod będzie jakoś działał i to jest pokazywane w przykładowych programach robiących 1 czy 2 rzeczy, jak program zaczyna się rozbudowywać to tak się nie da, bo głównie będzie stał w delay, nawet średnio skomplikowany, a takie czasy zaczną trwać powyżej 10s i tyle musisz trzymać jakiś przycisk by jego wciśnięcie zostało zauważone. Z millis taki program sprawia wrażenie jakby działał na uC pracującym mln x szybciej, a to nie różnica MHz tylko programisty. Nie bierzesz się za budowę szopy, jak nie wiesz jak trzymać młotek i w którą stronę trzymać gwoździa. |