#include "avr/interrupt.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
volatile int buttonVariable;
void setup(void)
{
lcd.begin(16, 2);
lcd.print("Incepe experimentul");
delay(1000);
pinMode(21 ,INPUT_PULLUP); //Vezi ca aici daca nu setezi pinii corespunzatoare butoanelor sa fie INPUT_PULLUP, pot sa ia valori
pinMode(20, INPUT_PULLUP); //aiurea la inceput si sa considere ca ceva buton e apasat.
// digitalWrite(20, HIGH); //Daca nu setezi pinii sa fie INPUT_PULLUP, trebuie sa ii setezi tu sa te asiguri ca au valoarea HIGH, adica nu sunt apasati.
// digitalWrite(21, HIGH);
pinMode(13, OUTPUT); // Set pin 13 as output
digitalWrite(13, HIGH); // Lit up the onboard LED
delay(1000);
EIMSK |= (1 << INT0); // Activate INT0
EIMSK |= (1 << INT1); // Activate INT1
EICRA |= (1 << ISC01); // Specify INT0 triggering
//behavior: falling edge of the
EICRA |= (1 << ISC11); // Same behavior for INT1
sei(); // Global interrupt system activation
digitalWrite(13, LOW); // Turn off the onboard LED
lcd.clear(); // Erase the LCD screen
}
void loop()
{
// If an interrupt was triggered/executed the LCD has to
//be erased and the main massage
//displayed
if(buttonVariable == 1)
{
lcd.clear(); // Erase the LCD
buttonVariable = 0; // Global variable re-initialized
}
delay(1000);
lcd.setCursor(0,0); // Set the LCD cursor
lcd.print("Liniste…"); // Display a message
}
// ISR for INT0 (“INT0_vect” is a predefined name (address)
//for INT0 ISR
ISR(INT0_vect)
{
digitalWrite(13, !digitalRead(13)); // Change the status
//of pin 13
lcd.setCursor(0,0); // Move the LCD cursor in the top-left
//corner
lcd.print("Intrerupem");// Display message
lcd.setCursor(0,1);
lcd.print("ptr stirea zilei");
buttonVariable = 1;
}
// ISR for INT1
ISR(INT1_vect)
{
digitalWrite(13, !digitalRead(13));
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Stirea Doi");
buttonVariable = 1;
}