Skocz do zawartości

Diody Zapalanie i Gaszenie


Pomocna odpowiedź

Napisano

Witam Serdecznie

Jestem tutaj nowy więc proszę o wyrozumiałość

Stałem się posiadaczem ARDUINO UNO fajnie

ale teraz chciałem zrobic taki ukladzi mianowicie ,

Mam dwa przyciski sw1 i sw2

pierwszym chce rozpoczac program który zapali mi na jakisz okreslony czas jedna diode nastepnie po tym czasie dioda zgasnie i zapali sie nastepna i po okreslonym czasie zgasnie trzecia dioda zapali sie gdy zgasnie druga lecz bedzie swiecila caly czas , w momencie gdy nacisne sw2 dioda trzecia po jakims trzasie zgasnie i zapali sie druga na jakis czas po tym czasie gdy druga zgasnie zapali sie pierwsza i po jakims czasie zgasnie i tak ogolnie mialby wygladac taki cykl

troszke moze zamieszalem za co przepraszam ale prosze o pomoc za co z gory serdecznie dziekuje

Pozdrawiam

Darek

Witajcie

Wiec tak poczytalem troche to co polecaliscie czyli kurs noi napisalem taki programik

czy mozecie jeszcze powiedziec co zrobilem zle pod pinem 4 mam swich wystko gra jak nalezy gdy przycisne przycisk pod pinem 7 zaczyna sie odliczanie diod do konica i stop tak mialo byc ale teraz co robie zle ze gdy nacisne przycisk pod pin 4 nie chce wracac w odwrotnej kolejnosci

Prosze o pomoc jesli to mozliwe bo czytam czytam i narazie nic nie kumam

Pozdrawiam Dziekuje

kodzik

void setup() {

pinMode(13, OUTPUT); //Dioda czerwona

pinMode(12, OUTPUT); //Dioda żółta

pinMode(11, OUTPUT); //Dioda zielona

pinMode(10, OUTPUT); //Dioda czerwona

pinMode(9, OUTPUT); //Dioda żółta

pinMode(8, OUTPUT); //Dioda zielona

pinMode(6, OUTPUT); //Dioda czerwona

pinMode(5, OUTPUT); //Dioda żółta

pinMode(7, INPUT_PULLUP); //Przycisk

pinMode(4, INPUT_PULLUP);

digitalWrite(13, LOW); //Wyłączenie diod

digitalWrite(12, LOW);

digitalWrite(11, LOW);

digitalWrite(10, LOW); //Wyłączenie diod

digitalWrite(9, LOW);

digitalWrite(8, LOW);

digitalWrite(6, LOW); //Wyłączenie diod

digitalWrite(5, LOW);

}

void loop() {

while (digitalRead(7) == LOW) { //Jeśli przycisk jest wciśnięty

digitalWrite(13, HIGH); //Czerwona wyłącz

delay(2000);

digitalWrite(13, LOW); //Czerwona włącz

delay(2000);

digitalWrite(12, HIGH);

delay(1500);

digitalWrite(12, LOW);

delay(1500);

digitalWrite(11, HIGH);

delay(2300);

digitalWrite(11, LOW);

delay(2300);

digitalWrite(10, HIGH); //Czerwona wyłącz

delay(1400);

digitalWrite(10, LOW); //Czerwona włącz

delay(1400);

digitalWrite(9, HIGH);

delay(1200);

digitalWrite(9, LOW);

delay(1200);

digitalWrite(8, HIGH);

delay(2300);

digitalWrite(8, LOW);

delay(2500);

digitalWrite(6, HIGH);

delay(2500);

digitalWrite(6, LOW);

delay(2000);

digitalWrite(5, LOW);

delay(1000);

digitalWrite(5, HIGH);

while (digitalRead(4) == LOW) { //Jeśli przycisk jest wciśnięty

digitalWrite(6, HIGH); //Czerwona wyłącz

delay(2000);

digitalWrite(6, LOW); //Czerwona włącz

delay(2000);

digitalWrite(8, HIGH);

delay(1500);

digitalWrite(8, LOW);

delay(1500);

digitalWrite(9, HIGH);

delay(2300);

digitalWrite(9, LOW);

delay(2300);

digitalWrite(10, HIGH); //Czerwona wyłącz

delay(1400);

digitalWrite(10, LOW); //Czerwona włącz

delay(1400);

digitalWrite(11, HIGH);

delay(1200);

digitalWrite(11, LOW);

delay(1200);

digitalWrite(12, HIGH);

delay(2300);

digitalWrite(12, LOW);

delay(2500);

digitalWrite(13, HIGH);

delay(2500);

digitalWrite(13, LOW);

delay(2000);

digitalWrite(5, LOW);

delay(1000);

digitalWrite(5, HIGH);

}

}

}

