Problemas con menú en pantalla de Nokia 3310

#1
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. ...
 

Temas similares


Arriba