Arduino, Internet das Coisas e Computação vestível

[Voltar]

[Avançar]

Display Oled 0,96 128x64 (Branco)

Descrição

O Módulo possui tela com tecnologia OLED, interface I2C, 0,96 polegadas com letras brancas, resolução de 128x64 pixels. Devido as suas características gráficas e o seu consumo baixo de energia, é muito utilizado em projetos em que o display deve ficar ligado durante muito tempo

Caracteristicas:

  • Tensão de operação: 3,3-6V
  • Controlador: SSD1306
  • Cor LED: branca
  • Dimensões: 30 x 27mm

Pinagem:

  • GND: GND
  • VCC: 2,2-5,5V
  • SCL: Clock
  • SDA: Dados

Biblioteca:

Para programar o display utilize as biliotecas Adafruit_GFX_Library e Adafruit_SSD1306 listadas abaixo:

Observação
Por padrão, a biblioteca SSD1306 vem com 128×32 definido. É necessário alterar uma linha no arquivo “Adafruit_SSD1306.h”, que se encontra dentro da pasta da biblioteca. Procure pela definição do tamanho do display, próximo a linha 70, e comente a linha do display que esta definida por padrão e remova o comentário da linha respectiva ao display 128×64.

Lista de fontes que suportam alinhamento a direita:

  • FreeMono9pt7b.h
  • FreeMono12pt7b.h
  • FreeMono18pt7b.h
  • FreeMono24pt7b.h
  • FreeMonoBold9pt7b.h
  • FreeMonoBold12pt7b.h
  • FreeMonoBold18pt7b.h
  • FreeMonoBold24pt7b.h
  • FreeMonoBoldOblique9pt7b.h
  • FreeMonoBoldOblique12pt7b.h
  • FreeMonoBoldOblique18pt7b.h
  • FreeMonoBoldOblique24pt7b.h
  • FreeMonoOblique9pt7b.h
  • FreeMonoOblique12pt7b.h
  • FreeMonoOblique18pt7b.h
  • FreeMonoOblique24pt7b.h

Usando fontes => https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts


Projeto(s) relacionado(s)


Desenhando na Tela OLED 0,96" I2C

O projeto utiliza Arduino Uno R3 e Display Oled 0,96 128x64 para explorar os recursos gráficos das bibliotecas "Adafruit_GFX.h" e "Adafruit_SSD1306.h".

// Projeto: Desenhando na Tela OLED 0,96" I2C 
// Autor: André Silveira
// Data: 14/06/2019 

#include "Adafruit_GFX.h"              				// Biblioteca para processamento gráfica
#include "Adafruit_SSD1306.h"         				// Biblioteca do controlador SSD1306 (128x64 e 128x32)

Adafruit_SSD1306 display(128, 64);           			// Cria objeto display

#include "Fonts/FreeMonoBold12pt7b.h"     			// Adiciona fonte
#include "Fonts/FreeMono9pt7b.h"             			// Adiciona fonte

int Contador;                                   	      			// Cria uma variável dinâmica 

void setup() {                

  delay(100);                                 
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);   	// Inicializa a tela com endereço I2C 0x3C
  display.clearDisplay();                      			// Limpa a tela 
  display.setTextColor(WHITE);                 			// Define cor do texto
  display.setRotation(0);                      			// Configura orientação 0, 1, 2 ou 3

/* Por padrão, linhas longas de texto são definidas para "quebrar" automaticamente na coluna mais à esquerda.
   Para substituir esse comportamento, útil em efeitos de seleção de rolagem, use setTextWrap (false). 
   O comportamento normal de quebra automática é restaurado  */   
  
  display.setTextWrap(false);   
  display.dim(0);                              				// Define brilho (0 é máximo e 1 é um pouco escuro)

}  

