Adventskalender auf dem AZ-Touch - AZ-Delivery

En el blog de hoy queremos programar el módulo AZ-Touch para que pueda usarse como calendario de Adviento con dichos o chistes diarios para hacer más variada tu época prenavideña.

En este caso, el contenido detrás de cada “puerta” no es chocolate, pero usted puede personalizarlo si desea crear un calendario de Adviento personal.

Ferretería

Todo lo que necesitas es:


 un Conjunto táctil AZ (se recomienda 2,8”)

y un ESP32 DevKit C

 

Para poder implementar con éxito el proyecto, ahora sólo necesita utilizar el AZ-Touch, como en la Instrucciones descrito, monte y conecte la placa del microcontrolador en las regletas de enchufes.

 

programas

El calendario de Adviento debería mostrar primero el número de la puerta y luego el texto almacenado después de tocar la pantalla.
desde el ESP32 Cuarto de baño 32 acerca de 4MB Si dispone de memoria flash, los 24 textos se pueden almacenar directamente en el programa.

 

Conductor

Si es la primera vez que programa un ESP32 en el IDE de Arduino, copie el siguiente enlace en el IDE de Arduino en:
Archivo->Preferencias->URL del administrador de tableros adicionales:  https://dl.espressif.com/dl/package_esp32_index.json

e instalar el paquete ESP32 en la administración de la placa.

 

El controlador (CP2102) para esta placa ya está instalado en el sistema operativo.

Bibliotecas

A continuación se deben instalar las librerías requeridas:

TFTeSPI Se requiere para controlar la pantalla.

Cliente NTP siempre entrega la fecha actual a través de un servidor ntp.

 

Las bibliotecas se pueden descargar como .zip usando los enlaces anteriores y agregarlas en el IDE de Arduino en Sketch>Include Library>Add .ZIP Library…. Alternativamente, esto se puede hacer fácilmente usando el administrador de biblioteca integrado en el IDE de Arduino.

 

Código

Luego viene la programación paso a paso del microcontrolador.

Para empezar necesitamos un programa que muestre el número de la puerta actual en el centro de la pantalla.

 

Para que la biblioteca pueda comunicarse con la pantalla, es necesaria una configuración en la biblioteca.
La biblioteca TFTeSPI tiene la característica especial de que toda la configuración se realiza en un solo archivo. Este archivo UserSetup.h debe tener la siguiente configuración para el AZ-Touch Set:

#define USER_SETUP_INFO "User_Setup"

#
define ILI9341_DRIVER       // Generic driver for common displays

#
define TFT_RGB_ORDER TFT_BGR  // Colour order Blue-Green-Red

#
define TFT_WIDTH  320
#
define TFT_HEIGHT 240

#
define TFT_MISO 19
#
define TFT_MOSI 23
#
define TFT_SCLK 18
#
define TFT_CS   5  // Chip select control pin
#
define TFT_DC    4  // Data Command control pin
#
define TFT_RST  22

#
define TFT_BL   15            // LED back-light control pin
#
define TFT_BACKLIGHT_ON LOW  // Level to turn ON back-light (HIGH or LOW)

#
define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#
define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes
#
define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.

#define SPI_FREQUENCY  27000000

 

Para no tener que copiar el contenido por completo, también puedes aquí descargar.

 

Ahora al método real, que debería mostrar el número en el medio de la pantalla:

(En los siguientes extractos de ejemplo, faltan la integración de la biblioteca y la creación de objetos a través del constructor. Se han omitido para mayor claridad. ¡Utilice el programa final para realizar pruebas!)

void showNumber(int number) {
  
String NumberS = (String) number;

  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_RED);
  tft.setTextFont(
8);

  
int x = (tft.width()/2) - (tft.textWidth(NumberS, 8)/2);
  
int y = (tft.height()/2) - (75/2);
  tft.
setCursor(x, y);
  tft.
println(NumberS);
}

Explicación:
Al principio, el número pasado al programa se convierte en una cadena de caracteres (cuerda) convertido (fundición).

Luego se prepara la pantalla configurando los píxeles en negro, el color de fuente en rojo y la fuente en 8.

Luego se calculan las coordenadas. La coordenada X se compone de la diferencia entre la mitad del ancho de visualización y la mitad del ancho del texto. La posición y se describe por la diferencia entre la mitad de la altura de la pantalla y la mitad de la altura de la fuente.

Finalmente, el número se coloca en la posición calculada mediante el imprimirln() comando mostrado.

 

El número de puerta ahora se puede mostrar en tamaño grande en la pantalla. A continuación queremos determinar la fecha a través del programa para poder mostrar siempre la puerta actual.
Un módulo RTC ofrece una opción muy extendida en este caso. Sin embargo, estos deben configurarse manualmente mediante el software y pueden mostrar imprecisiones después de un tiempo.
Dado que utilizamos un ESP32 en el proyecto, la función WLAN se puede utilizar fácilmente para consultar la hora y fecha actuales a través del llamado servidor NTP. Este Servidor de protocolo de hora de red se basan en relojes de tiempo real, como los relojes atómicos.
Para la consulta simplificada el Cliente NTP Se puede utilizar la biblioteca.

