Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme
  • Página:
  • 1
  • 2
  • 3

TEMA:

Conversor tensión (Level Shifter) 1 año 5 meses antes #2814

Pues nada, seguiré rompiéndome la cabeza, gracias de todos modos por la ayuda.

Acabo de recibir otra pantalla nextion mas pequeña (la NX3224K028), la que tenía era una NX4827P043 y funciona perfectamente, así que el problema está en que la señal que llega al puerto serie 2 del ESP32 no es la correcta, me da que la tensión no es la adecuada, en las especificaciones de las pantallas, en la de 4,3" pone que el voltaje típico es de 5V y en cambio en la pantalla de 2,8" el voltaje típico es de 3,3V, así que me da que el problema está ahí.
Voy a tener que mirar el tema del level shifter a ver si consigo que funcione la de 4,3", aunque sigo sin entender porqué el level shifter me da tensión en las patillas de entrada y salida de señal sin tener nada conectado.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por geloton.

Conversor tensión (Level Shifter) 1 año 5 meses antes #2815

Si con el divisor de tension que te indique no funciona, el problema no es el level sifther
Ya sabes que tus avances puedes indicarlos aqui para ayudar a los que vienen detras de ti.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por Jose Luis.

Conversor tensión (Level Shifter) 1 año 5 meses antes #2816

Por supuesto, aunque creo que poco puedo aportar, no tengo mucha idea ni de programación ni de electrónica, pero si doy solucionado el tema de la pantalla de 4,3" lo comunicaré aquí. Y si alguien sabe de que puede ser este problema le agradecería que lo comunicase que me vendría de perlas. Gracias

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Conversor tensión (Level Shifter) 1 año 5 meses antes #2817

Ya que estoy metido en el lio y abusando un poco, a ver si me podéis echar una mano con este código, es que no sé como salir del bucle while cuando pulso la tecla "b4", en el monitor me sale la cuenta atrás y funciona todo bien, el problema es que he puesto un botón para parar la cuenta atrás y mientras está con la cuenta atrás no hace nada, solo cuando acaba salta en el monitor todas las veces que he pulsado la tecla, pero la cuenta atrás no se detiene mientras no termina.
Me imagino que el código es una chapuza, pero estoy empezando a hacer algunas cosas y no tengo mucha (ninguna) idea de programación.

#include "Nextion.h"

NexButton b0 = NexButton(5, 3, "b0");
NexButton b4 = NexButton(5, 1, "b1");

char buffer[100] = {0};

int asegundostotales = 0;

int led = 2;
int rele = 19;

int boton1 = 0;
bool boton1presionado = false;


NexTouch *nex_listen_list[] =
{
&b0,
&b4,
NULL
};

void setup(void)
{
nexInit();
b0.attachPop(b0PopCallback, &b0);
b4.attachPop(b4PopCallback, &b4);
dbSerialPrintln("Setup Ok.");
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}

void loop()
{
nexLoop(nex_listen_list);
}

void b0PopCallback(void *ptr)
{
if(boton1 == 1){
fn_crono1();
}
}

void b1PopCallback(void *ptr)
{
dbSerialPrintln("boton b1 pulsado");
boton1 = 1;
dbSerialPrintln(boton1);
}


void b4PopCallback(void *ptr) {
boton1presionado = true;
}


void fn_crono1() {
asegundostotales = 47;
unsigned long tiempo_inicio = millis();
unsigned long tiempo_actual = 0;

while (asegundostotales > 0 && !boton1presionado) {
tiempo_actual = millis();
if (tiempo_actual - tiempo_inicio >= 1000) {
tiempo_inicio = tiempo_actual;
asegundostotales--;
dbSerialPrintln(asegundostotales);
}

if (asegundostotales >= 40 && asegundostotales < 47) {
digitalWrite(rele, HIGH);
digitalWrite(led, HIGH);
}
if (asegundostotales >= 20 && asegundostotales < 40) {
digitalWrite(led, LOW);
digitalWrite(rele, LOW);
}
if (asegundostotales >= 1 && asegundostotales < 20) {
digitalWrite(rele, HIGH);
digitalWrite(led, HIGH);
}
if (asegundostotales == 0) {
digitalWrite(led, LOW);
digitalWrite(rele, LOW);
}
}
}

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Conversor tensión (Level Shifter) 1 año 5 meses antes #2818

Tu while es el siguiente :

while (asegundostotales > 0 && !boton1presionado)

Va funcionar siempre que segundos sea mayor que cero, por que le boton jamas sabras si fue pulsado por que no haces un listen() y como le has dado el valor false, se cunplira siempre.
Tienes que pensarlo de otra forma, para verificar el boton, has de hacer pasar constantemente el programa por listen(), sino, no podras detectar ninguna pulsacion de la pantalla.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Conversor tensión (Level Shifter) 1 año 5 meses antes #2819

Una pregunta, igual es un poco tonta, pero como no tengo ni idea de programación..., ¿cuando se está ejecutando el bucle "while" el void loop se queda bloqueado o sigue funcionando?, es que si te digo la verdad estoy un poco perdido.
¿podrías ponerme un pequeño ejemplo de un sketch con listen()?, la verdad es que no entiendo muy bien como funciona, la lectura de la tecla funciona, solo que no funciona cuando se está ejecutando el bucle, por eso no entiendo como funciona el listen() ni donde lo tengo que colocar. Creía que poniendo la condición de "boton1presionado" dentro del bucle, si no se cumple esa condición se paraba la ejecución del bucle, pero parece que no es así.
Bueno, ya sé que estoy pidiendo demasiado, pero he mirado por internet y ejemplos pero no acabo de entenderlo, si no es mucha molestia te lo agradecería, sino pues nada, te agradezco igualmente que te hayas molestado en contestar.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

  • Página:
  • 1
  • 2
  • 3
Tiempo de carga de la página: 0.094 segundos
Gracias a Foro Kunena