__________

Komentarz dodany przez: Treker

Kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu składania programów jest automatycznie kolorowana, a wtedy wszystkim znacznie łatwiej analizować wklejone programy. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum.

darex120, umieszczaj kod programu w miejscu na niego przeznaczonym


oraz pisz bardziej po polsku, bo trudno odczytać co napisałeś, a nikt chyba nie chce się domyślać co autor miał na myśli.
Co do programu wszystko dobrze. Jedynie dioda nr 5 u ciebie powinna być na początku zamiast na końcu. Diody mają "wracać", więc muszą być w odpowiedniej kolejności.
Ja zrobiłem taki układ z trzema diodami i działa.
void setup() {
 pinMode(8,OUTPUT);//Dioda żółta jako wyjście
 pinMode(9,OUTPUT);//Dioda zielona jako wyjście
 pinMode(10,OUTPUT);//Dioda czerwona jako wyjście
 pinMode(6,INPUT_PULLUP);//Przycisk 1
 pinMode(7,INPUT_PULLUP);//Przycisk 2

 digitalWrite(8,LOW);
 digitalWrite(9,LOW);
 digitalWrite(10,LOW);
}

void loop() {
 digitalWrite(8,LOW);
 digitalWrite(9,LOW);
 digitalWrite(10,LOW);

 while(digitalRead(6)== LOW){ //jeśli przycisk 1 wciśnięty
   for(int i=0;i<1;i++){ //Wykonanie jeden raz
   digitalWrite(10,HIGH);//Dioda czerwona świeci
   digitalWrite(9,LOW);
   digitalWrite(8,LOW);
   delay(1000);

   digitalWrite(10,LOW);
   digitalWrite(9,HIGH);//Dioda zielona świeci
   digitalWrite(8,LOW);
   delay(1000);

   digitalWrite(10,LOW);
   digitalWrite(9,LOW);
   digitalWrite(8,HIGH);//Dioda żółta świeci
   delay(1000);
 }
 }
 while(digitalRead(7)== LOW){ //jeśli przycisk 2 wciśnięty
   for(int i=0;i<1;i++){ //Wykonanie jeden raz
   digitalWrite(10,LOW);
   digitalWrite(9,LOW);
   digitalWrite(8,HIGH);//Dioda żółta świeci
   delay(1000);

   digitalWrite(10,LOW);
   digitalWrite(9,HIGH);//Dioda zielona świeci
   digitalWrite(8,LOW);
   delay(1000);

   digitalWrite(10,HIGH);//Dioda czerwona świeci
   digitalWrite(9,LOW);
   digitalWrite(8,LOW);
   delay(1000);
 }
 }
}

Poza tym polecam ci resztę lekcji kursu forbota. Jeśli czegoś nie umiesz, poszukaj najpierw tam, zamiast pisać tutaj. Jeśli zrobisz lekcje i połączysz wszystkie układy, które tam są przerabiane, to na pewno nie będziesz miał problemu, żeby zrobić taki układ samemu.

Pozdrawiam

Przepraszam za moje pisanie

U mnie niestety nie dziala dziala tylko na jednym przycisku a na drugim nie , czy to moze byc powod ze przy programowaniu wyswietla mi taki blad

