Skocz do zawartości

Dwa przyciski i 14 diod led i wyświetlacz


xirtt

Pomocna odpowiedź

Witam serdecznie Pana SOYERA

Mam sterownik zaprogramowany w 12 sekwencji, po 12 diod led każda, plus wyświetlacz. Kiedy naciskam przycisk wybieram odpowiednią sekwencje na wyświetlaczu. Każde naciśnięcie inna sekwencje , jak wybiorę sekwencje to od razu zaświeca się odpowiednia sekwencja diod led. Chciałem zrobić tak ,że kiedy zatrzymam się na jakiej sekwencji i puszcze przycisk, to dopiero po pięcie sekundach zwłoki zapaliła się ta sekwencja diod led którą wybrałem, ale jeżeli nacisnę przycisk przed upływem tych pięciu sekund , abym mógł dalej wybierać sekwencje na wyświetlaczu. Ustawiałem różne zwłoki ale zawsze blokowała mi przycisk na te pięć sekund . Czy mógłby ktoś mi pomóc . Robiłem różne zwłoki , ale nie mogę sobie z tym poradzić.  próbowałem z dwoma przyciskami, jednak muszą być dwa przyciski, to ułatwi obsługę. Jeden przycisk przesuwa w prawo meni drugi w lewo. Przesyłam moje wypociny, zobaczcie czy można to jakoś przerobić , żeby działało tak jak bym chciał.( a szczegóły w innym poście o podobnym tytule).

Proszę o pomoc.

 

Mam gorącą prośbę , czy mógłbym poczekać na odpowiedź BELFERKA, lub innej osoby która chciała by mi pomóc.

To forum , to nie jest kilka osób , które do tej pory pisały, (chociaż dziękuje im za to), jest ich setki......

Dlatego proszę i poczekajmy , myślę że znajdę pomoc..

Pozdrawiam 

Link do komentarza
Share on other sites

56 minut temu, xirtt napisał:

Przesyłam moje wypociny, zobaczcie czy można to jakoś przerobić , żeby działało tak jak bym chciał.( a szczegóły w innym poście o podobnym tytule).

@xirtt, zabrakło chyba Twojego programu - dodaj go za pomocą narzędzia kod dostępnego w edytorze.

Gorąca prośba to pozostałych osób, które brały udział w poprzedniej dyskusji - nie drążmy już tematu. Czasami na forach zdarza się ta, że niektóre tematy pozostają bez odpowiedzi - zdarza się, niestety taka jest specyfika for.

Link do komentarza
Share on other sites

Witam

Dziękuje za podpowiedź , faktycznie zapomniałem przesłać program który sam napisałem.

Przesyłam program (oczywiście napisałem na 5 sekwencji krótszy ) który naprawdę DZIAŁA.......DZIAŁA ......DZIAŁA...

Proszę o pomoc w udoskonaleniu i ewentualnej poprawy , lub o naukę......

Działa to tka

-1 powitanie

- 2 wybieram meni przyciskiem

-3 jeżeli zatrzymam się na meni  i drugi raz nacisnę przycisk i go przytrzymam w ciągu 3 sekun, to dopiero załącza się odpowiednia konfiguracja diod led 

- itd

PODAJE GOTOWCA KORZYSTAJCIE Z TEGO WGRAJCIE W ARDUIDO TO DZIAŁA.....TO DZIAŁA ........ TO DZIAŁA...........SPRAWCIE TO !!!!!!!!!!!!!!!!!!!!!!!!!!!!

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

void setup() 
{
  lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("     WITAM         ");
  lcd.setCursor(0,1);
  lcd.print("    Sterownik      ");
   lcd.setCursor(0,2);
  lcd.print("      diod         ");
   lcd.setCursor(0,3);
  lcd.print("      led          ");
  delay(25);
  
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  
  pinMode(A0, INPUT_PULLUP);
  
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}
 
