error: 'AltH' was not declared in this scope

Hola. Estoy intentando poner en practica un proyecto que he visto por internet y hasta ahora todo bien. Quiero hacer algunos pequeños cambios y necesito ayuda.
Se trata de un pulsador que cuando lo pulsas, te sale en la pantalla lcd 3 valores diferentes, 0%, 50% y 100%.
Me gustaría que en vez de valores numericos, me salgan palabras concretas según los porcentajes de arriba, me explico, esto es para cambiar los modos de vuelo en un multicoptero, en los que el valor 0% corresponde al modo “Estabilize”, el 50% es el modo “Alt Hol” y el 100 % es “GPS” o “Loiter”, cualquier denominación me podía valer

Este es el trozo de código que configura este pulsador

AuxPot1 = map(AI_Val[4], 0, 1023, 0, 100) + 0;

if (AuxPot1 > 100) { AuxPot1 = 100; };
if (AuxPot1 < 0) { AuxPot1 = 0; };

LCDgoTo(21); lcd.print(“MDL”); lcd.print(Model);
LCDgoTo(10); lcd.print(AuxPot1); lcd.print("% ");

Yo lo he hecho así:

AuxPot1 = map(AI_Val[4], 0, 1023, 0, 100) + 0;

if (AuxPot1 > 100) { AuxPot1 = GPS; };
if (AuxPot1 = 50 ) { AuxPot1 = AltH; };
if (AuxPot1 < 0) { AuxPot1 = ESTB; };

LCDgoTo(21); lcd.print(“MDL”); lcd.print(Model);
LCDgoTo(10); lcd.print(AuxPot1);

pero se vé que lo hago mal porque cuando le doy a verificar en el IDE, me sale este error:

Battery:56: error: ‘GPS’ was not declared in this scope
Battery:57: error: ‘AltH’ was not declared in this scope
Battery:58: error: ‘ESTB’ was not declared in this scope

¿Podeis decirme como puedo arreglar esto y que salga como yo quiero?
Gracias

Y esto que muestras aquí es el código?
Si esa así, pues ponte a ver ejemplos del IDE y verás todo lo que esta mal.
Si esta incompleto postea todo el código y recuerda usar los tags. No sabes como usar los tags. Lee las normas del foro.

Creo que tienes un problema de concepto con los tipos de variables y que valores pueden guardar.Si estas usando la variable AuxPot1 como numerica no puedes luego asignarle una cadena de caracteres(y si es una cadena de caracteres deberia ir entre comillas dobles).Dale un repaso a los tipos de variables.Tambien deberias darle un repaso al uso de las condiciones :

  if (AuxPot1 > 100) { AuxPot1 = GPS; };
      if (AuxPot1 =  50 ) { AuxPot1 = AltH; };
                if (AuxPot1 < 0) { AuxPot1 = ESTB; };

La primera condicion solo se cumplira para valores mayores que 100,la segunda solo si es 50 (o sea que si el resultado del map es 49 ,51,35…etc no haria nada)y ademas no has escrito una igualdad ,si no una asignacion,para hacer una comparacion se usa == y la tercera solo se cumplira si es menor que 0 ,cuando el map te va a dar resultados entre 0 y 100

He cambiado un poco el código y ahora ya me salen los valores que yo quiero. No se si estará bien hecho o nó pero cuando le doy al pulsador me cambia los valores.

Aquí estan los cambios que hice

AuxPot1 = map(AI_Val[4], 0, 1023, 0, 100) + 0;

LCDgoTo(10); if (AuxPot1 == 0){lcd.print("ESTB");}
else
{ if (AuxPot1 == 50) lcd.print("AltH");
if (AuxPot1 == 100) lcd.print("GPS ");}
LCDgoTo(21); lcd.print("MDL"); lcd.print(Model);

Perdón por no poner el código completo como dice el compañero surbyte.

Aquí está completo, es que soy un poco novato y no entendía lo de los tags.

/*

Battery Monitor

*/

int DI_Onup_e_int;
int DI_Onup_f_int;
int AI_Batte_percent = 0;
int AI_Battefloat = 0;
float AI_Batte;
float LipoMin = 10.8;       // Minimum battery voltage (alarm)
float BatteryMult = 28.72;  // Scale the analogue input down to battery voltage. Value depends on voltage divider resistors used.
    // 5.6k & 1k resistors should give 2.2v at the input for 12.6v battery voltage.

void batterymonitor_auxpot() {

    AI_Batte = AI_Val[5] / BatteryMult;

 if (AI_Batte > LipoMin) {            // Compare battery with Lipo alarm setting
        digitalWrite(outPinBuzz, LOW);   // Turn off buzzer
    }
    if (AI_Batte < LipoMin && slooowflag == 1) {
    digitalWrite(outPinBuzz, HIGH);  // Turn on buzzer
    } else {
    digitalWrite(outPinBuzz, LOW);   // Turn off buzzer
 }
 
 AI_Battefloat = AI_Batte * 100;      // map doesn't work with float, so mult x100 gains 2 dp's to get around this
 AI_Batte_percent = map(AI_Battefloat, 1080, 1260, 0, 100) + 0;  // map battery voltage to percentage 10.8v to 12.6v
 if (AI_Batte_percent < 0) { AI_Batte_percent = 0; }
 if (AI_Batte_percent > 100) { AI_Batte_percent = 100; }

    if (ModeDispSet == 0) {
 
 if (slooowflag == 1) {
 LCDgoTo(0); lcd.print(AI_Batte_percent); lcd.print("%    ");
 } else {
 LCDgoTo(0); lcd.print(AI_Batte); lcd.print("v ");
 }
 
 DI_Onup_e_int = DI_Onup_e;
 DI_Onup_f_int = DI_Onup_f;
 LCDgoTo(15); lcd.print(DI_Onup_e_int);
 LCDgoTo(31); lcd.print(DI_Onup_f_int);
 AuxPot1 = map(AI_Val[4], 0, 1023, 0, 100) + 0;
 
 LCDgoTo(10);  if (AuxPot1 == 0){lcd.print("ESTB");}
                else
                {   if (AuxPot1 == 50) lcd.print("AltH");
                    if (AuxPot1 == 100) lcd.print("GPS ");}
                LCDgoTo(21); lcd.print("MDL"); lcd.print(Model);
 


                AuxPot2 = map(AI_Val[6], 0, 1023, 0, 100) + 0;
 
 if (AuxPot2 > 100) { AuxPot2 = 100; };
 if (AuxPot2 < 0) { AuxPot2 = 0; }; 
 
 LCDgoTo(26); lcd.print(AuxPot2); lcd.print("% ");
 }

}

Ese no es el código completo. NO tiene setup, no tiene loop y no esta definida LCDgoTo. Faltan los include también.

Cierto, el codigo completo lo integran un monton de archivos y no se como subirlos todos. Pongo el link de la pagina, ese es el proyecto que estoy montando, allí está todo el codigo para descargar y las librerias.

El codigo que posteé anteriormente corresponde en concreto al archivo battery.ino

Cuando son muchos códigos usa la compresión zip y lo subes con attachment.
Bueno el código esta acá y la librería USB esta acá

Para que pedí el código.. jajaja una locura de programa!!!!!!!!!

Si a ti que sabes de esto te parece una locura, imaginate a mi que no tengo ni pajolera idea de programación arduino.
Cuando tenga un poco de tiempo intentaré subir ese mismo código con las modificaciones que yo he hecho para contrastar y aun me queda un último paso que me queda por afrontar pero no se como hacerlo por lo que solicitaré vuestra ayuda para ello.

bien, dime lograste el primer objetivo que era poner etiquetas. Cual es el segundo?

El primero, me gustaria saber si lo hecho hasta ahora esta bien o nó.
El segundo tambien lo he conseguido que es desactivar o que no funcione el top had porque no lo necesito, solo necesito que me funcione con los botones y tambien esta hecho.
Por ultimo lo que me falta en el archivo IO. Ino es configurar el boton 11 para que alterne en una posicion y me desactive lo que hice en el auxpot1 y me ponga esto
(AuxPot1 == 23) lcd.print("RTL"); esto es el valor que tiene que tener para activar la funcion RTL que es la vuelta a casa del drone.
En una posicion estarian activos los tres modos de vuelo y en la otra posicion solo la vuelta a casa (RTL)

Pero el primero era poner las etiquetas, eso funciona con lcd.print("ALGO"); asi de simple.
miraré luego tu 3er objetivo.

Te lo agradezco.
A ver si hechamos ya a volar el drone con el joystick.

Y luego me cuentas como lo armaste porque ese será mi sieguiente proyecto.

¿Alguna idea para ver como puedo enfocar el tercer objetivo e intentar meterle mano?
He intentado de todo pero no soy capaz

Tu 3er objetivo:

Por ultimo lo que me falta en el archivo IO.ino es configurar el boton 11 para que alterne en una posicion y me desactive lo que hice en el auxpot1 y me ponga esto
(AuxPot1 == 23) lcd.print("RTL"); esto es el valor que tiene que tener para activar la funcion RTL que es la vuelta a casa del drone.
En una posicion estarian activos los tres modos de vuelo y en la otra posicion solo la vuelta a casa (RTL)

Lo repito pero no encuentro la referencia al boton 11, porque no nos dices cuales es

Hola, que tal.
La referencia a ese botón está en el archivo IO.ino
Pongo un trozo de este archivo, hasta donde está la referencia al botón 11, que es el ultimo trozo de código. Es que no me deja poner el archivo entero debido al exceso de caracteres

/*

Analogue & Digital I/O

*/

unsigned char DItemp_a = 0;
unsigned char DItemp_b = 0;
unsigned char DItemp_c = 0;
unsigned char DItemp_d = 0;
unsigned char DItemp_e = 0;
unsigned char DItemp_f = 0;
unsigned char DItemp_g = 0;
unsigned char DItemp_h = 0;
unsigned char DItemp_i = 0;
unsigned char DItemp_j = 0;
int Expo = 50;
int AI_Aeler2 = 700;
float AI_AelerF = 700;
float AI_ElevaF = 700;
float AI_RuddeF = 700;
int AI_Elevon = 700;
int Minmult;
int Maxmult;
int AI_Valtemp;
int AI_Valset = 0;
int AI_Valtemp1;
int AI_Valset1 = 0;
char* PPMreassignmode[]={"        ", "1 2 3 4 5 6 7 8 "};
char* PPMchannels[]={"  ", "AE","EL","TH","RU","S1","P1","P2","S2"};
int PPMchannelpointer = 1;
int PPMvaluepointer = 1;
int lowtemp1 = 0;
int hightemp1 = 0;


// Read Digital Inputs
void readdigital() {

   /*
   Logitech Extreme 3D Pro Switch/Button mapping:-
   Buttons a (Joyvar5) No switch = 0
     1 = 1
     2 = 2
     3 = 4                          // botones del auxpot
     4 = 8                          // botones del auxpot
     5 = 16                         // botones del auxpot
     6 = 32                         // botones del auxpot
     7 = 64
     8 = 128 
   Buttons b (Joyvar6) No switch = 0
     9 = 1
     10= 2
     11= 4
     12= 8
   Top Hat (Joyvar2) No switch = 8 (wierd!)
     Left = 6
     Right = 2
     Forward = 0
     Back = 4
   */
  
   // Pull digital stick data from USB library
   extern int Joyvar2;  // Top Hat
   extern int Joyvar5;  // Buttons a
   extern int Joyvar6;  // Buttons b
   if (Joyvar2 == 8) { DI_Val[4] = 1; DI_Val[5] = 1; DI_Val[6] = 1; DI_Val[7] = 1; }  // No Hat pressed   
   if (Joyvar2 == 6) { DI_Val[4] = 0; }    // Left Hat
   if (Joyvar2 == 2) { DI_Val[5] = 0; }    // Right Hat
   if (Joyvar2 == 0) { DI_Val[6] = 0; }    // Forward Hat
   if (Joyvar2 == 4) { DI_Val[7] = 0; }    // Back Hat
   if (Joyvar5 == 0) { DI_Val[0] = 1; DI_Val[1] = 1; DI_Val[8] = 1; DI_Val[9] = 1; DI_Val[10] = 1; DI_Val[11] = 1; }  // No Button pressed
   if (Joyvar5 == 4) { DI_Val[8] = 0; }    // button 3
   if (Joyvar5 == 8) { DI_Val[10] = 0; }   // button 4
   if (Joyvar5 == 16) { DI_Val[9] = 0; }   // button 5
   if (Joyvar5 == 32) { DI_Val[11] = 0; }  // button 6   
   if (Joyvar5 == 64) { DI_Val[0] = 0; }   // Button 7
   if (Joyvar5 == 128) { DI_Val[1] = 0; }  // Button 8
   if (Joyvar6 == 0) { DI_Val[2] = 1; DI_Val[3] = 1; }  // No Button pressed    
   if (Joyvar6 == 2) { DI_Val[2] = 0; }    // Button 10
   if (Joyvar6 == 1) { DI_Val[3] = 0; }    // Button 9
  
  
  
  
  
  
  
  // Process Buttons 11 & 12 for onup & latching operation
   if (Joyvar6 == 4) { DItemp_e = 1; }   // Button 11 down - (Auxsw1)
   if (Joyvar6 == 0 && DItemp_e == 1) {  // Button 11 now up
       DI_Onup_e = !DI_Onup_e;  // invert latch
   DItemp_e= 0;
   buzzeractivate = 1;          // activate buzzer
   if (DI_Onup_e == 1) { Auxsw_uS = pulseMax; }
   if (DI_Onup_e == 0) { Auxsw_uS = pulseMin; }
   int DI_Onup_e_int = DI_Onup_e;  // Write to Eprom
   Epromvar = DI_Onup_e_int;
   Address = 36;
       EEpromwriteDirect();
   }

Bien, disculpas porque era tan obvio y no lei el comentario a la derecha que indicaba los botones. Sorry

La parte del boton 11 es esta

   // Process Buttons 11 & 12 for onup & latching operation
   if (Joyvar6 == 4) { 
   	   DItemp_e = 1; 
   }   // Button 11 down - (Auxsw1)
   if (Joyvar6 == 0 && DItemp_e == 1) {  // Button 11 now up
       DI_Onup_e = !DI_Onup_e;  // invert latch
	   DItemp_e= 0;
	   buzzeractivate = 1;          // activate buzzer
	   if (DI_Onup_e == 1) { 
	   	   Auxsw_uS = pulseMax; 
	   }
	   if (DI_Onup_e == 0) { 
	   	  Auxsw_uS = pulseMin; 
	   }
	   int DI_Onup_e_int = DI_Onup_e;  // Write to Eprom
	   Epromvar = DI_Onup_e_int;
	   Address = 36;
       EEpromwriteDirect();
   }

Quieres sumar

(AuxPot1 == 23) lcd.print("RTL");

Primera duda, debe hacerse con el boton 11 up o down?
y supongo que será esto lo que quieres agregar

if (AuxPot1 == 23) 
             lcd.print("RTL");

Espero tu respuesta...

Sería en UP

No entiendo como no puedes agregar un simple código como este

if (AuxPot1 == 23) 
             lcd.print("RTL");

Perdón pero me sorprende.

Bueno solo esto

   if (Joyvar6 == 0 && DItemp_e == 1) {  // Button 11 now up
       DI_Onup_e = !DI_Onup_e;  // invert latch
	   DItemp_e= 0;
	   buzzeractivate = 1;          // activate buzzer
	   if (DI_Onup_e == 1) { 
	   	   Auxsw_uS = pulseMax; 
	   }
	   if (DI_Onup_e == 0) { 
	   	  Auxsw_uS = pulseMin; 
	   }
	   int DI_Onup_e_int = DI_Onup_e;  // Write to Eprom
	   Epromvar = DI_Onup_e_int;
	   Address = 36;
           EEpromwriteDirect();
           if (AuxPot1 == 23) 
               lcd.print("RTL");
   }

Insertado al final del if.