#include <avr/io.h>
#include <LiquidCrystal_I2C.h>
#define NUMC 3
LiquidCrystal_I2C lcd(0x27, 16, 2);
volatile uint8_t n;
ISR(INT0_vect){
n++;
n %= NUMC;
}
enum MSGS{
MSG0,
MSG1,
MSG2
};
void setup() {
DDRD = 0;//input
PORTD = 1 << PD2;//interal pull up
lcd.init();
lcd.backlight();
EIMSK |= 1 << INT0;//Enable ext interrupt INT0
EICRA |= 0b00000010;//Trig. INT0 on falling edge
sei();
}
void print_msg(int n)
{
switch(n){
case MSGS::MSG0:
lcd.print("Hello !");
break;
case MSGS::MSG1:
lcd.print("Welcome to AAU");
break;
case MSGS::MSG2:
lcd.print("RTGP Spring 2024");
break;
default:
break;
}
}
int main() {
init();
setup();
n=0;
for(;;)
{
print_msg(n);
_delay_ms(1000);
lcd.clear();
}
}