#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
volatile int state = 0;
volatile int increm = 0;
byte show[8]={
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
};
byte ceasH[8][8] = {
{
B00000,
B00000,
B00100,
B00100,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B00010,
B00100,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00110,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B00010,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B00100,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B01000,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B01100,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B01000,
B00100,
B00000,
B00000,
B00000,
},
};
byte ceasM[8][8] = {
{
B00000,
B00100,
B00100,
B00100,
B00000,
B00000,
B00000,
},
{
B00000,
B00001,
B00010,
B00100,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00111,
B00000,
B00000,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B00010,
B00001,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B00100,
B00100,
B00000,
},
{
B00000,
B00000,
B00000,
B00100,
B01000,
B10000,
B00000,
},
{
B00000,
B00000,
B00000,
B11100,
B00000,
B00000,
B00000,
},
{
B00000,
B10000,
B01000,
B00100,
B00000,
B00000,
B00000,
},
};
ISR(INT0_vect)
{
//reset
state = 0;
}
//Rutina pentru tratarea intreruperii atasata la INT0
ISR(INT1_vect)
{
increm = increm == 1? 0: 1;
}
void setup() {
lcd.begin(16, 2);
}
// FuncŃia loop ramane nefolosita, puteti să o folositi pentru a extinde funcționalitatea
void loop()
{
state += increm;
state = state == 64? 0:state;
for(int i=0; i<7; i++){
show[i] = (byte)ceasM[state%8][i] | (byte)ceasH[state/8][i];
}
pinMode(21 ,INPUT);
pinMode(20, INPUT);
EIMSK |= (1 << INT0); //activam punctual intreruperea INT0
EIMSK |= (1 << INT1); //activam punctual intreruperea INT1
EICRA |= (1 << ISC01); //activam intreruperea 0 pentru front descrescător.
EICRA |= (1 << ISC11); //ca si mai sus, pentru intreruperea 1
sei(); //activam intreruperile la nivel global
lcd.createChar(1, show);
lcd.setCursor(1, 1);
lcd.write(1); // cand referiti caractere diferite de „0” nu mai este necesar cast-ul;
delay(1000);
}
Comments