?? fermare un loop in esecuzione con arduino uno atm328 e lcd 16x2 mod. hd44780

ciao a tutti,
ho già provato a cercare sul web ma non sono riuscito a trovare una soluzione al mio problema.

praticamente ho un pulsante per poter cambiare un "programma", ad esempio:
-se premo il pulsante una volta: nel mio ldc viene scritto "programma 1 :ciao a tutti"
-se premo il pulsante ancora: nel mio lcd viene scritto "programma 2 : testo di prova scorrevole" , appunto con scritta in movimento.

il problema è che quando entro nel loop del programma 2 vorrei uscirne mentre lo esegue magari tornando al programma 1.
perfavore aiutatemi.
grazie
Marco

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 13, A0, A1, A2, A3);

int pulsante;
int rele=1;

void setup() {

  lcd.begin(16, 2);
  pinMode(A4,INPUT);
  lcd.clear();
  delay(500);
  lcd.setCursor(0, 1);
  lcd.print("bentornato");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("  SELEZIONA UN");
  lcd.setCursor(0, 1);
  lcd.print("   PROGRAMMA");
 
}

void loop() {
  pulsante=digitalRead(A4);
  
  if ((pulsante==HIGH) and (rele==0))
  {

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Programma 2: ");
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print(" testo di prova scorrevole");
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
   
    lcd.scrollDisplayLeft(); 
    
    delay(200);
  }
  rele=1;
  delay(1000);
  }
  
else if ((pulsante==HIGH) and (rele==1))
  {
    lcd.clear();
    delay(50);
    lcd.setCursor(1, 0);// Print a message to the LCD.
    lcd.print("Programma 1: ");
    lcd.setCursor(1, 1);
    lcd.print("ciao a tutti");
    rele=0;
    delay (1000);
  }
}

ma sul pin dove hai collegato il pulsante, ce l'hai messa una resistenza di pulldown verso massa ?

Devi inserire il controllo del pulsante dentro il ciclo for e nel caso esci dal ciclo con un break;
Oppure crei un funzione e in base al controllo del pulsante torni al ciclo principale con un return;

ciao brunello,
si la resistenza c'e'.

ciao paolop,
riesci a farmi per favore un esempio scritto,
il ciclo for lo copiato da un altro programma,ma non sò cosa intendi per" insererire il controllo pulsante"...break.
sono agli inizi.
se mi fai un esempio scritto posso capire il funzionamento.
grazie mille

lcd.scrollDisplayLeft(); 
      if ((digitalRead(A4)==HIGH))  {
        break;
      }
      delay(200);

se ripremi il pulsante, il comando break ti fa' uscire dal ciclo 'for'

grazie mille,
funziona!!!!!!!!!!!!!
ora ho capito!!
grazie ancora, ci ho perso dei giorni.....
adesso continuo con il progetto e se ho problemi scrivo. XD
ciao ciao