Skocz do zawartości

Dwa przyciski i 14 diod led


xirtt

Pomocna odpowiedź

Dziękuje Przyjacielu "matural", za praktyczną i konkretną odpowiedź.

Niby jest wszystko ok, ale przycisk drugi nie działa.

Proszę Cię żuć okiem na to, co jest nie tak. 

Pozdrawiam Cię serdecznie 

Przesyłam fragment, jak to zrobiłem.......

void loop()
{
 
  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, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 
  
  int nr_diody=2;
  if(digitalRead(A1)==LOW) {}
  digitalWrite(nr_diody, HIGH);
  digitalWrite(nr_diody+1, LOW);
  nr_diody=nr_diody+1;

Link do komentarza
Share on other sites

12 minut temu, xirtt napisał:

Proszę Cię żuć okiem

O kur... kolega ma w oku zęby?

Tak przy okazji: miałeś zapoznać się z kursem, a nie wymyślać kolejne idiotyzmy. Bo na razie jesteś na etapie muchy, która

W niedzielę kąpała się w smole,
A w poniedziałek w rosole,
We wtorek - w czerwonym winie,
A znowu w środę - w czerninie,
A potem w czwartek - w bigosie,
A w piątek - w tatarskim sosie,
W sobotę - w soku z moreli...
Co miała z takich kąpieli?
Co miała? Zmartwienie miała,
Bo z brudu lepi się cała,
A na myśl jej nie przychodzi,
Żeby wykąpać się w wodzie.

 

Link do komentarza
Share on other sites

Chłopie, przyjacielu, zajrzałes chociaż do tego kursu???? Proszę odpowiedz. Twoje posty polegają na tym, że chcesz napisać wyraz tata, tylko nie wiesz w jakiej kolejności ułożyć litery, a także jakie tam są litery. Kolega napisał ci dokładnie co masz zrobić, tyle tylko, że ty nie znasz alfabetu. 

Z tym "żuceniem okiem" to już przegiąłeś. Możesz jeszcze, z ciekawości mojej, napisać ile masz lat?

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

Xirtt, naprawdę nikt tutaj nie robi Ci na złość. Ja również zaczynałem od zera, ale kursy Forbota, a później pomoc forumowiczów sprawiły, że co nieco już z arduino potrafię zrobić. Kursy są darmowe, podstaw można się nauczyć za free.

Tobie nie brakuje chęci tylko podstaw, jeśli kolega napisał, że postawienie nawiasów w ten sposób {} powoduje że instrukcja warunkowa robi NIC, a ty tego nie widzisz, to znaczy, że nie znasz najprostszych podstaw składni. Proszę przeczytaj kilka lekcji pietwszego kursu arduino, wróć tutaj I ZASKOCZ NAS, OK?

Link do komentarza
Share on other sites

@xirtt, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.
3 godziny temu, xirtt napisał:

Pozdrawiam Was serdecznie i dziękuje za odpowiedź.

Wszystkiego dobrego

Nie ma co się obrażać, bo nikt nie chce tutaj dla Ciebie źle. Wiele osób polecało Ci zajrzenie do kursu Arduino: Kurs podstaw Arduino – #0 – spis treści, wstęp. Podsyłam konkretny link, może wtedy się zainteresujesz tematem dokładniej. Niestety w programowaniu nie da się działać "na oślep". Można (i trzeba) kombinować, ale jakieś podstawy trzeba jednak najpierw przyswoić. Gwarantuję Ci, że więcej czasu poświęciłeś na pisanie postów w tym temacie niż zajęłoby Ci przyswojenie tych podstaw z kursu 😉

Link do komentarza
Share on other sites

W żadnym przypadku się nie pogniewałem. Nawet tak nie pomyślałem.

Proszę tylko o pomoc , mam 12, lub 14 ( mało istotne), diod led i dwa przyciski i w prawo przyciskiem przesuwa się dioda i świeci, a drugi przycisk nie przsuwa jej w lewo i tyle.

Dalej proszę o pomoc w tej sprawie.

Pozdrawia serdecznie.

Link do komentarza
Share on other sites

@xirtt rozumiem, ale jakiej pomocy oczekujesz? Masz jakieś konkretne pytanie czy liczysz na gotowy program? Problem ten można rozwiązać na wiele różnych sposobów. Przykładowy algorytm:

  1. Tworzysz zmienną, która zapamiętuje aktualnie wybraną pozycję/diodę.
  2. Po wciśnięciu przycisku nr 1 zwiększasz wartość tej zmiennej o jeden, a po wciśnięciu przycisku nr 2 zmniejszasz wartość zmiennej o 1. Dzięki temu w zmiennej zawsze masz informacje o numerze diody, która ma być włączona. 
  3. W pętli for gasisz wszystkie diody i włączasz tylko tę jedną, która ma się aktualnie świecić (informacja na podstawie informacje ze zmiennej z punktu 1).

Nie jest to najlepsze rozwiązanie, ale na początek powinno być dość łatwe w realizacji. Spróbuj napisać coś takiego i pokaż co Ci wyszło 😉

Link do komentarza
Share on other sites

Pozdrawiam serdecznie Cię Przyjacielu. Nigdy i na nikogo się nie gniewam .

Po prostu podchodzę  zawsze do wszystkiego i wszystkich z MIŁOŚCIĄ, czego wszystkim nam życzę. 

Dziękuje za odpowiedź. Potrzebuje gotowy program i na podstawie tego gotowca opis co, z czego i poco się bierze.

Jestem bardziej praktykiem niż teoretykiem , łatwiej mi zrozumieć ( jestem tępy to fakt). 

Dla tego potrzebuje pomocy.

Link do komentarza
Share on other sites

@xirtt, widzę, że masz zestaw do kursu Arduino (zarejestrowałeś go). Możesz napisać szczerze, czy chociaż wykonałeś kilka pierwszych lekcji z tego kursu i dotarłeś to zmiennych/pętli? Bez tego nie da rady dalej. Co z tego, że dostaniesz gotowca, jak później i tak nie będziesz mógł sam napisać czegoś podobnego. Po prostu nie mamy tu w zwyczaju dawać "gotowców", bo to jest mało edukacyjne. Chętnie pomogę Ci dojść do rozwiązania, ale chociaż spróbuj ruszyć ten "algorytm", który Ci opisałem wyżej i pokaż kilka linii kodu 😉

Link do komentarza
Share on other sites

Tak u was kupowałem.

Dwanaście diod , podłączyłem, dwa przyciski  i ostatnio dodałem wyświetlacz, który pokazuje kolejną diodę led która aktualnie się świeci, czyli "DIODA 1 , DIODA 2 itd.

To mi już dzieła, jak już pisałem wcześniej chcę , aby drugi przycisk przesuwał zapaloną diodę w linijce w  drugą stronę , czyli " DIODA 2, DIODA 1 itd.

Przesyłem moje wypociny.......

#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("    WELCOME TO!  ");
  lcd.setCursor(0,1);
  lcd.print("           ");
   lcd.setCursor(0,2);
  lcd.print("           ");
   lcd.setCursor(0,3);
  lcd.print("           ");
   delay(4000);
  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);
  pinMode(A1, 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()
{
 
  digitalWrite(2, HIGH);
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 1 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  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);

  
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 
  int nr_diody=2;
  if(digitalRead(A1)== HIGH) { 
  digitalWrite(nr_diody,LOW);
  digitalWrite(nr_diody+1,HIGH);}
  
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 2 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          "); 
  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);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 
 
  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 3 ");
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  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);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 
 
  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 4 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 5 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 

  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 6 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty 

  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 7 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty

  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 8 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty

  digitalWrite(2, LOW);
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 9 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty

  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, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 10 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty  

  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, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 11 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
  digitalWrite(13, LOW);
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty  

  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, HIGH);
   lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("  DIODA 12 ");
  lcd.setCursor(0,1);
  lcd.print("          ");
   lcd.setCursor(0,2);
  lcd.print("          ");
   lcd.setCursor(0,3);
  lcd.print("          ");
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(A0) == HIGH) {} //Jeśli przycisk jest wciśnięty  
}

 