Szkic używa 1368 bajtów (4%) pamięci programu. Maksimum to 32256 bajtów.

Zmienne globalne używają 9 bajtów (0%) pamięci dynamicznej, pozostawiając 2039 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.

Błędna biblioteka znaleziona w C:\Users\TOSHIBA\Documents\Arduino\libraries\pilot: C:\Users\TOSHIBA\Documents\Arduino\libraries\pilot

czy to moze byc powodem ze nie dziala

Raczej nie. Ten komunikat zawsze wyskakuje. Informuje on o rozmiarze twojego programu. 😉

A ta błędna biblioteka to jakiś błąd przy zapisaniu lub kompilacji. Jakiś folder od twojego programu....

Na pewno zostawiłeś ten sam kod?

Dziekuje za pomoc powodem byl przewod laczacy

pozdrawiam

[ Dodano: 24-01-2018, 22:27 ]

Mam jeszcze pytanko

Szukam internet i fora ale nie moge nigdzie znalezc

mam w tym programie w/w dwa cykle jeden otwierajacy drugi zamykajacy , i teraz jesli wlacze jeden cykl wlacze i on sie zakonczy ale na ktoryms pinie bedzie jescze stan wysoki do momentu kiedy nie naczisne cyklu zamykania to czy w czasie trwania danego cyklu maga sie wlaczac czasowo co 5 minut jakies piny i czy to nie bedzie ingerowalo w tryb zamkniecia nie wiem programowanie rozpoczynam caly czas czytam i czytam ucze sie ale nic na ten temat nie moge znalezc

moze pisze nie scisle ale prosze o wyrozumialosc

dziekuje i pozdrawiam

Bardzo chaotycznie i skomplikowanie to napisałeś. 😐 Nie wiem czy o to ci dokładnie chodzi.

Jeden cykl nie przeszkadza drugiemu. Jeśli wciśniesz jeden przycisk następują czynności, które po jego wciśnięciu mają się wykonać. To samo po wciśnięciu drugiego. To jest chyba oczywiste. Piny "same" się nie włączają.

dokladnie tak , nie wiem jak wstawic w program jakies czasowki aby wlaczaly sie co jakis czas lecz jesli nacisne przycisk zamknij to wszystko sie pozamyka

napisze to moze tak

bedzie to do zlobka

urzadzenie jak nacisne przycisk bedzie zalaczal urzadzenia w okreslonych odstepach czasu , jesli dojdzie do silnika to zalaczy ten silnik i go nie bedzie wylaczal to juz mam chodzi mi o to aby co jakis czas zalaczal urzadzenie co np 5 minut ale nie wylaczal silnika i nie bedzie to przeszkadzalo gdy nacisne zamknij wtedy wszystko sie pozakancza lacznie z silnikiem

czy teraz bardziej to wytlumaczylem

darex120, nie wiem czy dobrze rozumiem. Chcesz podłączyć dodatkowo czasówkę (przekaźnik), bo to by się zgadzało z tym co piszesz? Czy tą czasówką jest coś innego?

Jak mówisz, że to co robisz, ma służyć do czegoś, to podaj jakiś schemat, elementy i rozwiń temat bardziej.

nie nie przekaznik , w trakcie trwania pierwszego cyklu ma np. zamigac dioda raz jedna raz druga co 5 , 10 minut , ale w kazdym momecie mge wcisnac zamknij

To najlepiej dodaj trzeci przycisk, który wyłącza wszystko. 😃

Możesz też poeksperymentować z warunkami w programie Arduino, w zależności co jaki czas chcesz migać następnymi diodami. Chociaż szczerze ja dodałbym tu przekaźnik, czyli czasówkę i problem z czasem miałbyś rozwiązany. Podłączasz taki przekaźnik do Arduino, o ile nie pobierze za dużego prądu i sterujesz czasem załączania - tak jak napisałeś 5, 10 minut.

Tu masz zdjęcie takiej czasówki. Jest dość droga, no ale ... 😃

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