fbpixel
Etiquetas: , , , ,
0
(0)

O ecrã Nextion é uma das melhores soluções para criar uma interface gráfica para controlar o seu projeto Arduino. A interface mais conhecida para interagir com um Arduino é o ecrã LCD com alguns botões e potenciómetros à custa de E/S e de sobrecarga de código Arduino. Neste tutorial, veremos como configurar um ecrã Nextion e como utilizá-lo com o Arduino.

Hardware

  • Arduino (ou outra placa com porta UART)
  • Ecrã Nextion
  • Adaptador USB-TTL 5V
  • 4x fio Dupont com conetor JST

Apresentação do cartão Nextion

A interface básica para controlar um Arduino, e presente em todos os kits, é o ecrã LCD com alguns botões e potenciómetros, que existe sob a forma de um LCD Shield. Existem também Shields com ecrãs tácteis, mas estes utilizam todas as E/S do Arduino e sobrecarregam o código do Arduino. Uma solução é utilizar um ecrã Nextion, que contém o seu próprio programa e comunica com qualquer microcontrolador através da porta série.

N.B.: É possível criar uma interface gráfica num PC ou criar uma interface Web para controlar o projeto, adicionando um módulo de comunicação sem fios.

Instalação e apresentação do editor Nextion

Descarregar e instalar o editor Nextion

Quando abre um novo projeto ou ficheiro, o software pede-lhe o modelo de ecrã (no nosso caso, NX4832K035_011). Pode alterar a seleção no menu Dispositivo>Definições.

Em seguida, escolha a orientação do ecrã e a codificação.

Criar uma interface gráfica

Vamos utilizar o editor gráfico Nextion para criar a nossa interface gráfica. Neste exemplo, vamos adicionar:

  • Uma imagem
  • Alguns textos para o título ou para apresentar dados
  • Um botão que altera a interface
  • Um botão que envia um comando para a porta série
  • Um temporizador que actualiza a interface
  • Uma variável que armazena os dados recebidos da porta série

Para adicionar um objeto, clique no objeto pretendido na janela Caixa de ferramentas e o objeto será automaticamente inserido na janela Mostrar. Pode então configurar o objeto na janela Atributos

Pode descarregar o ficheiro GUI para o importar para o Editor Nextion. Com este exemplo, será capaz de criar interfaces muito mais complexas.

Adicionar uma imagem

Para adicionar uma imagem, comece por importá-la para o software utilizando o botão (+) na janela “Imagem”.

Pode então inserir um objeto Imagem na janela de visualização e selecionar a imagem premindo o atributo pic > procurar….

N.B.: Adicionar uma imagemaux dimensions désirées

Adicionar texto

Antes de adicionar um objeto de texto, é necessário gerar um tipo de letra. Isto pode ser feito em Ferramentas> Gerar tipo de letra

Quando o tipo de letra tiver sido gerado, pode seleccioná-lo no atributo font do objeto Text. Pode então modificar o texto no atributo txt (tenha em atenção o número máximo de caracteres txt_maxl).

Estamos a adicionar quatro objectos de texto:

  • A etiqueta do título
  • o estado do LED
  • a etiqueta “Analog Val
  • o valor analógico recebido do microcontrolador

Adicionar um botão

Depois de o objeto botão ter sido adicionado à interface, pode ajustar os seus atributos:

  • o texto apresentado
  • a cor quando o botão é premido
  • a cor quando libertada

Na janela Eventos, pode programar o que o ecrã fará quando o botão for premido ou libertado. Há uma série de instruções que pode utilizar nestas janelas. Estas incluem

  • Modificar elementos da interface (por exemplo, t0.txt=”Pressionado”)
  • Enviar identificador de botão através da porta série
  • Envoyer une autre commande avec prints
  • Botão b0
  • Botão b1

No separador Touch Release Event, escrevemos o seguinte comando, que é um comando predefinido da biblioteca Nextion e corresponde a trigger1()

printh 23 02 54 01
  • Botão b2

Para o botão b2, utilizamos o mesmo comando, mas para trigger2()

printh 23 02 54 02

Adicionar um temporizador

O objeto Timer pode ser utilizado para executar código numa base regular. É particularmente útil para obter dados da porta série e atualizar a interface.

No separador Evento do temporizador, utilizamos a função covx para converter o valor da variável numa cadeia de caracteres e escrevê-la no texto t4

covx analog0.val,t4.txt,0,0

Carregar o programa no ecrã Nextion

Ligar o cartão Nextion ao conversor USB-TTL

Para carregar a interface, prima Compilar e depois Carregar

Ligar o ecrã Nextion ao microcontrolador Arduino

Para descarregar o código Arduino para a placa, os pinos RX e TX devem ser desligados do ecrã.

Usando a biblioteca Nextion.h

Existem várias bibliotecas que podem ser utilizadas para gerir um ecrã Nextion

Utilizamos o EasyNextion

No Editor Nextion, definimos um evento de libertação “printh 23 02 54 01” para o botão ON e um evento de libertação “printh 23 02 54 02” para o botão Off.

Utilizando a função NextionListen(), estes comandos activam as funções trigger1 e trigger2.

#include "EasyNextionLibrary.h"

#define baudrate 9600

EasyNex myNex(Serial);

//Variables
uint16_t analog;
bool ledstate;

const int REFRESH_TIME = 100;
unsigned long refresh_timer = millis();

void setup() {
  myNex.begin(baudrate);

  pinMode(A0, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  myNex.NextionListen();

  if ((millis() - refresh_timer) > REFRESH_TIME) {
    analog = analogRead(A0);
    myNex.writeNum("analog0.val", analog);

    refresh_timer = millis();
  }
}

//`printh 23 02 54 XX` , where `XX` the id for the triggerXX() in HEX.
void trigger1() {
  digitalWrite(LED_BUILTIN, HIGH);
  myNex.writeStr("t2.txt", "LED ON");
}

void trigger2() {
  digitalWrite(LED_BUILTIN, LOW);
  myNex.writeStr("t2.txt", "LED OFF");
}

Resultados

Bónus: Simulador do editor Nextion

A Nextion propõe um simulador para testar as interacções entre o ecrã, o microcontrolador e a interface gráfica. Este simulador pode ser acedido clicando em “Debug”.

Fontes


How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?