Skocz do zawartości

Nie pamieta stanu pinów po zaniku zasilania !!


Pomocna odpowiedź

Napisano

Witam,
mam na imię Leszek i jestem początkującym w temacie Arduino.

Udało mi się skompilować kod na załączanie 3 przekaźników (w kodzie oznaczone jako led) przez dwa włączniki.

Generalnie pierwszy 1 włącznik załącza dwa przekaźniki (1 wciśniecie HIGH i LOW, 2 wcisnięcia dodaje drugi czyli HIGH i HIGH, 3 wciśniecie wyłącza wszystkie LOW i LOW)

2 włącznik jeden przekaźnik i jedną kombinację ( 1 wciśniecie HIGH, 2 wciśniecie LOW i 3 wciśnięcie steruje pierwszym podwójnym przekaźnikiem w kombinacji LOW i HIGH bo nie chciałem na pierwszym robić aż 4 naciśnięć.

W sumie wszystko działa tylko jest jeden ból jak wyłączę zasilanie i je przywrócę Arduino nie pamięta stanu na swoich wyjściach 2,3,4.

Pomóżcie - nie wiem czy to duży czy mały problem.

Wklejam kod:

[

const int led_r=2;// przekaźnik czerwony

const int led_y=3; //przekaźnik żółty

const int led_g=4; //Przekaźnik zielony

const int ButtonPin=7;// stan przycisku 1

const int ButtonPin1=8;//stan przycisku 2

int licznik=0;//liczba naciśnięć przycisku 1

int licznik1=0;//liczba naciśnięć przycisku 2

int buttonState=0;

int buttonState1=0;

void setup()

{

pinMode(led_r,OUTPUT);

pinMode(led_y,OUTPUT);

pinMode(led_g,OUTPUT);

pinMode(ButtonPin,INPUT_PULLUP);

pinMode(ButtonPin1,INPUT_PULLUP);

}

void loop()

{

buttonState=digitalRead(ButtonPin);// stan przycisku zalaczony lub wylaczony

// jesli stan przycisku zmieni sie z wysokiego na niski załącz przekaźnik zółty lub zielony

if(buttonState==0)

{

licznik++;

}

//jesli nacisnieto 1 raz

if(licznik==1)

{

digitalWrite(led_y,HIGH);

digitalWrite(led_g,LOW);

delay(500);// czas odczekania na drgania styków

}

if(licznik==2)

{

digitalWrite(led_y,HIGH);

digitalWrite(led_g,HIGH);

delay(500);

}

if(licznik==3)

{

digitalWrite(led_y,LOW);

digitalWrite(led_g,LOW);

delay(500);

licznik=0;

}

else

buttonState1=digitalRead(ButtonPin1);// stan przycisku zalaczony lub wylaczony

// jesli stan przycisku zmieni sie z wysokiego na niski załącz przekaźnik czerwony lub kombinację zaległą z powyższego zółty LOW i zlelony HIGH

if(buttonState1==0)

{

licznik1++;

}

//jesli nacisnieto 1 raz

if(licznik1==1)

{

digitalWrite(led_r,HIGH);

delay(500);// czas odczekania na drgania styków

}

if(licznik1==2)

{

digitalWrite(led_r,LOW);

delay(500);

}

if(licznik1==3)

{

digitalWrite(led_y,LOW);

digitalWrite(led_g,HIGH);

delay(500);

licznik1=0;

}

}

]

__________

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.

Jeżeli chcesz zapamiętać to musisz zapisać stany np. w pamięci flash. Bo standardowo zmienne są w pamięci RAM - ulotnej. Po resecie to normalne.

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