void loop()  {

  Contador = Contador + 1;                    			// Incrementa variável em 1
  if (Contador > 150)  {
      Contador = 0;  
  }

/* Cria uma matriz de 10 caracteres para converte Contador float em uma string para alinhar o texto à direita */
  char string[10];                           
  dtostrf(Contador, 3, 0, string);          			// (<variável>,<dígitos usados>,<dígitos decimais>,<nome da string>)
   
  display.clearDisplay();                   				// Limpa a tela 
  display.setFont(&FreeMono9pt7b);          			// Define uma fonte  
  display.setTextSize(0);                   				// Define o tamanho da fonte (Personalizada é 0) 
  
/* ------ Imprime texto ------ */ 
  display.setCursor(0, 10);                 				// Define posição para escrever na tela (x,y) 
  display.println("Ola!!");                   

/* ------ Desenha um triângulo ------ */ 
  display.drawTriangle(35,45,45,25,55,45, WHITE);  	// Draw triangle (X, Y dos 3 vértices do triângulo e após cor) 
  
/* ------ Desenha um triângulo preenchido ------ */ 
  display.fillTriangle(0,63,15,45,30,63, WHITE);  		// Draw Fill triangle (X, Y dos 3 vértices do triângulo e após cor) 

/* ------ Desenha uma linha ------ */ 
  display.drawLine(40,63,70,63, WHITE);           		// Draw line (x0,y0,x1,y1,color) 

/* ------ Desenha um circulo ------ */ 
  display.drawCircle(47,36,20,WHITE);             		// Draw circle (x,y,radius,color). X e Y centro do circulo 

/* ------ Desenha um circulo preenchido ------ */ 
  display.fillCircle(12, 27, 10, WHITE);          		// Draw filled circle (x,y,radius,color). X e Y centro do circulo 

/* ------ Desenha um retângulo com bordas arredondadas e com preenchimento ------ */ 
  display.fillRoundRect(58, 0, 18, 18, 5, WHITE); 		// Draw filled rounded rectangle (x,y,width,height,color) 
                                                   
/* ------ Desenha um retângulo ------ */ 
  display.drawRect(79, 0, 49, 27, WHITE);         		// Draw rectangle (x,y,width,height,color) 

/* ------ Imprime variavel com alinhamento a esquerda ------ */ 
  display.setFont(&FreeMonoBold12pt7b);           		// Configura a Fonte 
  display.setCursor(83, 20);                      			// Define posição para escrever na tela (x,y) 
  display.println(Contador);                      			// Valor impresso 

/* ------ Desenha retangulo com cantos arredondados ------ */ 
  display.drawRoundRect(79, 37, 49, 27, 8, WHITE); 	// Draw rounded rectangle (x,y,width,height,radius,color) 

/* ------ Imprime variavel com alinhamento a direita ------ */ 
  display.setCursor(83, 57);                      			// Define posição para escrever na tela (x,y) 
  display.println(string);                        			// Valor impresso 
  display.display();                              			// Imprime tudo que foi setado acima 
  delay(1500);                                    			// Aguarda intervalo de 1,5 segundos  

} 


Projeto acelerômetro e giroscópio

O projeto utiliza um Arduino Uno R3, Display Oled 0,96 128x64 e Módulo Acelerômetro e Giroscópio MPU-6050 para informar valores referentes a posição espacial do sensor. Este é um bom exemplo de como usar conjuntamente a tela OLED 128x64 "I2C" no endereço "0x3C" e o Giroscópio MPU-6050 "I2C" no endereço "0x68". O I2C é um protocolo de comunicação que visa conectar diversos dispositivos (periféricos) utilizando as linhas de dados Serial Data (SDA) e Serial Clock (SCL) . A ideia é definir um endereço hexadecimal para cada dispositivo conectado e no momento de comunicação somente o dispositivo solicitado responderá.

// Projeto: acelerômetro e giroscópio 
// Autor: André Silveira
// Data: 14/06/2019

#include "Adafruit_GFX.h"                      			// Biblioteca para processamento gráfico
#include "Adafruit_SSD1306.h"                 			// Biblioteca do controlador SSD1306
#include "GY6050.h"                           			// Biblioteca do Acelerometro e Giroscópio

/* ---  Variaveis globais --- */
float acelX, acelY, acelZ;
float giroX, giroY, giroZ;
float tempCelsius, tempFarenheit; 
char string[10];
 
GY6050 gyro(0x68);                        				// Cria um objeto gyro com endereço I2C "0x68"
Adafruit_SSD1306 display(128, 64);                		// Cria objeto display

