Skocz do zawartości

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


Wojtek65

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

@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 😉

Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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..🙂

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.