void loop()
{
  while(digitalRead(A0) == HIGH); {}
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print( "   Program 1      ");
  lcd.setCursor(0,1);
  lcd.print("   Diody aktywne   ");
   lcd.setCursor(0,2);
  lcd.print("123456789 10 11 12 ");
   lcd.setCursor(0,3);
  lcd.print("  *       *        ");
  delay(3000);

  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == LOW) {
  delay(25); 
  
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }
  {  
  while(digitalRead(A0) == HIGH); {}
  lcd.backlight();
  lcd.setCursor(0,0);
   lcd.print("    Program 2      ");
  lcd.setCursor(0,1);
  lcd.print("   Diody aktywne    ");
   lcd.setCursor(0,2);
   lcd.print("123456789 10 11 12 "); 
  lcd.setCursor(0,3);
  lcd.print("   *                ");
   delay(3000);
  }  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == LOW) {
  delay(25);
  
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }
  {
  while(digitalRead(A0) == HIGH); {}
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Program 3      ");
  lcd.setCursor(0,1);
  lcd.print("   Diody aktywne   ");
   lcd.setCursor(0,2);
  lcd.print("123456789 10 11 12 ");
   lcd.setCursor(0,3);
  lcd.print("  * ***            ");
  delay(3000);
  }
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == LOW) {
  delay(25);
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13 , LOW);
  }
  {
     while(digitalRead(A0) == HIGH); {}
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Program 4       ");
  lcd.setCursor(0,1);
  lcd.print("   Diody aktywne    ");
   lcd.setCursor(0,2);
  lcd.print("123456789 10 11 12  ");
   lcd.setCursor(0,3);
  lcd.print("  * * *      *      ");
  delay(3000);
  }
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == LOW) {
  delay(25);
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13 , LOW);
  } 
  
  while(digitalRead(A0) == HIGH); {}
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Program 5       ");
  lcd.setCursor(0,1);
  lcd.print("   Diody aktywne    ");
   lcd.setCursor(0,2);
  lcd.print("123456789 10 11 12  ");
   lcd.setCursor(0,3);
  lcd.print("    *  *  *  *      ");
  delay(3000);
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == LOW) {
  delay(25);
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13 , LOW);
  }
  }  
  
    
  
  
  

 

Link do komentarza
Share on other sites

- No to na początek powiedz po co 2 x lcd.init()?

- ten delay(25) po wyświetleniu komunikatu powitalnego niczemu moim zdaniem nie służy - jest zbędny

- aż się prosi by sekwencję pinMode, a później digitalWrite zastąpić pętlą (dużo o tym ostatnio było)

Czyli Twoja funkcja setup mogłaby wyglądać tak:

void setup() 
{
  lcd.init();                      // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("     WITAM         ");
  lcd.setCursor(0,1);
  lcd.print("    Sterownik      ");
   lcd.setCursor(0,2);
  lcd.print("      diod         ");
   lcd.setCursor(0,3);
  lcd.print("      led          ");
  
  for(int x=2; x<=13; x++)
  {
    pinMode(x, OUTPUT);
    digitalWrite(x, LOW);
   }
  pinMode(A0, INPUT_PULLUP);		//1 przycisk pod A0
}

Na początek proponuję zrezygnować w pętli loop z wyświetlacza LCD (zaciemnia obraz), a pomyśleć nad "bardziej eleganckim" operowaniem na pinach wyjściowych. No i gdzie tu u Ciebie jest ten drugi przycisk?

Edytowano przez Belferek
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

Dziękuje Przyjacielu za odpowiedź i oczywiście za Cierpliwość.

- tyle mam porobionych tych wersji eksperymentalnych,  że to 2x lcd.init() jest bez sensu. Tak na marginesie,  jeśli chodzi o te nawiasy do czego tutaj służą i co tam można wpisać ( jeśli można jakiś przykład).

- te daley(25),  gdzieś przeczytałem , to zatrzymuje pętle na chwile zapobiegając błędom, podobno.

- dla mnie było prościej napisać w ten sposób , jest to proste i czytelne , a pętli nie rozumiałem do końca.

- tego mojego "potwora ledowego" zrobiłem na przełączniku 12 pozycyjnym , który miał pokazywać gałką napisy na obudowie konkretne sekwencje diod led. Nie chce go , chce wyświetlacz będzie fajny bajer.

