#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
#ifndef tbi
#define tbi(reg, bit) reg ^= (_BV(bit))
#endif
volatile int licznik=3;
volatile int x=0;
void setup(){
DDRD=0xFF;
DDRB=0xFF;
cbi(DDRD,PD2);
cbi(DDRD,PD3);
sbi(PORTD,PD2);
sbi(PORTD,PD3);
attachInterrupt(2,obslugaISR,LOW);
}
void loop(){
digitalWrite((4),HIGH);
sbi(PORTD,PD6);
if(x==1){
digitalWrite((licznik+4),HIGH);
digitalWrite((licznik+3),HIGH);
x=0;
}
if(x==1){
digitalWrite((licznik+4),HIGH);
digitalWrite((licznik+5),HIGH);
x=0;
}
}
void obslugaISR(){
if (digitalRead(3)==HIGH && licznik<7){
licznik++; x=-1;
}
if (digitalRead(3) == LOW && licznik>0){
licznik--; x=1;
}
}