Problemas con menú en pantalla de Nokia 3310

Buenas, dispongo de una pantalla LCD nokia 3310 para arduino en la cual necesito desarrollar un pequeño menú donde pueda por un lado ver los valores de humedad, temperatura e iluminación (cosa que ya he conseguido), y por otro lado poder establecer los puntos de consigna para esas variables anteriores.

Necesito que me guíen un poco en como poder terminar de hacer el menú de la pantalla y como introducir esos tres valores independientemente para los puntos de consigna.

El código que llevo de momento es el siguiente:
Código:
#include <LCD5110_Graph.h>
#include <Keypad.h>
#include <DHT11.h>

////////////////PANTALLA LCD//////////////////
//      CLK  - Pin 28
//      Din - Pin 27
//      DC   - Pin 26
//      CE   - Pin 25
//      RST  - Pin 24
 int LDR;
 int LM35;
 int opc;
 int opci;
 float tempe;
 float milivol;
 int valor;
 int luz;
 int hume;
 float hum;
 float temp;
 
LCD5110 myGLCD(28,27,26,24,25);
extern unsigned char MediumNumbers[];
extern unsigned char BigNumbers[];
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
int contrast = 60;
int inv=0;

 //////ILUMINACION//////////
const long A = 1000;     //Resistencia en oscuridad KO
const int B = 15;        //Resistencia a la luz (10 Lux) KO
const int Rc = 10;       //Resistencia calibracion KO
int ilum; 

///////////////TECLADO//////////////////
const byte Filas = 4;     //Cuatro filas
const byte Cols = 4;    //Cuatro columnas

byte Pins_Filas[] = {47, 46, 45, 44};  //Pines Arduino a los que contamos las filas.
byte Pins_Cols[] = { 43, 42, 41, 40};   // Pines Arduino a los que contamos las columnas.
char Teclas [ Filas ][ Cols ] = 
{
  {\'D\',\'C\',\'B\',\'A\'},
  {\'#\',\'9\',\'6\',\'3\'},
  {\'0\',\'8\',\'5\',\'2\'},
  {\'*\',\'7\',\'4\',\'1\'}
};
Keypad Teclado = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);

DHT11 dht11(5);

void setup()
{
 
  Serial.begin(9600);
  myGLCD.InitLCD(contrast);

}
///////LUZ////////////
float lectura_ldr()
{
  LDR=analogRead(A0);
  LDR=analogRead(A0);
  LDR=analogRead(A0);
  LDR=analogRead(A0);
  ilum = ((long)(1024-LDR)*A*10)/((long)B*Rc*LDR);
  return ilum;
}
/////////////TEMPERATURA////////////////
  float lectura_lm35()
  {
  valor = analogRead(A7);
  milivol = (valor / 1023.0) * 5000;
  LM35 = milivol / 10;
  return LM35;
  }
///////////////HUMEDAD//////////////////
  float lectura_dht11()
  {
  dht11.read(hum,temp);
  return hum;
  }
//////////////////////////////////////
 
void loop()
{
  tempe=lectura_lm35();
  luz=lectura_ldr();
  hume=lectura_dht11();

  
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.print("ORNYCLEAN",CENTER,0);
  myGLCD.print("A) Temperatura",0,15);
  myGLCD.print("B) Humedad",0,25);
  myGLCD.print("C) Iluminacion",0,35);
  myGLCD.update();
   
 switch(Teclado.getKey()){
    case\'A\':
      do{
      tempe=lectura_lm35();
      myGLCD.clrScr();
      myGLCD.setFont(SmallFont);
      myGLCD.print("Temperatura",CENTER,5);
      myGLCD.setFont(BigNumbers);
      myGLCD.printNumI((tempe),CENTER,20);
      myGLCD.update();
      delay(1000);}
      while(Teclado.getKey() != \'#\');
      myGLCD.clrScr();
      break;
  case\'B\':
      do{
      hume=lectura_dht11();  
      myGLCD.clrScr();
      myGLCD.setFont(SmallFont);
      myGLCD.print("Humedad",CENTER,5);
      myGLCD.setFont(BigNumbers);
      myGLCD.print((hume),CENTER,20);
      myGLCD.update();
      delay(1000);}
      while(Teclado.getKey() != \'#\');
      myGLCD.clrScr();
      break;
  case\'C\':
      do{
      luz=lectura_ldr();  
      myGLCD.clrScr();
      myGLCD.setFont(SmallFont);
      myGLCD.print("Iluminacion",CENTER,5);
      myGLCD.setFont(BigNumbers);
      myGLCD.printNumI((luz),CENTER,20);
      myGLCD.update();
      delay(1000);}
      while(Teclado.getKey() != \'#\');
      myGLCD.clrScr();
      break;
 }
}
Con el simplemente recibo datos, pero a la hora de ampliarlo para hacer otra parte donde poder introducirlos setpoint me da problemas. ...
 

Arriba