Vídeo: Display de dois dígitos usando matriz única de LED 8x8: 3 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Aqui, gostaria de construir um indicador de temperatura e umidade para meu quarto. Usei um único LED Matrix 8x8 para exibir números de dois dígitos e acho que essa parte do projeto se tornou mais útil. Embalei o final construído usando uma caixa de papelão, pintada como madeira.
Suprimentos
- Arduino Nano x1
- Sensor de Temperatura e Umidade DHT11 x1
- Matriz 8x8 LED com MAX7219 x1
- 10K resistor x1
- Fios de cabeçalho
- Fonte de alimentação 5V x1
- Caixa de papelão (4x8x13 cm)
Etapa 1: Esquemático
O sensor digital de temperatura e umidade DHT11 fornece temperaturas entre 0 - 50 ° C e umidade entre 20% e 90%. A precisão da temperatura é de ± 2 ° C (máximo) e a precisão da umidade é de ± 5%.
O DHT11 também fornece valores de ponto de orvalho. O ponto de orvalho é a temperatura à qual o ar deve ser resfriado para ficar saturado com vapor d'água. Quando ainda mais resfriado, o vapor de água no ar se condensará para formar água líquida.
Etapa 2: Fiação e encaixotamento
Primeiro pintei a caixa de papelão com tinta acrílica e depois de secar por 1 dia acabei com um spray de cabelo. Fiz uma janela quadrada para display de LED na capa. Também abri um pequeno orifício retangular para a fonte de alimentação do Arduino Nano e coloquei vários orifícios perto do sensor DHT11.
Fixei o Arduino no canto da caixa principal usando uma pequena caixa e silicone quente.
Coloquei a matriz de LED na janela usando tiras de fita transparente. Aqui é importante posicioná-lo com uma rotação de 90 ° no sentido anti-horário porque o código usará as 4 linhas superiores para dígitos das dezenas e as 4 linhas inferiores para dígitos unitários. Para o módulo que usei, o lado com MAX7219 deve ficar do lado da base.
Como coloquei o Arduino e o sensor no lado do fechamento da caixa, não consegui fechá-lo totalmente? É melhor você selecionar o outro lado:).
Etapa 3: Código
Primeiro carregue a biblioteca para DHT11 (https://github.com/adidax/dht11) e matriz de LED (https://github.com/wayoda/LedControl) se ainda não o fez.
O código usa as primeiras 4 linhas da matriz de LED como dezenas e as últimas 4 linhas como unidades. Assim, por exemplo, se você verificar o código "um", verá "11" girado 90 ° no sentido horário. Se você quiser alterar esses códigos, tome cuidado com esses detalhes.
byte um = {B00000000, B01000100, B01111100, B01000000, B00000000, B01000100, B01111100, B01000000};
Os códigos para obter os dígitos da leitura do sensor são:
unidades = úmido% 10; dezenas = (úmido / 10)% 10;
Para dezenas de dígitos, o loop for funciona da seguinte forma:
if (dezenas == 1) {para (int c = 0; c <4; c ++) {lc.setRow (0, c, um [c]); }
Para unidades de dígito, o loop for é executado da seguinte forma:
if (unidades == 1) {para (int c = 4; c <8; c ++) {lc.setRow (0, c, um [c]); }
A ordem de exibição está em loop da seguinte forma:
"° C" -> temperatura -> "hum" -> umidade -> "dp" -> ponto de orvalho -> significado do ponto de orvalho (explicado abaixo)
Tenho algumas informações sobre como as pessoas sentem o clima de acordo com o ponto de orvalho e as coloco no código da seguinte maneira:
dp <10: seco
9 <dp <15: bom (g..d)
14 <dp <18: Sueco (sw)
17 <dp <24: Sweltry plus (sw +)
dp> 23: molhado
A tela para essas palavras não é boa, mas ainda assim compreensível para uma única tela 8x8