int day, mon;
void getDate() {
  timeClient.update();
  
time_t Time = timeClient.getEpochTime();
  
struct tm *ptm = gmtime ((time_t *)&Time);
  day = ptm->tm_mday;
  mon = ptm->tm_mon+
1;
}

Explicación:

Primero, el servidor actualiza la hora. después esto tiempo Objeto leído e insertado estructura convertido.

Luego, el día y el mes se leen de esta estructura y se almacenan en las variables globales correspondientes.

 

ahora ellos siguen configuración() función y el bucle() Rutina:

void setup() {
  
Serial.begin(115200);
  
pinMode(TFT_BL, OUTPUT);
  
digitalWrite(TFT_BL, TFT_BACKLIGHT_ON);
  tft.init();
  tft.setRotation(
1);
  tft.fillScreen(TFT_BLACK);
 
  
Serial.println("Connecting...");
  
WiFi.begin(ssid, password);
  
while (WiFi.status() != WL_CONNECTED) {
    
delay(1000);
    
Serial.print(".");
    
if(millis() > 10000) ESP.restart();
  }

  timeClient.
begin();
}

void loop() {
  
if(!debug) getDate();
  
if(day != currDay) {
    currDay = day;
    tft.fillScreen(TFT_BLACK);
    
if(mon != 12) {
      tft.setTextFont(
4);
      tft.setTextColor(TFT_GREEN);
      tft.
setCursor(1050);
      tft.
println("Die Adventszeit beginnt in:");
      tft.setTextColor(TFT_ORANGE);
      tft.
setCursor(140100);
      tft.
println(12-mon);
      tft.setTextColor(TFT_GREEN);
      tft.
setCursor(90150);
      tft.
println("Monaten!");
    }
    
else {
      
if(day > 0 && day <= 24) {
        showNumber(day);
        
while(digitalRead(27)) {
        }
        tft.fillScreen(TFT_BLACK);
        tft.setTextFont(
4);
        tft.setTextColor(TFT_ORANGE);
        tft.
setCursor(0,10);
        tft.
println(content[day]);
      }
      
else {
        tft.setTextColor(TFT_GREEN);
        tft.setTextFont(
4);
        tft.
setCursor(10100);
        tft.
println("Die Adventszeit ist zuende.");
      }
     
    }
  }
 
  
delay(5000);
}

Explicación:
en configuración() la inicialización tiene lugar interfaz serie, des Pantallas, des Wi-Fi y des tiempoClientes (PNT).

en el bucle() Como rutina, primero se consulta la fecha y, según la distinción de casos, se muestra una cuenta regresiva para el Adviento o, si el mes corresponde a diciembre y el día está entre 1 y 24, se muestra el número de puerta correspondiente. mostrarNúmero() Función.
La pantalla táctil tiene un pin de interrupción, que cambia a BAJO cuando se presiona. Esto significa que se puede tocar la pantalla fácilmente con uno sin software adicional. lectura digital() Se puede consultar la consulta.
Después de tocar, el contenido en la pantalla será el texto de una matriz Elementos de cadena completado. Para poder visualizar textos más largos, el punto inicial se ha fijado en 0:0, es decir, la esquina superior izquierda. El salto de línea continúa automáticamente en la siguiente línea.

 

Puedes hacer todo el proyecto. aquí descargar.

Para cargarlo en el microcontrolador, en el IDE de Arduino seleccione:
Herramientas > Placa > esp32 > Módulos de desarrollo ESP32

y luego el correcto puerto serie.

Si aparecen varios puertos, desconecte el microcontrolador y vuelva a conectarlo, el nuevo puerto que aparece es el del microcontrolador.

 

Para usuarios avanzados:
¿Puedes preinstalar el generador de señales en el AZ-Touch para reproducir música navideña mientras esperas que se toque una pantalla?

 

CONSEJO: Úsalos Comandos de tono al pin 21. [tono(21, 1000, 100);]

            Para melodías complejas el Biblioteca pequeñaRTTTL una solución sencilla.

 

Conclusión:

En este proyecto, creó un calendario de Adviento a partir de un módulo AZ-Touch, que puede mostrarle dichos navideños, chistes o textos personalizados todos los días.
¡Ahora es el momento de recopilar contenido para cada día!

 

Por supuesto, todavía tienes posibilidades de realizar cambios creativos en el software, ¡lo que hará que el calendario de Adviento sea aún más personal! :)

 

Diviértete replicándolo :)

DisplaysEsp32Projekte für anfänger

Deja un comentario

Todos los comentarios son moderados antes de ser publicados