void setup() {                

      delay(100);                                 
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);    // Inicializa a tela com endereço I2C "0x3C"
      display.clearDisplay();                           		// Limpa a tela 
      display.setTextColor(WHITE);                      		// Define cor do texto
      display.setRotation(0);                           		// Configura orientação 0, 1, 2 ou 3
      display.setTextWrap(false);   
      display.setTextSize(1);                           		// Define tamanho da fonte do texto
      display.dim(0);                                   			// Define brilho (0 é máximo)
      gyro.initialisation();						// Inicializa giroscópio

}  

void loop()  {

/* --- Obtem dados do sensor --- */
    
      acelX = gyro.refresh('A', 'X');           			// Obtém o eixo "X" do Acelerometro
      acelY = gyro.refresh('A', 'Y');           			// Obtém o eixo "Y" do Acelerometro
      acelZ = gyro.refresh('A', 'Z');           			// Obtém o eixo "Z" do Acelerometro
      
      tempCelsius = gyro.refresh('T', 'C');     			// Obtém a temperatura em Graus Celsius
      tempFarenheit = gyro.refresh('T', 'F');   		// Obtém a temperatura em Farenheit 
    
      giroX = gyro.refresh('G', 'X');           			// Obtém o eixo "X" do Giroscópio
      giroY = gyro.refresh('G', 'Y');           			// Obtém o eixo "Y" do Giroscópio
      giroZ = gyro.refresh('G', 'Z');           			// Obtém o eixo "Z" do Giroscópio                       
    
/* --- Desenha dados na tela do acelerometro --- */
    
      display.clearDisplay();                            
      display.drawRoundRect(20,0,40,54,4, WHITE);       
      display.drawLine(20,16,60,16, WHITE);              
        
      display.setCursor(28,6);                         
      display.println("Acel");  
    
      display.setCursor(32,22);          
      dtostrf(acelX, 3, 0, string);               
      display.println(string);    
    
      display.setCursor(32,32);          
      dtostrf(acelY, 3, 0, string);               
      display.println(string);       
      
      display.setCursor(32,42);          
      dtostrf(acelZ, 3, 0, string);               
      display.println(string);  
     
/* --- Desenha dados na tela do giroscópio --- */
    
      display.drawRoundRect(64,0,40,54,4, WHITE);       
      display.drawLine(64,16,104,16, WHITE);             
      
      display.setCursor(72,6);                         
      display.println("Gyro");  
    
      display.setCursor(76,22);          
      dtostrf(giroX, 3, 0, string);               
      display.println(string);
    
      display.setCursor(76,32);          
      dtostrf(giroY, 3, 0, string);               
      display.println(string);
    
      display.setCursor(76,42);          
      dtostrf(giroZ, 3, 0, string);               
      display.println(string);        
       
      display.display();                                    
      delay(1500);                                          

} 







Servidor Web para uma estação Metereológica

O projeto usa WeMos D1 Wifi ESP8266 ou ESP8266 NodeMCU, Módulo Sensor DHT11 e Display Oled 0,96 128x64 para informar a temperatura e umidade através de IP da Internet (Servidor Web) em uma relação Servidor/Cliente. Quanto utilizar a placa WeMos D1 Wifi ESP8266 configurar a placa no Arduino IDE como WebMos D1 R1. Quanto utilizar a placa ESP8266 NodeMCU configurar  a placa no Arduino IDE como NodeMCU 0.9 (ESP-12 Module).

O que é um Servidor Web?
Um computador responsável por fornecer e receber dados dos diversos clientes, atuando como centralizador de informação na Rede. Para tanto, utiliza um conjunto de protocolos de comunicação entre computadores chamado de TCP/IP (Protocolo de controle de transmissão): TCP (Transmission Control Protocol) e IP (Internet Protocol).

A relação Servidor/Cliente
A relação entre os computadores que hospedam sites (Servidores) e os navegadores que utilizamos em nossos computadores ou celulares (Clientes) é chamada de Servidor/Cliente. Neste tipo de relação, utiliza-se o procotolo o HTTP (Hypertext Transfer Protocol) para estabelecer a comunicação. Ele é responsável pelo tratamento dos pedidos e respostas entre cliente e servidor na World Wide Web. Nesse contexto, chamamos os servidores de Servidores Web.

