A pouco tempo atrás, publicamos um post mostrando como conectar um display oled na Digispark Attiny85. O post de hoje vai ser um post no estilo “2 em 1”: vamos mostrar como usar a Digispark com display LCD 16×2 I2C, e também como mostrar nesse display as informações de temperatura e umidade usando um sensor de temperatura DHT11.
O uso do display LCD 16×2 I2C com a Digispark permite mostrar de maneira simples informações como temperatura, contadores e mensagens de aviso sem grandes recursos gráficos, consequentemente economizando a memória do microcontrolador.
Conexão do DHT11 e LCD 16×2 I2C
Para conectar o sensor e o display na Digispark, vamos rever a pinagem do módulo, observando que vamos precisar da interface I2C (destacada em verde na imagem abaixo), que está nos pinos D0 (SDA) e D2 (SCL) para conectar o display LCD 16×2 I2C:
Já o sensor de temperatura e umidade DHT11 será conectado na porta digital 1 (D1).
Usaremos uma mini protoboard para realizar as conexões, e o nosso circuito fica assim:
Você pode usar tanto a Digispark com conector micro USB quanto o modelo que você liga direto na porta USB. O esquema de conexão é o mesmo.
Programa Digispark com DHT11 e display LCD 16×2 I2C
Para usar a Digispark com o display LCD 16×2 I2C, vamos usar a biblioteca TinyWireM. Essa biblioteca é instalada quando você adiciona a Digispark na IDE do Arduino (para ver como usar a Digispark ATtiny85 com a IDE, instalação de drivers e exemplo básico, acesse este post).
O DHT11 será usado com a biblioteca TinyDHT,uma biblioteca otimizada pra uso com esse tipo de microcontrolador e está disponível para instalação na própria IDE do Arduino.
Para instalar, acesse o menu Sketch -> Instalar biblioteca -> Gerenciar Bibliotecas e procure por TinyDHT:
A leitura da temperatura e umidade é feita à cada 5 segundos. Não se esqueça de desconectar a Digispark do seu computador ao compilar o programa. Reconecte apenas quando solicitado pela IDE (Plug in Device Now, ou Conecte o dispositivo agora):
Vamos então ao programa, lembrando que você deve colocar, na linha 16, o endereço I2C do display que vc está usando (os endereços mais comuns são 0x27 e 0x3F):
//Programa: Digispark com DHT11 e display LCD 16x2 I2C //Autor: Arduino e Cia //I2C Master lib para ATTiny #include <TinyWireM.h> #include <LiquidCrystal_I2C.h> #include <TinyDHT.h> //Define o tipo do sensor DHT #define DHTTYPE DHT11 //Sensor conectado no pino 1 Digispark #define DHTPIN 1 //Endereco I2C do display LCD 16x2 #define END_DISP 0x27 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(END_DISP, 16, 2); void setup() { //Inicializa a biblioteca I2C TinyWireM.begin(); //Inicializa o LCD lcd.init(); //Inicializa o DHT22 dht.begin(); lcd.backlight(); } void loop() { //Leitura da umidade int8_t h = dht.readHumidity(); //Leitura da temperatura: Use 0 para //Celsius, 1 para Fahrenheit int16_t t = dht.readTemperature(0); //Verifica se o sensor esta respondendo if ( t == BAD_TEMP || h == BAD_HUM ) { lcd.clear(); lcd.print("Erro sensor!"); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp.: C"); lcd.setCursor(7, 0); lcd.print(t); lcd.setCursor(0, 1); lcd.print("Umid.: %"); lcd.setCursor(7, 1); lcd.print(h); } delay(5000); }
Após o carregamento, aguarde alguns segundos e a sua Digispark irá mostrar as informações de temperatura e umidade no display.
Gostou? Então confira outros posts usando Digispark ATtiny85 aqui mesmo no Arduino e Cia!