Necesito un programa para un ESP32 con pantalla tft (ESP32-2432S028).
Tengo hecho un ejemplo simple usando éstas librerias:
#include <TFT_eSPI.h>
#include <XPT2046_Touchscreen.h>
#include <SPI.h>
#include <Preferences.h>
Entonces: Empiezo a explicar que necesito. El ESP32 CYD se usará para mantener el inventario de metros de tela que se usa en nuestro almacén. Como tal, lo conectare a la rueda que arrastra el papel para sumar (o restar metros) de algún modo, yo había pensado dos sensores hall ky-03, pero se aceptan otras sugerencias en cuanto a sensores, siempre que sean mediante un precio asequible.
El programa debe: (inicio)Arrancar y preguntarte en que bobina quieres trabajar, de añadir bobinas y de eliminarlas, así como acceso a los ajustes avanzados.
Si el programa detecta que el sensor está en funcionamiento, es que el usuario no ha seleccionado la bobina. Así que pasamos a un modo (Inicio sin selección) "special" bobina sin identificar que siempre empieza a 0. Seguimos logueando los datos y dejamos un gran boton para "añadir" valores a una bobina), si pulsamos ahí, suma o resta según el resultado a la bobina seleccionada y nos lleva al menú de dicha bobina habiéndo hecho las operaciones de suma o resta y listos para seguir logueando la distancia.
Desde esa pantalla (bobina) nos sale el logo de la marca, Duston, un "volver al menú" y algo apartada y en rojo RESET -> Si lo mantenemos 5 segundos... Resetea la bobina a su valor de metros por defecto (500 por ejempl)
Así mismo, nos da información sobre en que bobina estamos trabajando "AM260" y los metros gastados en su último uso. )
Cerca de un display donde se marcan los metros restantes (3240 x ejemplo) es importante que se vean bien y resaltados, es la parte mas importante de la pantalla. SI estàn a menos de 200, poner el fondo rojo del botón o algo para resaltar que estamos cerca del final. Al lado tendremos botones algo grandes para sumar o restar 1m cada vez.
Si volvemos al menu de inicio y nos desplazamos a borrar bobina, nos lleva a una pantala de selección (Borrar) donde marcar la bobina y darle a borrar y recibir un popup confirmando la seleción (5 segundos manteniendo si antes de ejecutar la acción. Al acabar, ir a inicio.
Desde inicio, otro apartado es (añadir): Donde podemos poner el nombre de la bobina y los metros por defecto de dicha bobina (lo que saldría despues de un reset)
No necesitaría un teclado en si (aunque me imagino que hay librerías para ello, pero con números y las letras A N M S T X E P F D A haría) lo que quieras
Si vamos al menu de opciones avanzadas, quiero aprovechar las posibilidades del esp32 para crear un pequeño servidor web al que poder acceder para editar un archivo de texto, por ejemplo para añadir bobinas desde ahí o exportar los datos globales de uso. Me gustaría un pequeño registro a modo de log de X día se gastaron 200m de la bobina AM260, Al día siguiente 10m de la AT180, quedan 490.. Y así. Así mismo, es posible que sea el lugar mas cómodo donde poner variables que son importantes que sean fáciles de cambiar como:
1 revolution : 0,33m
O... Añadir una bobina en plan
N: AT180 M: 600
Se agradecen ideas o cambios de mentalidad, como por ejemplo usar otro tipo de sensor si se cree que será mas beneficioso. >
Será parte del proyecto ayudarme a montarlo y verificar que todo funciona según lo estipulado.
Sobre el sensor, ahora mismo la idea es coger los giros de uno de los engranajes con un imán y añadir una conversión interna en plan 1 revolution : 0,3m (habría que calibrarlo)
Y estos pines son para el sensor ( KY-003 ) y la pantalla táctil:
// Pines
#define HALL_SENSOR_PIN 22
#define TOUCH_CS 33
#define TOUCH_IRQ 36
Hay que añadir un debounce al sensor hall KY-003 y lógica de histéresis (Variable counted: Introduce una variable counted que indica si se ha contado una interrupción. Esto asegura que solo se cuente una vez mientras el imán está en el rango del sensor.
Lógica de Histeresis: Dentro de la función onHallSensor, se actualiza counted a true después de contar un pulso. Esto evita que se cuenten múltiples pulsos hasta que el sensor vuelva a su estado original.)
Necesitaré un define para CM_PER_REVOLUTION (Empezaremos por 10 como ejemplo)
Y éstos son los datos de la pantalla para el tácil
p.x = map(p.x, 200, 3800, 0,
tft.width());
p.y = map(p.y, 300, 3900, 0,
tft.height());
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/DisplayConfig/CYD2USB
Puedo proporcionar un código de ejemplo para que se entienda mejor la idea, y un vídeo con una versión muy temprana de la idea.
Delivery term: Not specified