/* 
Programa: Servidor Web para uma estação Metereológica com sensor DHT11 
Autor: André Luis Marques da Silveira
Data: 22/09/2019
*/

#include "Wire.h"                                   		//  Biblioteca para enviar e receber dados TWI/I2C 
#include "Adafruit_GFX.h"                           	//  Biblioteca para processamento gráfico
#include "Adafruit_SSD1306.h"                          //  Biblioteca do controlador SSD1306
#include "ESP8266WiFi.h"

#include <DHT.h>
#define DHTPIN D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

Adafruit_SSD1306 display(128, 64);                    // Cria objeto display

const char* ssid      = "NOME DO SERVIDOR";
const char* password  = "SENHA DO SERVIDOR"; 
int porta = 80;

//  --- Caso ocorra problemas com a porta 80, utilize 8082 ou 8089 ---- //
//  --- A chamada, por exemplo fica: http://192.168.0.15:8082  ---- //

WiFiServer server(porta);                                

void setup() {

  //  --- Inicializa Sensor DHT11 ---- //  
  
      dht.begin();                                      			// Inicializa biblioteca WIRE
      Wire.begin();                                     			// Inicializa biblioteca sensor DHT11
      pinMode(DHTPIN, INPUT);                            	// Define pino do Sensor DHT11 

  //  ---- Inicializa tela Oled ---- //  
 
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);    // Inicializa a tela com endereço I2C "0x3C"
      display.setTextColor(WHITE);                      		//  Define cor do texto
      display.setRotation(0);                           		//  Configura orientação
      display.setTextWrap(false);   
      display.setTextSize(1);                           		//  Define tamanho da fonte do texto
      display.dim(0);                                   			//  Define brilho (0 é máximo)
      display.clearDisplay();                           		//  Limpa a tela 
      display.drawRect(0,0,128,15,WHITE);               	//  Posição (x0,y0,x1,y1)
      display.setCursor(4,4);                          		//  Posição do cursor na tela
      display.print("Rede:");                           		//  Escreve texto no display
      display.println(ssid);                            			//  Escreve no da Rede Wifi
      display.display();                                			// Mostra texto no display

 // ---- Inicializa serial ---- //

      Serial.begin(9600); 
      Serial.print("Conectando a rede Wifi ");          
      Serial.println(ssid);                               		// Escreve nome da Rede Wifi na Serial
        
  // --- Conecta Rede Wifi ---- //  

      int a = 0;    
      WiFi.begin(ssid, password);                      		// Passa parâmetros para fazer conexão com a Rede sem fio     
      while (WiFi.status() != WL_CONNECTED) {           	// Testa status da conexão
             a = a + 1;
             if (a < 60) {
                 Serial.print(".");
             } else {
                     Serial.println(".");
                     a = 0;
                    }
             delay(100);        
      }

      Serial.println("Conectado a rede");        
      Serial.println("");                               
      Serial.println("Servidor iniciado");              

  // ---- Inicia Servidor Web para receber dados em "WiFiServer server(porta)" ---- //     
 
      server.begin();                                   

  // ---- Escreve na serial o IP recebido da rede sem fio (AUTOMÁTICO) ---- //
       
      Serial.print("IP para se conectar ao NodeMCU: "); 
      Serial.print("http://");                          
      Serial.println(WiFi.localIP());                   
      
  // ---- Escreve na tela Oled o IP recebido da rede sem fio (AUTOMÁTICO) ---- //
       
      display.setCursor(0,25);
      display.print("IP:");
      display.print(WiFi.localIP());
      display.print(":");
      display.println(porta);   
      display.display(); 
}

