Anda di halaman 1dari 5

Relatório Parcial - Firmware

- Sensor de temperatura DHT22 e LCD:


Para este projeto utilizaremos o sensor de temperatura DHT22 que possui uma
precisão de ± 0,5 ​°C. Todas as leituras do sensor serão gravadas num micro cartão
sd no formato EXCEL para acesso rápido dos dados e mostrados em tempo real
num painel LCD.

Firmware desenvolvido em C:

#include <LiquidCrystal.h>
#include <DHT.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define DHTPIN A5
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

byte grau[8] ={ B00001100,


B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};

void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.createChar(0, grau);
dht.begin();
}

void loop() {

float t = dht.readTemperature();
lcd.clear();
Serial.println(t);
lcd.setCursor(0,0);
lcd.print("TEMP: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(t,1);
lcd.setCursor(12,0);
lcd.write((byte)0);
lcd.setCursor(13, 0);
lcd.print("C");

lcd.setCursor(0,1);
lcd.print("CO2:");
delay(2000);
}

- Módulo micro SD:​ Módulo responsável por gravar todos os dados no


formato EXCEL.

Firmware desenvolvido em C:
#include <SD.h>
#include <SPI.h>
#include <DHT.h>

#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

long seconds=00;
long minutes=00;
long hours=00;
int CS_pin = 10;
File sd_file;
void setup() {
Serial.begin(9600);
pinMode(CS_pin, OUTPUT);

dht.begin();
if (SD.begin()) {
Serial.println("SD card inicializado e pronto para uso!");
}
else {
Serial.println("Falha ao inicializar SD card!");
return;
}
sd_file = SD.open("data.csv", FILE_WRITE);

if (sd_file) {
Serial.println("Temperatura");
sd_file.println("Temperatura");
}
sd_file.close();
}
void loop() {
sd_file = SD.open("data.csv", FILE_WRITE);
if (sd_file) {
senddata();
}
else {
Serial.println("Erro ao abrir arquivo");
}
delay(1000);
}
void senddata() {
for(long seconds = 00; seconds < 60; seconds=seconds+2)
{
float temp = dht.readTemperature();

sd_file.print("Temperatura:");
sd_file.println(temp);
Serial.print("Temperatura:");
Serial.println(temp);

if(seconds>=58) {
minutes= minutes + 1;
}
if (minutes>59) {
hours = hours + 1;
minutes = 0;
}
sd_file.flush();
delay(2000);
}
sd_file.close();
}

Teclado matricial: ​O teclado matricial possibilita a escrita de comandos


ao Arduino como por exemplo: Ligar e desligar a lâmpada UV e
selecionar temperatura e concentração de gás carbônico.

#include <Keypad.h>

const byte linhas = 4; //4 linhas


const byte colunas = 4; //4 colunas

//teclado matricial
char matrizteclado[linhas][colunas] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinoslinhas[linhas] = {11,10,9,8}; //pinos utilizados nas linhas
byte pinoscolunas[colunas] = {7,6,5,4}; //pinos utilizados nas colunas

//inicializando o teclado
Keypad teclado = Keypad( makeKeymap(matrizteclado), pinoslinhas, pinoscolunas,
linhas, colunas );

void setup() {
Serial.begin(9600);
Serial.println("Pressione uma tecla");
char vetor[6];
int contador = 0;
}

void loop() {
char vetor[6];
int contador = 0;
float num1 = 0, num2 = 0;
char apertatecla = teclado.getKey(); // verifica se alguma tecla foi pressionada
if (apertatecla){
if (apertatecla == '#'){
Serial.println("Luz");
if (apertatecla == 'A'){
apertatecla = NULL;
while (apertatecla != 'D'){
apertatecla = NULL;

apertatecla = teclado.getKey(); // inserir os numeros


if (apertatecla){
if (apertatecla != 'D'){
Serial.println(apertatecla);
vetor[contador] = apertatecla;
contador += 1;
}
}
}
if (vetor[0] == 'B'){
int a = vetor[1] - 48;
int b = vetor[2] - 48;
int c = vetor[3] - 48;
num1 = a*10 + b + c*0.1;
Serial.println(num1);
}
if (vetor[0] == 'C'){
int d = vetor[1] - 48;
int e = vetor[2] - 48;
int f = vetor[3] - 48;
num2 = d*100 + e*10 + f;
Serial.println(num2);
}

else{
Serial.println("Erro");
}
}
}
for (int i = 0; i< 5; i++){
Serial.print(vetor[i]);
}
}

Anda mungkin juga menyukai