Aus einem Interrupt herraus?

Moin Freunde

Ich habe zwei Fragen:
Wenn eine Taster per Interrupt abgefragt wird und er einen Ausgang HIGH schaltet, läßt er sich dann im Loop als High abfragen?
Ich hatte es erst nur mit If abfragen gemacht ( es sind später drei Taster ), dabei braucht die Abfrage ob einer High ist, immer den ganzen Zyklus zum durchlaufen. Jetzt im Interrupt geht es natürlich schneller. Im Interrupt wird der Ausgang Normal High gesetzt und kehrt doch ( Oder?? ) sofort zurück in den Loop.
Warum passiert nichts wenn ich jetzt den Taster Go dazu nehme?
Ich habe noch etwas von Volatile gelesen…hat das etwas damit zu tun.
Es soll später ein Automat für drei Mischungen an Cola/Rum geben:
Erst Getränkestärke wählen ( Schwach / Mittel / Hart ) dann über den Go Button den Prozess starten.
Aber diese IF Go and Normal Abfrage klappt nicht.

und

Wass kann alles in einen Interrupt rein?
Gehen die Befehle für ein Display über I2C?

Grüße Torsten

Mein Prog sieht erstmal so aus:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);

int Normal= 52;
int Mittel = 53;
int T1 = 2;
int Go = 25;
int tasterstatus1=0;
int tasterstatusGo=0;

void setup()
{
attachInterrupt(0,Schwach,RISING);
pinMode (Normal, OUTPUT );
pinMode ( Mittel,OUTPUT);
pinMode ( T1, INPUT );
pinMode (Go, INPUT);
}

void loop()
{
lcd.begin();
lcd.backlight();
lcd.setCursor(3,0);                  // Wählen Sie eine Mischung
lcd.print("W\341hlen Sie");
lcd.setCursor(1,1);  
lcd.print("eine Mischung"); 

tasterstatusGo=digitalRead(Go);
if (tasterstatusGo==HIGH && Normal==HIGH )   // Normal+Go
{
digitalWrite ( Mittel,HIGH);
lcd.begin();
lcd.setCursor(2,0); 
lcd.print("LOS GEHTS ");
lcd.setCursor(1,1);  
lcd.print(""); 
delay ( 2000);
}
else 
{
digitalWrite ( Mittel,LOW);
}

delay (5000);
digitalWrite (Normal, LOW);

}
void Schwach()
{
digitalWrite (Normal, HIGH);


}

Taster muss man nicht mit Interrupts machen. Das ist nur in Ausnahmefällen sinnvoll.

loop() läuft so schnell und Taster sind so langsam (im Millisekunden Bereich) dass man sie auch direkt abfragen kann.

Wenn Du delay() rausschmeißt, kannst Du Dir Interrupt sparen, weil loop() dann rasend schnell durchlaufen wird. Verzögerungen macht man durch "Uhrenvergleich" mit millis().