Witam, jestem początkujący w kwestii programowania.
Napisałem program który ma , po wciśnięciu przycisku zmieniać diodę. Wciskam świeci czerwona, wciskam znowu świeci żółta ,wciskam trzeci raz to świeci zielona.
Będę chciał rozbudować ten program żeby zamiast zaświecających się diod zmieniały sie efekty świecenia (coś takiego jak w lampkach choinkowych).
Wiem ,że problem jest w miejscu kiedy wcisnę przycisk to wartość zmienia się na '1' i tam zostaje,zamiast przechodzić dalej . Nie wiem tylko jak się uporać żeby między "else if"
były jakieś funkcje sprawdzające czy funkcja 'opcja' się nie zmieniła.
Z góry dziękuje za pomoc.
Kod:
#include <avr/io.h>
#include <util/delay.h>
int opcja; //zmienna zapisująca numer opcji
int main (void)
{
DDRD |= (1<<PD0) | (1<<PD1) | (1<<PD2) ; //porty wyjściowe
DDRC &= ~(1<<PC5); //porty wejściowe
PORTC |= (1<<PD5);
_delay_ms(500);
while(1)
{
opcja = 0;
if( !(PINC &(1<<PC5)) ) //zmiana o 1 przy wciśnięciu
{
opcja++;
}
if(opcja == 1)
{
PORTD |= (1<<PD0);
}
else if(opcja == 2)
{
PORTD |= (1<<PD1);
}
else if(opcja == 3)
{
PORTD |= (1<<PD2);
}
}
}