#include <avr/io.h>
#include <stdlib.h>
#include <string.h>
#include <util/delay.h>
#ifndef _BV
#define _BV(bit) (1<<(bit))
#endif
#ifndef sbi
#define sbi(reg,bit) reg |= (_BV(bit))
#endif
#ifndef cbi
#define cbi(reg,bit) reg &= ~(_BV(bit))
#endif
void led1(int led, int button);
void led2(int led, int button);
int main() {
// LED3-PB0, LED4-PB1, LED5-PB2 LED6-PB3, LED7-PB4, LED8-PB5
for (int i = PB0; i <= PB5; ++i)
{
sbi(DDRB, i);
}
cbi(DDRD, PD2); // Enkoder A
cbi(DDRD, PD3); // Enkoder B
sbi(PORTD, PD2);
sbi(PORTD, PD3);
bool pinA = bit_is_set(PIND, PD2);
bool pinB = bit_is_set(PIND, PD3);
int led[6] = {PB0, PB1, PB2, PB3, PB4, PB5};
int maxIndex = 5;
int index = 4;
int minIndex = 0;
sbi(PORTB, led[index]);
while (true)
{
if (bit_is_set(PIND, PD2))
{
_delay_ms(20);
if (bit_is_clear(PIND, PD2))
{
if (bit_is_set(PIND, PD3))
{
if (index < maxIndex)
{
cbi(PORTB, led[index]);
index++;
sbi(PORTB, led[index]);
}
}
if (bit_is_clear(PIND, PD3))
{
if (index > minIndex) {
cbi(PORTB, led[index]);
index--;
sbi(PORTB, led[index]);
}
}
}
pinA = bit_is_set(PIND, PD2);
pinB = bit_is_set(PIND, PD3);
}
}
}