• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie włącz wyłącz na 2 kanały prośba o porade
#1
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);}

}
 
Odpowiedź
#2
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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości