desktop

Problemas con LCD en Arduino

Yo me quedé en;
C++:
float Salida1 == analogRead(A0);
Y ya no quise leer mas.

Como te dicen, y es sin ánimo de ofender, lee sobre C o C++, porque tienes HORRORES de programación, y andar uno a uno en un código bastante largo, vamos a terminar haciendoló nosotros.

PD: Ahora falta que te des cuenta el "por qué" dejé de leer el código exactamente en esa parte....
 
Yo me quedé en;
C++:
float Salida1 == analogRead(A0);
Y ya no quise leer mas.

Como te dicen, y es sin ánimo de ofender, lee sobre C o C++, porque tienes HORRORES de programación, y andar uno a uno en un código bastante largo, vamos a terminar haciendoló nosotros.

PD: Ahora falta que te des cuenta el "por qué" dejé de leer el código exactamente en esa parte....
Probablemente el compilador le retorna algún valor por el error, pero de todas formas lo ignora, igual luego marca la entrada análoga como salida XD pero igual la API de arduino cuando llamas al analogRead automaticamente inicializa el pin para entrada así que tampoco notará el error.
 
Tienes un lío mental sideral.
No se sostiene lo que dices.
Ve a estudiar una introducción a la programación porque lo que dices no es coherente.

Repito que no lo digo con ánimo de ofender, esque es un concurso de cosas absurdas...

Ni por asomo. los conversores analogico a digital pasan de aGnd a aVcc el valor que haya dado en los 2ⁿ bits de la conversion. Nada de 0 y 5V
ademas es absurdo leer una entrada y en funcion de eso definir un pin como float multiplicado por 1... disparate×diaparate×disparate.

¿Que que como qué? Esa frase no se sostiene. ¿como que numero decimal binario y hexadecimal?
Un numero es un numero y siempre es binario o en coma flotante. Tu lo representas como te interese.

No se entiende esa frase.
Pues estudia un poco más, o un poco menos pero entiende algo.

¿Pero como vas a definir que pin segun leas otro pin?
Que compile no significa nada.

¿Que tiene que ver la variable con el pin?
si tu dices
int edad = 15; pues se guarda 15 en edad. Si cada año le sumas 1 pues irá sumando...
¿Que pinta el pin ahí?

No, eso no es lo que tu dices.

No, 0 es el valor numerico 0 y "" es una cadena vacia.
Von el lio que llevas solo te falta meterte en cadenas en C...



Busca un libro de programacion basica-elemental a ver si de deslias la enseimada mental que llevas. Tienes todos los conceptos mal y mezclados.
Pues menos mal que no lo decias con ánimo de ofender
Yo me quedé en;
C++:
float Salida1 == analogRead(A0);
Y ya no quise leer mas.

Como te dicen, y es sin ánimo de ofender, lee sobre C o C++, porque tienes HORRORES de programación, y andar uno a uno en un código bastante largo, vamos a terminar haciendoló nosotros.

PD: Ahora falta que te des cuenta el "por qué" dejé de leer el código exactamente en esa parte....
Ya se que analogRead da valores de 0 a 1023 pero luego en el código lo transformo a voltios

Y resalto yo entiendo que realtais mis fallos para que aprenda

Edit solucionado un me falto un cable de tierra para los botones,ademas de cambiar el float a int para que nadie se moleste,ademas de cambiar las salida 1,2,3,4 como entradas

Y si a pesar de tener el modulo serie integrado preferí conectarlo directamente
 

Adjuntos

  • IMG_20230725_105307.jpg
    IMG_20230725_105307.jpg
    216.7 KB · Visitas: 3
  • IMG_20230725_105313.jpg
    IMG_20230725_105313.jpg
    206.7 KB · Visitas: 3
Última edición:
Ya se que analogRead da valores de 0 a 1023 pero luego en el codigo lo transformo a voltios
El problema es que puede poner int variable = 0; pero no int variable = unaFuncionVolatil(); fuera de la función principal (normalmente seria main()) o alguna secundaria. Bajo Arduino no importa porque Arduino compila un Main.c que luego importa el .ino del proyecto, así que probablemente sí resuelva la ejecución que le estas pidiendo, pero eso es una mala práctica, bajo condiciones normales hacer eso causaría que se ejecute una consulta al ADC sin inicializar lo cual puede causar un error en tiempo de compilación (te advierte el compilador y se detiene) o una compilación con la lectura del ADC, el microcontrolador queda congelado a la espera de un valor que el ADC no retorna al no haberse configurado primero.
Siempre que declares una variable global hazlo con un valor literal luego lo actualizas cuando lo requieras.

Otra recomendación, usa la inserción de código, para Arduino elije C++
1690278734477.png
Aparte de que es más legible al conservar resaltado de sintaxis y los espacios, evita que tu código se llene de emojis y se vuelva aún más confuso.
 
El problema es que puede poner int variable = 0; pero no int variable = unaFuncionVolatil(); fuera de la función principal (normalmente seria main()) o alguna secundaria. Bajo Arduino no importa porque Arduino compila un Main.c que luego importa el .ino del proyecto, así que probablemente sí resuelva la ejecución que le estas pidiendo, pero eso es una mala práctica, bajo condiciones normales hacer eso causaría que se ejecute una consulta al ADC sin inicializar lo cual puede causar un error en tiempo de compilación (te advierte el compilador y se detiene) o una compilación con la lectura del ADC, el microcontrolador queda congelado a la espera de un valor que el ADC no retorna al no haberse configurado primero.
Siempre que declares una función global hazlo con un valor literal luego lo actualizas cuando lo requieras.

Otra recomendación, usa la inserción de código, para Arduino elije C++
Ver el archivo adjunto 301576
Aparte de que es más legible al conservar resaltado de sintaxis y los espacios, evita que tu código se llene de emojis y se vuelva aún más confuso.
Wow me impresiono esa respuesta tan técnica a ver si me pongo a estudiar bien para tener tanto conocimiento
Otra recomendación, usa la inserción de código, para Arduino elije C++
Ok gracias
 
Por cierto, no hay problema si usas float pero solo déjalo sin inicializar, cuando la vayas a asignar dentro de la función donde lo ocupes preferentemente usa la conversión explicita, mira este ejemplo
C++:
const int sensorPin = A0; 
float sensor;
const float Q = 5.0/1023.0;
void setup() {
  Serial.begin(115200);
}
void loop() {
  // read the value from the sensor:
  sensor = (float)analogRead(sensorPin);
  float voltage = sensor * Q;
  Serial.print(voltage);
  Serial.println("V");
  delay(500);
}
Y la consola nos retorna
1690282198559.png
Te explico los detalles
No se inicializa el pin de A0 ni como entrada ni como salida, para Arduino al llamarse la función analogRead() se auto asigna por lo que no es requerido hacerlo de forma explícita.
const int es para declarar constantes para la asignación del pin, aunque #define se puede usar en Arduino se supone que uses const en lugar de #define.
La variable sensor se declara, pero no se inicializa, cuando la ocupemos es que la asignamos.
Q es nuestro valor de cuantización (voltaje de referencia/valor máximo del ADC), al ser constante te recomiendo que se calcule en tiempo de compilación en lugar de andar haciendo la división y multiplicación constantemente en el código, en teoría el compilador lo resuelve así que no debería pasar al microcontrolador, pero igual te es más fácil entender la conversión luego, especialmente no tienes que poner toda la formula cada vez que lo conviertas, además es preferente que evites usar divisiones en el microcontrolador, esas operaciones son típicamente más pesadas que la multiplicación.
(tipo)variable o (tipo)función se utiliza para convertir explícitamente una variable a otro tipo, no lo multiplicas por 1.0, el último detalle es el operador que usaste en tu código "==" es lógico, no de asignación, solo sirve para comparar valores.
 
Última edición:
Atrás
Arriba