Skocz do zawartości

Problem ze zrozumieniem działania programu (2 przyciski, dioda)


Pomocna odpowiedź

Napisano (edytowany)

Witajcie

Kontynuacja poprzeniego odcinka:((((

Płytka z poprzeniego mojego posta uzbrojona w dwa przyciski

Spłodziłem taki program

void setup()
{
  pinMode(8, OUTPUT); //Tryb pinu 8 ( wyjście )
  pinMode(7, INPUT_PULLUP); //Przycisk CZERWONY podłączony do pinu 7 ( wejście )
  pinMode(6, INPUT_PULLUP); //Przycisk CZARNY podłączony do pinu 6 ( wejście )
  digitalWrite(8, HIGH); //Stan pinu 8 ( Wysoki ) - przez urządzenie podłączone do pinu 8 ( diodę LED ) płynie prąd
}

void loop()
{
  if (digitalRead(7) == LOW) //Jeżeli przycisk 7 ( CZERWONY ) jest  WCIŚNIĘTY dioda LED sobie miga
  {
    digitalWrite(8, LOW);
    delay(300);
    digitalWrite(8, HIGH);
    delay(400);
  }
  if (digitalRead(7) == HIGH) //Jeżeli przycisk 7 ( CZERWONY ) jest ZWOLNIONY
  {
    digitalWrite(8, HIGH);//dioda LED świeci światłem ciągły
  }
if (digitalRead(6) == LOW) //Jeżeli przycisk 6 ( CZARNY ) jest  WCIŚNIĘTY dioda nie chce zgasnąć, zmienia się delikatnie jasność świecenia ( DLACZEGO??
{
  digitalWrite(8, LOW);
   }
  
}

za pomoc z góry dzięki

Edytowano przez Gieneq
Zachęcam do korzystania z bloku kodu programu

TAk dodam,że chyba trochę rozumiem że może to być związane z dwustanowością switcha czerwonego ( wycisnięty generuje stan H na diodzie ), a ze jest cały czas wyciśniety to może w jakiś sposób blokować dostęp do diody

(edytowany)

Możesz też ten fragment kodu:

 

if (digitalRead(7) == HIGH) //Jeżeli przycisk 7 ( CZERWONY ) jest ZWOLNIONY
  {
    digitalWrite(8, HIGH);//dioda LED świeci światłem ciągły
  }

zmienić na ten:

if (digitalRead(7) == HIGH) //Jeżeli przycisk 7 ( CZERWONY ) jest ZWOLNIONY
  {
    digitalWrite(8, HIGH);//dioda LED świeci światłem ciągły
   delay(150);
  }

Zobaczysz efekt i łatwiej zrozumiesz.

Edytowano przez SOYER

@Wojtek65 kody programów należy umieszczać za pomocą odpowiedniego narzędzia dostępnego w edytorze (przycisk "Wstaw kod programu"). Programy są wtedy prezentowane w czytelny sposób, a ich składania jest kolorowana. Proszę o poprawienie tego w pierwszym poście. Z góry dziękuję za zrozumienie i pomoc w utrzymaniu porządku 😉

(edytowany)
void setup()
{
  pinMode(8, OUTPUT); //Tryb pinu 8 ( wyjście )
  pinMode(7, INPUT_PULLUP); //Przycisk CZERWONY podłączony do pinu 7 ( wejście )
  pinMode(6, INPUT_PULLUP); //Przycisk CZARNY podłączony do pinu 6 ( wejście )
  digitalWrite(8, HIGH); //Stan pinu 8 ( Wysoki ) - przez urządzenie podłączone do pinu 8 ( diodę LED ) płynie prąd
}

void loop()
{
  if (digitalRead(7) == LOW) //Jeżeli przycisk 7 ( CZERWONY ) jest  WCIŚNIĘTY dioda LED sobie miga
  {
    digitalWrite(8, LOW);
    delay(300);
    digitalWrite(8, HIGH);
    delay(400);
  }
  if (digitalRead(7) == HIGH) //Jeżeli przycisk 7 ( CZERWONY ) jest ZWOLNIONY
  {
    digitalWrite(8, HIGH);//dioda LED świeci światłem ciągły
  }
if (digitalRead(6) == LOW) //Jeżeli przycisk 6 ( CZARNY ) jest  WCIŚNIĘTY dioda nie chce zgasnąć, zmienia się delikatnie jasność świecenia ( DLACZEGO??
{
  digitalWrite(8, LOW);
   }
  
}

za pomoc z góry dzięki

void setup()
{
  pinMode(8, OUTPUT); //Tryb pinu 8 ( wyjście )
  pinMode(7, INPUT_PULLUP); //Przycisk CZERWONY podłączony do pinu 7 ( wejście )
  pinMode(6, INPUT_PULLUP); //Przycisk CZARNY podłączony do pinu 6 ( wejście )
  digitalWrite(8, HIGH); //Stan pinu 8 ( Wysoki ) - przez urządzenie podłączone do pinu 8 ( diodę LED ) płynie prąd
}

void loop()
{
  if (digitalRead(7) == LOW) //Jeżeli przycisk 7 ( CZERWONY ) jest  WCIŚNIĘTY dioda LED sobie miga
  {
    digitalWrite(8, LOW);
    delay(300);
    digitalWrite(8, HIGH);
    delay(400);
  }
  if (digitalRead(7) == HIGH) //Jeżeli przycisk 7 ( CZERWONY ) jest ZWOLNIONY
  {
    digitalWrite(8, HIGH);//dioda LED świeci światłem ciągły
  }
if (digitalRead(6) == LOW) //Jeżeli przycisk 6 ( CZARNY ) jest  WCIŚNIĘTY dioda nie chce zgasnąć, zmienia się delikatnie jasność świecenia ( DLACZEGO??
{
  digitalWrite(8, LOW);
   }
  
}

za pomoc z góry dzięki

 

Edytowano przez Gieneq

Ponieważ równocześnie wykonuje się warunek dla pinu 7 więc dioda mruga z dużą szybkością co widzisz jako delikatne świecenie 

(edytowany)

Panie bo jak guzik7 jest nie wcisniety to warunek jest spelniony i dioda zapalona..jak guzik6 wcisniety to dioda ma zgasnac...i w rzeczywistosci tak sie dzieje...tylko strasznie szybko i efekt jakby dioda swiecila caly czas...if wykonuje sie tylko raz i kod przechodzi dalej...

Mozesz tak dopisac i powinno byc to co chcesz...

if (digitalRead(6) == LOW) //Jeżeli przycisk 6 ( CZARNY ) jest  WCIŚNIĘTY dioda nie chce zgasnąć, zmienia się delikatnie jasność świecenia ( DLACZEGO??
{
  digitalWrite(8, LOW);
  delay(50);  //dopisz delay!
   }

 

Edytowano przez farmaceuta
  • Lubię! 1

Podziękował wszystkim KOLEGOM dotarło do mojego pustego łba, że void loop to pętla, żę dwa ostanie if-y wykonują się w kółko bardzo, ale to bardzo szybko co sprawia wrażenie, że dioda nie gaśnie i  że funkcję przycisku 6 można zrealizować kilkoma metodami programowymi zarówno wenątrz void loopa jak i wykonując skok poza pętlę void loopa

 

podziękował serdecznie

1 minutę temu, Wojtek65 napisał:

można zrealizować kilkoma metodami programowymi zarówno wenątrz void loopa jak i wykonując skok poza pętlę void loopa

Zebys wyszedl poza loop to musisz stworzyc osobna funkcje...i podczas jej wywolania do niej sie dostajesz...narazie sie tym nie przejmuj..a doszlifuj podstawowe dzialanie if/for/while etc...wtedy unikniesz wielu "dziwnych" problemow w przyszlosci..🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...