void loop() {

      WiFiClient client = server.available();           		// Verifica se algum cliente está conectado ao servidor
      if (!client) { 							// Cliente não conectado, reexecuta processo  
          delay(10);
          return;                                       
      }    
 
      // --- lê sensor DHT11 - temperatura e umidade --- //
    
      float h = dht.readHumidity();           			// Temperatura em Celsius
      float t = dht.readTemperature();        			// Temperatura em Fahrenheit (isFahrenheit = true)
      float f = dht.readTemperature(true);  

      Serial.println("Novo cliente se conectou!");      
      Serial.print(" Temperatura: ");
      Serial.print(t);        
      Serial.print(" Umidade: ");
      Serial.println(h);
        
      display.fillRect(0,40,128,64,BLACK); 			// fillRect(x,y,width,height,color)       
      display.setCursor(11,42);             			// Posição do cursor na tela
      display.print("Temperatura:");         			// Escreve texto no display
      display.setCursor(85,42);            				// Posição do cursor na tela
      display.print(t);                    				// Escreve texto no display
    
      display.setCursor(24,52);             			// Posição do cursor na tela
      display.print("Umidade:");           				// Escreve texto no display
      display.setCursor(76,52);            				// Posição do cursor na tela
      display.print(h);                    				// Escreve texto no display

      display.display();                   				// Mostra texto no display

 // ---- Enquanto cliente estiver conectado aguarda 1 milisegundo ---- // 
 
      while(!client.available()){                       
          delay(1);                                     
      }  
      
      String request = client.readStringUntil('\r');    	//  Faz leitura da primeira linha da requisição Web
      Serial.println(request);                          		// Escreve requisição na Serial
      client.flush();                                   			// Aguarda até todos dados serem enviados ao cliente

 // ---- Monta protocolo de comunicação HTTP e conteúdo HTML para cliente ---- //
       
      client.println("HTTP/1.1 200 OK");                
      client.println("Content-Type: text/html");       
      client.println("");
      client.println("<!DOCTYPE HTML>");                
      client.println("<html>");           
      client.println("<HEAD>"); 
      client.println("<TITLE>Leitura da temperatura</TITLE>"); 
      client.println("<META http-equiv=Content-Type content='text/html; charset=iso-8859-1'>");
      client.println("<META HTTP-EQUIV='refresh' CONTENT='5'>");
      client.println("</HEAD>");      
      client.println("<body>"); 
      client.println("<h1><center>Bom-dia!</center></h1>"); 
      client.println("<h2><center>Data e Hora</center></h2>"); 
      client.println("<p><center id='datetime'></center></p>"); 
      client.println("<script>");
      client.print("var dt = new Date();");
      client.print("document.getElementById('datetime').innerHTML = (('0'+dt.getDate()).slice(-2))+'/'+");
      client.print("(('0'+(dt.getMonth()+1)).slice(-2))+'/'+(dt.getFullYear())+'  -  "); 
      client.print("'+(('0'+dt.getHours()).slice(-2))+':'+(('0'+dt.getMinutes()).slice(-2));"); 
      client.println("</script>");  
      
      client.println("<h2><center>Temperatura</center></h2>");      
      client.println("<p><center>");  
      client.println(t);
      
      client.println("Celsius</center></p>");
      client.println("<p><center>");  
      client.println(f);
      client.println("Fahrenheit </center></p>");

      client.println("<h2><center>Umidade</center></h2>");    
      client.println("<p><center>");          
      client.println(h);
      client.println("</center></p>");    

      client.println("</body>"); 
      client.println("</html>"); 
      
      Serial.println("Cliente desconectado    ");     
      Serial.println("");          
      delay(20);
}



Informa temperatura, umidade e luminosidade com Shield Arduino Multifunções

O projeto utiliza Arduino Uno R3, Módulo display Oled 0,96 128x64 e Shield Arduino Multifunções com Sensores e I/O´s para informar a temperatura, umidade e luminosidade do meio-ambiente.

/* 
Programa: Informa temperatura, umidade e luminosidade através do Shield Arduino Multifunções 
Autor: André Luis Marques da Silveira
Data: 23/03/2019

Objetivo: Manipular sensores 
1. Sensor de temperatura e umidade DHT11 (porta D4)
2. Sensor de temperatura LM35 (A2)
3. Sensor de Luz LDR (A1)
*/