- drugi przycisk był wpisany ,  zrezygnowałem z niego, ale teraz widzę , że musi być bo to ułatwi obsługę. Chodzi o przesuwanie sekwencji w razie pomyłki w lewo. Np. jak przeskoczyłem pozycje 5 na 6 , a chciałem pozycje 5, to musiałem przejść do końca i zacząć od pozycji 1 , aby dojść z powrotem do ominiętej pozycji 5. Przy drugim przycisku będę mógł wrócić, z pozycji 6 od razu na pozycję 5, itd....

- pomyślę o tych pinach

 

Link do komentarza
Share on other sites

Witam

- wyrzuciłem wyświetlacz który , podczepiony był pod przycisk 1

- dopisałem przycisk 2

- i zmniejszyłem funkcje do 5 diod i zapisałem je tak, aby po naciskaniu raz świeciła 1 dioda , drugi druga dioda itd...

- co zrobiłem przesyłam , czy oto chodziło?......

Ta pętla  for(int x=2; x<=13; x++).... chyba tutaj powinienem zmienić 13 na 6?

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

 LiquidCrystal_I2C lcd(0x27,20,4);
void setup() 
{
  lcd.init();                      // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("     WITAM         ");
  lcd.setCursor(0,1);
  lcd.print("    Sterownik      ");
   lcd.setCursor(0,2);
  lcd.print("      diod         ");
   lcd.setCursor(0,3);
  lcd.print("      led          ");
  
  for(int x=2; x<=13; x++)
  {
    pinMode(x, OUTPUT);
    digitalWrite(x, LOW);
   }
  pinMode(A0, INPUT_PULLUP);//1 przycisk pod A0
  pinMode(A1, INPUT_PULLUP);//2 przycisk pod A1
}

void loop()
{
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} 
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);//1
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {}
  
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);//2
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {}
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);//3
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {}
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);//4
  
  delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {}
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);//5
  }
 
    

 

Link do komentarza
Share on other sites

56 minut temu, xirtt napisał:

delay(200);//Zatrzymujemy program przed wejsciem do pętli na 1 sekunde

Nie na sekundę lecz na 200ms - zbędne, po co?

 

57 minut temu, xirtt napisał:

- dopisałem przycisk 2

Ale nigdzie w swoim programie nie odczytujesz jego stanu

 

58 minut temu, xirtt napisał:

Ta pętla  for(int x=2; x<=13; x++).... chyba tutaj powinienem zmienić 13 na 6?

Jeśli masz diody podpięte pod 2,3,4,5,6 to oczywiście tak.

Przeanalizuj przykłady z Arduino IDE w PLIK->PRZYKŁADY->DIGITAL->BUTTON i DEBOUNCE

Warto także zobaczyć (a może zainstalować) bibliotekę Bounce2 - SZKIC->DOŁĄCZ BIBLIOTEKĘ_>ZARZĄDZAJ BIBLIOTEKAMI

Z tymi przyciskami jest problem, że ... drgają.

Tu znajdziesz wyjaśnienie:

https://github.com/thomasfredericks/Bounce2

Po instalacji biblioteki znajdziesz w PLIK->PRZYKŁADY->BOUNCE2 fajny przykład bounce2buttons, który mam nadzieję pokaże Ci jak rozwiązać obsługę 2 przycisków. Więcej napiszę wieczorem.

 

Link do komentarza
Share on other sites

9 godzin temu, xirtt napisał:

tyle mam porobionych tych wersji eksperymentalnych,  że to 2x lcd.init() jest bez sensu. Tak na marginesie,  jeśli chodzi o te nawiasy do czego tutaj służą i co tam można wpisać ( jeśli można jakiś przykład). 

Jeżeli kiedykolwiek programowałeś (zakładam że tak) to pewnie wiesz jak wygląda metoda. W nawiasach podajesz argumenty które przekazujesz do metody. W tym wypadku nie przekazujesz żadnych argumentów do metody.

while (digitalRead(A0) == HIGH) {}
digitalWrite(2, HIGH);
digitalWrite(3, LOW); 
digitalWrite(4, LOW); 
digitalWrite(5, LOW); 
digitalWrite(6, LOW);//1

