Ho bisogno di vostro aiuto con attachInterrupt

Buon giorno , sono Alex vengo da Teramo,da tanto tempo seguo il forum,ma primo volta che scrivo
ho bisogno di vostro aiuto :’( ,dove sto facendo errore?Perche quando premo il bottone mi fa vedere solo primo 1 messaggio e non mi va avanti!!!
Saro molto grato.

#include <LiquidCrystal.h> 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 


void setup() 

 { 
  
  attachInterrupt(5, knopki, CHANGE);  //arduino mega

  lcd.begin(20, 4);     

}


void loop()
{  
}

void knopki() 
{ 
 int flag; 
if (flag<3) flag++; 
else flag=0; 


switch (flag) 
{ 
  
case 0: 
 
lcd.setCursor(0, 2);                            
lcd.print(" 1messaggio"); 
break;

case 1:
 
lcd.setCursor(0, 2);                            
lcd.print(" 2messaggio");
 
break; 

case 2:
 
lcd.setCursor(0, 2);                            
lcd.print(" 3messaggio"); 

break; 
}
}

prova a portare int flag = 0; subito prima di void setup()

Niente lo stesso

stai utilizzando un Arduino Mega? hai utilizzato uno schema come questo http://www.arduino.cc/en/Tutorial/Button collegandolo al pin 18 invece che al 2?

GRAZIE 1000, mio sbaglio

void knopki()
{


 int flag; // Qua ho sbagliato


if (flag<3) flag++;
else flag=0;

ho seguito tuo consiglio,Tutto va a meraviglia
Ancora grazie