#include "Wire.h" 				// Biblioteca para enviar e receber dados TWI/I2C
#include "Adafruit_GFX.h" 			// Biblioteca para processamento gráfica
#include "Adafruit_SSD1306.h" 		// Biblioteca do controlador SSD1306 (128x64 e 128x32)
#include "DHT.h"				// Biblioteca sensor DHT11

// Variáveis de luminosidade, temperatura, etc. 
float luminosidade = 0;                        
float temperatura = 0;                          
float DHT11_temperatura = 0;
float DHT11_umidade = 0;

int PINO_DTH11 = 4  
int PINO_LDR = A1;  
int PINO_LM35 = A2;						
 
Adafruit_SSD1306 display = Adafruit_SSD1306(); 	// Cria objeto Adafruit_SSD1306
DHT dht(PINO_DTH11, DHT11);   				// Cria objeto para sensor DHT11T

void setup() {

  pinMode(PINO_DTH11, INPUT);    				// Define pino do Sensor DHT11
  pinMode(PINO_LM35, INPUT);    				// Define pino do Sensor LM35
  pinMode(PINO_LDR, INPUT);  					// Define pino do Sensor LDR
 
  dht.begin(); 								// Inicializa biblioteca WIRE
  Wire.begin(); 								// Inicializa biblioteca sensor DHT11

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 	// Inicializa dysplay com endereço I2C 0x3C
  display.setTextColor(WHITE); 					// Define cor do texto
  display.setTextSize(1); 						// Define tamanho da fonte do texto
  display.clearDisplay(); 						// Limpa as informações do display

}

void loop() {

  display.setCursor(0,0); 						// Posição do cursor na tela
  display.clearDisplay();						// Limpa display
  display.print("Sistema"); 						// Escreve texto no display 

  // --- lê sensor LM35 - temperatura ---  
  temperatura = ( 5.0 * analogRead(A2) * 100.0) / 1024.0;
  
  // --- lê sensor DHT11 - temperatura e umidade ---    
  DHT11_temperatura  = dht.readTemperature();  
  DHT11_umidade      = dht.readHumidity();  
  
  display.setCursor(10,8); 						// Posição do cursor na tela
  display.print("Temp.:"); 						// Escreve texto no display
  display.setCursor(55,8); 						// Posição do cursor na tela
  display.print(DHT11_temperatura); 				// Escreve texto no display

  display.setCursor(10,16); 					// Posição do cursor na tela
  display.print("Umid: "); 						// Escreve texto no display
  display.setCursor(55,16); 					// Posição do cursor na tela
  display.print(DHT11_umidade); 				// Escreve texto no display

  // --- lê sensor LDR - Luminosidade ---  
  luminosidade = map(analogRead(PINO_LDR), 0, 1023, 255, 0); 

  display.setCursor(10,24); 					// Posição do cursor na tela
  display.print("Lumis: "); 						// Escreve texto no display
  display.setCursor(55,24); 					// Posição do cursor na tela
  display.print(luminosidade); 					// Escreve texto no display

  display.display(); 							// Mostra texto no display
  delay(1500); 								// Aguarda intervalo de 1,5 segundos 

}


Informa temperatura, umidade e luminosidade

O projeto informar a temperatura, umidade e luminosidade do meio-ambiente.


1) Primeira Versão

A versão usa Arduino Uno R3, Display LCD 16x2 (+ resistores de 200Ω), potenciometro e sensor TMP36 para informar a temperatura e umidade do meio-ambiente.

/* 
Projeto: Informa temperatura e umidade
Autor: André Silveira
Data: 20/09/2020
*/

#include "LiquidCrystal.h"  			

int Pino_temperatura=A0;
int Pino_umidade=A1;
int TemperaturaTensao;
float Tensao;    
float TemperaturaC;
float TemperaturaF;

// Inicializa instancia de classe do LiquidCrystal
LiquidCrystal lcd(5,6,A2,A3,A4,A5);

void setup() {
  
        Serial.begin(9600);                         
        Serial.println("Temp. e Umidade");      
        lcd.begin(16,2);
        lcd.clear(); 
        lcd.setCursor(0,0);
        lcd.print("Temp. e Umidade:");
}
 