Po co jest ta pętla? Nie wykonuje żadnej instrukcji.
Chyba, że odwołuje się do poprzedniego kodu?
 

  pinMode(A0, INPUT_PULLUP);//1 przycisk pod A0
  pinMode(A1, INPUT_PULLUP);//2 przycisk pod A1

Zminimalizuj komentarze. Zaciemniają obraz.

  pinMode(ButtonChoice, INPUT_PULLUP);
  pinMode(ButtonAnother, INPUT_PULLUP);

Czy to nie jest czytelniejsze?

Edit:
Jeżeli nie będziesz trzymał przycisku to pętle się nigdy nie wykonają. Kod działa zbyt szybko żebyś trafił na konkretną pętle (testowałem na RPi), i nie metoda delay() nie zadziała. Ona przetrzyma ci program w konkretnym miejscu.

digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH);//5

digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);//5

Te bloki powtarzają się w kodzie. Sugeruje zrobienie z nich metody.

Edytowano przez Aiden_Pearce
Link do komentarza
Share on other sites

Witam .

Dziękuje ślicznie za odpowiedzi , fajne i konkretne.

Potrzebuje trochę czasu  na przetrawienie.

Muszę teraz trochę pokombinować, zobaczę co z tego wyjdzie.......

 

Link do komentarza
Share on other sites

25 minut temu, Aiden_Pearce napisał:

  pinMode(ButtonChoice, INPUT_PULLUP);
  pinMode(ButtonAnother, INPUT_PULLUP);

Czy to nie jest czytelniejsze?

Dla mnie i pewnie dla innych nie - no bo czymże jest ButtonChoice? Zapomniałeś Aiden_Pearce dodać, że wcześniej należałoby tę stałą zdefiniować, ale to tylko autorowi tego wątku zaciemni sprawę, gdyż źle założyłeś iż kiedykolwiek programował - dopiero próbuje. Co do komentarzy to są one wręcz pożądane! Oczywiście tam gdzie kod wykonuje praktycznie to samo można je sobie darować - komentarze są dla autora i po latach gdy wracasz do programu to ich brak może być pewnym problemem :-).

Edytowano przez Belferek
Link do komentarza
Share on other sites

