Skocz do zawartości

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


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 to post
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 to post
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 to post
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 to post
Share on other sites
  • Treker zmienił tytuł na: Problem ze zrozumieniem działania programu (2 przyciski, dioda)
(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 to post
Share on other sites

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

Link to post
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 to post
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 to post
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 to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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