void loop() {

  // --- Leitura da tensao no Sensor de Umidade --- //
  
        float umidade = analogRead(Pino_umidade);
        umidade = (umidade/1023);
        umidade = umidade*100.;
 
 // --- Faz a leitura da tensao no Sensor de Temperatura --- //
 
        TemperaturaTensao=analogRead(Pino_temperatura);
        Tensao=TemperaturaTensao*5;    
        Tensao=Tensao/1024;

 // --- Converte a tensao lida em Graus Celsius --- //
 
        TemperaturaC=(Tensao-0.5)*100;
  
 // --- Converte a tensao lida em Fahrenheit --- //
 
        TemperaturaF=(TemperaturaC*9/5)+32;
        lcd.setCursor(0,1);
        lcd.print(TemperaturaC);
        lcd.print(" C");
        lcd.setCursor(8,1);
        lcd.print(umidade);
        lcd.print(" %   ");
            
}


2) Segunda versão

A versão usa Arduino Uno R3, Display Oled 0,96 128x64, Módulo Sensor DHT11 e Módulo Sensor de Luz LDR KY-018 para informar a temperatura, umidade e luminosidade do meio-ambiente.

/* 
Programa: Informa temperatura, umidade e luminosidade com sensor DHT11 e LDR 
Autor: André Luis Marques da Silveira
Data: 23/03/201
*/

#include "Wire.h" 				// Biblioteca para enviar e receber dados TWI/I2C
#include "Adafruit_GFX.h" 			// Biblioteca para processamento gráfica
#include "Adafruit_SSD1306.h" 		// Biblioteca do controlador SSD1306 (128x64 e 128x32)
#include "DHT.h"				// Biblioteca sensor DHT11

// Variáveis de luminosidade, temperatiura, etc. 
float luminosidade = 0;                        
float temperatura = 0;                          
float DHT11_temperatura = 0;
float DHT11_umidade = 0;

int PINO_DTH11 = 2; 
int PINO_LDR = A0;  	
 
Adafruit_SSD1306 display = Adafruit_SSD1306(); 	// Cria objeto Adafruit_SSD1306
DHT dht(PINO_DTH11, DHT11);   				// Cria objeto para sensor DHT11T

void setup() {

  pinMode(PINO_DTH11, INPUT);    				// Define pino do Sensor DHT11
  pinMode(PINO_LDR, INPUT);  					// Define pino do Sensor LDR

  dht.begin(); 								// Inicializa biblioteca WIRE
  Wire.begin(); 								// Inicializa biblioteca sensor DHT11

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 	// Inicializa dysplay com endereço I2C 0x3C
  display.setTextColor(WHITE); 					// Define cor do texto
  display.setTextSize(1); 						// Define tamanho da fonte do texto
  display.clearDisplay(); 						// Limpa as informações do display

}

void loop() {

  display.setCursor(0,0); 						// Posição do cursor na tela
  display.clearDisplay();						// Limpa display
  display.print("Sistema"); 						// Escreve texto no display 
  
  // --- lê sensor DHT11 - temperatura e umidade ---    
  DHT11_temperatura  = dht.readTemperature();  
  DHT11_umidade      = dht.readHumidity();  
  
  display.setCursor(10,8); 						// Posição do cursor na tela
  display.print("Temp.:"); 						// Escreve texto no display
  display.setCursor(55,8); 						// Posição do cursor na tela
  display.print(DHT11_temperatura); 				// Escreve texto no display

  display.setCursor(10,16); 					// Posição do cursor na tela
  display.print("Umid: "); 						// Escreve texto no display
  display.setCursor(55,16); 					// Posição do cursor na tela
  display.print(DHT11_umidade); 				// Escreve texto no display

  // --- lê sensor LDR - Luminosidade ---  
  luminosidade = map(analogRead(PINO_LDR), 0, 1023, 255, 0); 

  display.setCursor(10,24); 					// Posição do cursor na tela
  display.print("Lumis: "); 						// Escreve texto no display
  display.setCursor(55,24); 					// Posição do cursor na tela
  display.print(luminosidade); 					// Escreve texto no display

  display.display(); 							// Mostra texto no display
  delay(1500); 								// Aguarda intervalo de 1,5 segundos 

}

 

[Voltar]

[Avançar]