Nie wiem do czego on wykorzystuje przyciski. Nazwy są przykładowe.
Jeżeli dopiero zaczyna programować to powinien zacząć od ... hello world? Ja nie jestem dobry w C i sam nie pamiętam jak się definiuje stałą. (No tak #define...)

Potrzeba komentarzy to znak źle napisanego kodu. Są one czasem potrzebne, ale czytając kod powinieneś zrozumieć o co chodzi bez komentarzy. Po to masz nazwy zmiennych.

Link do komentarza
Share on other sites

14 minut temu, Aiden_Pearce napisał:

Potrzeba komentarzy to znak źle napisanego kodu

No to zobaczymy jak napiszesz swój program z kilkoma tysiącami wierszy kodu i po dłuższym czasie spróbujesz do niego wrócić by coś zmienić. Wtedy będziesz się zastanawiał dlaczego taki algorytm w tym fragmencie programu zastosowałeś a nie inny. W amatorskich rozwiązaniach taki komentarz w pliku źródłowym to nierzadko jedyna dokumentacja programu, która jest Ci w stanie choć trochę przybliżyć przyjęte rozwiązanie.

Link do komentarza
Share on other sites

Jak każdą metodę nazwałeś Method1, Method2 itd... to masz rację. Komentarze są niezbędne...
Są miejsca w których są niezastąpione.

Ale w tym przypadku wprowadzają więcej zamieszania niż porządku.

Poza tym. Jeżeli nie jestem w stanie wrócić do kodu żeby coś zmienić, bo nie wiem o co w nim chodzi, to znaczy, że to nie jest Czysty Kod. To znaczy że muszę go uporządkować(napisać) od nowa. To jest zły kod.

Link do komentarza
Share on other sites

OK xirtt teraz pora na główną pętlę programu  loop(), a do tych nawiasów jeszcze dojdziemy. Jakikolwiek program byś nie pisał to najpierw musisz go przemyśleć, mieć na niego receptę, którą nazywamy algorytmem. Najogólniej rzecz ujmując chcesz by Twój program realizował 3 rzeczy:

1. Odczytywał dwa klawisze.

2. Odpowiednio sterował diodami LED.

3. Wyświetlał komunikaty na wyświetlaczu.

Zajmij się  rozwiązaniem tych kwestii punkt po punkcie.

Na początek proponuję obsługę przycisków. Wyrzuć wszystko ze swojej pętli loop(). Umieść w niej tylko program obsługi przycisków, który będzie różnie reagował na ich wciśnięcie. Bardzo przydaje się tutaj NARZĘDZIA - > MONITOR PORTU SZEREGOWEGO. Dzięki temu narzędziu możesz diagnozować swoje programy jak ja np. na tym filmie badam działanie biblioteki Bounce2 (o której wcześniej pisałem): zobacz film

 W tym celu na końcu funkcji setup() należy uruchomić port szeregowy w Arduino za pomocą np. Serial.begin(9600) by móc wysyłać przez port szeregowy do monitora informacje diagnostyczne np. Serial.println("Wciśnięto P1");

Postaraj się napisać taki kod, który będzie wyświetlał komunikat o wciśnięciu danego przycisku. Jak to zadziała powalczymy dalej.

Czyli Twoja funkcja setup() z uruchomionym portem szeregowym mogłaby wyglądać tak:

void setup() 
{
  lcd.init();                      // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("     WITAM         ");
  lcd.setCursor(0,1);
  lcd.print("    Sterownik      ");
   lcd.setCursor(0,2);
  lcd.print("      diod         ");
   lcd.setCursor(0,3);
  lcd.print("      led          ");
  
  for(int x=2; x<=6; x++)
  {
    pinMode(x, OUTPUT);
    digitalWrite(x, LOW);
   }
  pinMode(A0, INPUT_PULLUP);		//1 przycisk pod A0
  pinMode(A1, INPUT_PULLUP);		//2 przycisk pod A1
  
  Serial.begin(9600);
}

 

 

Edytowano przez Belferek
Link do komentarza
Share on other sites

Witam wszystkich serdecznie, a szczególnie Ciebie BELFEREK.

Chciałem na początku podzielić się swoimi myślami po przeczytaniu , tej krótkiej dyskusji.

Myślę sobie tak.

Ja zaczynam naukę programowania,moją wiedze na ten temat można porównać do  robaka, który porusza się po ziemi.

Wasza wiedza to jest niebo i kosmos, ja nie mam pojęcia o czym wy dyskutujecie( coś się tylko domyślam).

Tej waszej wiedzy nie jestem w stanie sobie nawet wyobrazić.

BELFEREK ma rację, żeby dotrzeć do robaka, który chodzi po ziemi, trzeba zejść z nieba i  zniżyć się do poziomu robaka,

( jakim ja teraz jestem ).

Wiem na pewno , jest to tak samo dla Ciebie BELFEREK ( jak i dla mnie) wielki wysiłek, żeby Twoje myśli z wyżyn kosmosu

przenieść na ziemię.

MAM PROŚBĘ  BELFEREK NIE PĘDZIMY TAK , proszę.....

A teraz do tematu.

- Zainstalowałem bibliotekę (Bounce2),  miałem (Bounce). Rozumie ,że (Bounce2) to jest nowsza biblioteka?

- Chciałbym żebyś mi napisał dlaczego to co napisałem w pierwszej części programu jest złe , przecież to działa i jest tak proste i czytelne , w porównaniu do tej pętli(for(int x=2; x<=6; x++), dlaczego jest ona taka ważna ?, przecież moje wypociny taż działają......

Pozdrawiam serdecznie.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

void setup() 
{
  lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("     WITAM         ");
  lcd.setCursor(0,1);
  lcd.print("    Sterownik      ");
   lcd.setCursor(0,2);
  lcd.print("      diod         ");
   lcd.setCursor(0,3);
  lcd.print("      led          ");
  delay(25);
  
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  
  pinMode(A0, INPUT_PULLUP);
  
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}

 

Link do komentarza
Share on other sites

Anonim
Ten temat został zamknięty.
×
×
  • 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.