Aiuto settaggio variabile tramite keypad

Salve a tutti, avrei bisogno di un consiglio su quale funzione usare visto che sto iniziando da poco a programmare. In pratica devo fare in modo di far eseguire uno script soltanto dopo che sono stati assegnati i valori a delle variabili tramite un comune tastierino numerico a 4 righe e 3 colonne (come quello dei telefoni per intenderci). Illustro brevemente cosa ho collegato sulla breadboard e cosa ho intenzione di fare: display lcd 16x4, tastierino numerico 4x3, mosfet IRF 540 su pin digitale 9 (PWM) e per finire un RTC DS1307. La parte elettronica è già collaudata, avrei bisogno di aiuto su come non far partire lo script fino a quando non ho assegnato dei valori a delle variabili tramite il tastierino. Lo script senza usare il tastierino (qindi assegnando il valore delle variabili nello script) svoge queste funzioni: ogni secondo prende l'orario restituito dal DS1307 e lo invia sull' LCD; quando l'orario coincide con il valore di 2 variabili (una per le ore e una per i minuti) controllo l'uscita PWM dove è collegato il mosfet. A questo punto devo trovare un modo per non far partire lo script fino a quando non vengono assegnati i valori alle variabili ore e minuti con il tastierino. Che funzione si usa in questo caso?

come acquisisci da tastierino? anaologRead? beh devi mettere un if dove confronti il tempo con la variabile... però mancano troppe info per postare del codice

Questo è lo script che ho fatto fin’ora; in pratica vorrei fare in modo che lo script presente nel void loop() non venga eseguito finchè non assegno via tastierino il valore alle variabili oraAccensione e minutoAccensione. Segue lo script che ho leggermente modificato per facilitarne la lettura:

#include <Keypad.h>
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystal16x4.h>
#define Uscita 9 // pin collegato al mosfet
LiquidCrystal16x4 lcd(2, 3, 4, 5, 6, 7, 8); // pin usati dal display
int rtc[7];
float valorePWM = 0.00;

///////////////////////////////////////////////////////////
// variabili da assegnare tramite tastierino
int oraAccensione = 12; // valore adesso impostato via script
int minutoAccensione = 25; // valore adesso impostato via script
///////////////////////////////////////////////////////////

void setup()
{
pinMode(Uscita1, OUTPUT);
RTC.stop();
RTC.set(DS1307_SEC,44); //set the seconds
RTC.set(DS1307_MIN,23); //set the minutes
RTC.set(DS1307_HR,12); //set the hours
RTC.set(DS1307_DOW,4); //set the day of the week
RTC.set(DS1307_DATE,5); //set the date
RTC.set(DS1307_MTH,3); //set the month
RTC.set(DS1307_YR,9); //set the year
RTC.start();
}

void loop()
{
RTC.get(rtc,true);
lcd.setCursor(0,0);
lcd.print(rtc[2]); // ore
lcd.print(":");
lcd.print(rtc[1]); // minuti
lcd.print(":");
lcd.print(rtc[0]); // secondi
if (rtc[2] == oraAccensione && rtc[1] == minutoAccensione && rtc[0]==0)
{
valorePWM = 255;
}
analogWrite(Uscita, valorePWM);
lcd.setCursor(0,1);
lcd.print("USCITA = “);
lcd.print(valorePWM/2.55); // valore PWM in percentuale
lcd.print(”% ");
delay(1000);
}
// Fin qui lo script funziona correttamente senza il tastierino

/////////////////////////////////////////////////
/////////////////////////////////////////////////
// Codice tastierino - assegnazione pin

const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{‘1’,‘2’,‘3’},
{‘4’,‘5’,‘6’},
{‘7’,‘8’,‘9’},
{’*’,‘0’,’#’}
};
byte rowPins[ROWS] = { 10, 12, 14, 11 }; // pin per le righe del tastierino
byte colPins[COLS] = { 16, 15, 17 }; // pin per le colonne del tastierino
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

///////////////////////////////////////////
// per acquisire dal tastierino
char key = kpd.getKey();
if(key != NO_KEY)
{
switch (key)
{
case ‘1’:
// fai qualcosa
break;
case ‘2’:
// fai qualcosa
break;
case ‘3’:
// fai qualcosa
break;
default:
// fai qualcosa
break;
}
}

forse ti conviene impostare 2 funzioni, nella loop() metti il controllo dei pin sui quali dovresti avere i segnali dal tastirino e, con una funzione if, quando ricevi i dati richiami l'altra funzione che svolge il lavoro.