Link do komentarza
Share on other sites

To może inaczej: podłącz dwie diody (czerwoną i zieloną) i dwa przyciski. Napisz prosty program, tak aby jeden przycisk zapalał diodę czerwoną i gasił zieloną, a drugi odwrotnie. Pochwal się wynikiem, to ruszymy dalej.

I zacznij wreszcie kurs !!!

Link do komentarza
Share on other sites

Dziękuje za odpowiedź.

To zrobiłem na podstawie kursu, i to działa tak jak chciałem . Tylko potrzebuje jak już pisałem żeby  ten drugi przycisk zadziałał.

Proszę o pomoc w poprawieniu tego programu , aby zadziałam ten drugi przycisk.( oczywiście próbuje dalej).

Pozdrawiam wszystkich serdecznie

Zrobiłem coś takiego i drugi przycisk ożył , tylko nie tak jak chciałem, brak mi koncepcji , proszę życzliwych o pomoc.....

 

 while (digitalRead(A1)== HIGH){
  digitalWrite(3,HIGH);
  digitalWrite(3-1,HIGH);
   }

Link do komentarza
Share on other sites

3 godziny temu, xirtt napisał:

Tak u was kupowałem.

Dziękuję doceniam, ale to naprawdę nie jest kluczowe. Sam zakup wiele nie zmienia, chodzi o to czy wykonałeś ćwiczenia z kursu 😉

1 godzinę temu, xirtt napisał:

To zrobiłem na podstawie kursu, i to działa tak jak chciałem . Tylko potrzebuje jak już pisałem żeby  ten drugi przycisk zadziałał.

Nie da się poprawić Twojego programu w sensowny sposób, aby działał też tak jak chcesz (tzn. w drugą stronę). Cytuję jedną z metod, którą możesz do tego wykorzystać:

4 godziny temu, Treker napisał:
  • Tworzysz zmienną, która zapamiętuje aktualnie wybraną pozycję/diodę.
  • Po wciśnięciu przycisku nr 1 zwiększasz wartość tej zmiennej o jeden, a po wciśnięciu przycisku nr 2 zmniejszasz wartość zmiennej o 1. Dzięki temu w zmiennej zawsze masz informacje o numerze diody, która ma być włączona. 
  • W pętli for gasisz wszystkie diody i włączasz tylko tę jedną, która ma się aktualnie świecić (informacja na podstawie informacje ze zmiennej z punktu 1).

Spróbuj napisać coś takiego i pokaż swój kod - tylko umieść go zgodnie z instrukcją (za pomocą narzędzia KOD). W poprzednim poście poprawiłem to za Ciebie, ale pamiętaj proszę, aby robić to na przyszłość samodzielnie (tak jak wszyscy inni członkowie naszej społeczności) 😉

Link do komentarza
Share on other sites

Gość
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.