SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
#include <TimeLib.h>
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include "RTClib.h"
#include<Adafruit_Sensor.h>
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
// Inicializa o display no endereco 0x3F
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN A5 // Pino que está conectado ao sensor DHT.
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Uncomment the type of sensor in use:
#define DHTTYPE DHT11 // DHT 11
#include <Time.h>
#include <DS1302RTC.h>
// Set up dos pinos: CE, IO,CLK
DS1302RTC RTC(31, 33, 35); // no MEGA, no UNO, deve-se alterar
boolean start = true; //variáveis de interrupção de emergência
volatile boolean e_stop = false;
int ledPin = 13; //led da musica
//led para visualização
int speakerPin = 7; //alto-falante ligado a uma das portas PWM
#define SYNC_INTERVAL 1500 // mills between calls to flush() - para escrever
dados no cartão
uint32_t syncTime = 0; // time of last sync()
#define ECHO_TO_SERIAL 1 // echo data to serial port - DADOS PARA O SD CARD
#define WAIT_TO_START 0 // Wait for serial input in setup() - AGUARDANDO ENTRADA
BOTAO PARA LOG
#define c 261 //declaração das frequencias das notas musicais
#define d 294
#define e 329
#define f 349
#define g 391
#define a 440
#define b 466
#define entradaChave1 3 // Set up chave SW
#define entradaChave2 5 // Set up chave SW
int entradaChave = 2; // Set up chave SW
int estadoChave = HIGH;
int estadoChave2 = HIGH;
int val = 0;
int val2 = 0;
int relay6M = 6; //Set up Pino Relay
int relay8M = 8; //Set up Pino Relay
int i; // contador para efeito do LCD
const int chipSelect = 4; // chipselect do arduino MEGA, se for UNO, deve alterar
***** NAO USAR ESTE PINO PARA NADA
// the logging file
File logfile; // preparação para log de informações
void error(char *str)
{
Serial.print("error: ");
Serial.println(str);
while(1);
}
void setup(void)
{
Serial.begin(9600);
lcd.begin (20,4); //inicialização do display LCD 20 x 4
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(0,1);
lcd.print("PROCESSO 1");
lcd.setCursor(0,2);
lcd.print(" INICIALIZADO ");
lcd.setCursor(0,3);
lcd.print("--****************--");
delay(500);
//Faz o efeito de deslocamento para esquerda
for (i =0; i <20; i++){
lcd.scrollDisplayLeft();
delay(20); }
delay(1000);
//Faz o efeito de deslocamento para esquerda
for (i =0; i <20; i++){
lcd.scrollDisplayLeft();
delay(20); }
delay(1000);
//Faz o efeito de deslocamento para direita
for (i =0; i <20; i++){
lcd.scrollDisplayRight();
delay(20); }
delay(1000);
//Faz o efeito de deslocamento para direita
for (i =0; i <20; i++){
lcd.scrollDisplayRight();
delay(20); }
delay(1000);
attachInterrupt(5,e_stop_ISR, RISING); //setando interrupção na subida da mudança
de estado do botão interrupçao pino 18 - set 5 ***** NAO USAR ESTE PINO PARA NADA
pinMode(entradaChave, INPUT);
pinMode(relay6M, OUTPUT);
pinMode(entradaChave2, INPUT);
pinMode(relay8M, OUTPUT);
pinMode(entradaChave1, INPUT);
pinMode(speakerPin, OUTPUT);
musicaentrada(); // som de inicio - - puxar o void do beep para tocar a musica
de inicio
pinMode(10, OUTPUT); // para o mega funcionar com o Ethernet, necessario
desligar o chip enable padrão, na porta 10
digitalWrite(10, HIGH); // desligando a porta 10, sem isto o shield ethernet
nao funciona no arduino MEGA
// use debugging LEDs
#if WAIT_TO_START
Serial.println("Type any character to start");
while(!Serial.available());
#endif //WAIT_TO_START
// inicialização do cartão SD
Serial.print("Initializing SD card...");
// Certifique-se de que o pino de seleção de chip padrão esteja configurado como
// saída, mesmo que não o use!!!
pinMode(10, OUTPUT);
// verifica se o cartão está presente e pode ser inicializado:
if (!SD.begin(chipSelect)) {
error("Cartão de memória falhou ou não está presente");
}
Serial.println("Cartao de memoria inicializado");
// cria um novo arquivo
char filename[] = "LOGGER00.CSV";
for (uint8_t i = 0; i < 100; i++) {
filename[6] = i/10 + '0';
filename[7] = i%10 + '0';
if (! SD.exists(filename)) {
// Abra apenas um novo arquivo se não existir
logfile = SD.open(filename, FILE_WRITE);
break; // deixa o loop!!!!
}
}
if (! logfile) {
error("Não foi possível criar o arquivo");
}
Serial.print("Logging to: ");
Serial.println(filename);
// connectando ao RTC
Wire.begin();
if (!RTC.writeEN()) { //lê o estado do RTC - relógio
logfile.println("RTC failed");
#if ECHO_TO_SERIAL
Serial.println("RTC failed");
#endif //ECHO_TO_SERIAL
}
//sequencia do log
logfile.println("millis,stamp,dataehora,temperatura(Celsius),Humidade(%),
status");
#if ECHO_TO_SERIAL
Serial.println("millis,stamp,dataehora,temperatura(Celsius),Humidade(%),
status");
#endif //ECHO_TO_SERIAL
}
void loop() {
// /////////////////////////////////////////
if(start == true){
if(e_stop == false){
val = digitalRead(entradaChave1); // lê o valor de entrada
val2 = digitalRead(entradaChave2); // lê o valor de entrada
if (val == HIGH) { // checa se a entrada é HIGH
digitalWrite(relay6M, HIGH); // coloca o relê em ON
delay(150);
if (estadoChave == LOW) {
// acabamos de ligar
logData();
Serial.print(", ");
Serial.println("RELE 1 LIGADO!");
logfile.print(", ");
logfile.println("RELE 1 LIGADO!");
logfile.flush();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(6,1);
lcd.print("RELE 1");
lcd.setCursor(6,2);
lcd.print("LIGADO");
delay(500);
estadoChave = HIGH;
}
}
else {
digitalWrite(relay6M, LOW); // coloca o relê em OFF
delay(150);
if (estadoChave == HIGH) {
logData();
Serial.print(", ");
Serial.println("RELE 1 PARADO!");
logfile.print(", ");
logfile.println("RELE 1 PARADO!");
logfile.flush();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(6,1);
lcd.print("RELE 1");
lcd.setCursor(6,2);
lcd.print("PARADO");
delay(500);
estadoChave = LOW;
}
}
if (val2 == HIGH) { // checa se a entrada é HIGH
digitalWrite(relay8M, HIGH); // coloca o relê em ON
delay(150);
if (estadoChave2 == LOW) {
// acabamos de ligar
logData();
Serial.print(", ");
Serial.println("RELE 2 LIGADO!");
logfile.print(", ");
logfile.println("RELE 2 LIGADO!");
logfile.flush();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(6,1);
lcd.print("RELE 2");
lcd.setCursor(6,2);
lcd.print("LIGADO");
delay(500);
estadoChave2 = HIGH;
}
}
else {
digitalWrite(relay8M, LOW); // coloca o relê em OFF
delay(150);
if (estadoChave2 == HIGH) {
logData();
Serial.print(", ");
Serial.println("RELE 2 PARADO!");
logfile.print(", ");
logfile.println("RELE 2 PARADO!");
logfile.flush();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(6,1);
lcd.print("RELE 2");
lcd.setCursor(6,2);
lcd.print("PARADO");
delay(500);
estadoChave2 = LOW;
}
if (estadoChave2 == LOW && estadoChave == LOW){
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(3,1);
lcd.print("RELE PARADOS");
lcd.setCursor(3,2);
lcd.print("AGUARDANDO LIGAR");
delay(500);
}
}
}
else{
logData();
Serial.print(", ");
Serial.println("RELE PARADOS");
logfile.print(", ");
logfile.flush();
digitalWrite (relay6M, HIGH); // envia saida para nivel alto ----- desliga os
relés
digitalWrite (relay8M, HIGH); // envia saida para nivel alto
alarme();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print("ARDUINO - ACIONANDO");
lcd.setCursor(3,1);
lcd.print("RELE 1 E 2 ");
lcd.setCursor(6,2);
lcd.print("PARADOS");
lcd.setCursor(3,3);
lcd.print("AGUARDANDO RESET");
while(1);
}
}
}
void beep (unsigned char speakerPin, int frequencyInHertz, long
timeInMilliseconds) //void para tocar a musica
{
digitalWrite(ledPin, HIGH);
// usa o led para visualizar as notas que estão sendo tocadas
int x;
long delayAmount = (long)(1000000/frequencyInHertz);
long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
for (x=0;x<loopTime;x++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);
}
digitalWrite(ledPin, LOW);
//seta o led novamente para LOW
delay(20);
//um pouco de atraso para que todas as notas saiam separadas
}
void musicaentrada() //void da musica de entrada do programa
{
beep(speakerPin, c, 700);
beep(speakerPin, c, 700);
beep(speakerPin, c, 700);
beep(speakerPin, f, 300);
beep(speakerPin, f, 300);
}
void alarme() // void de som do alarme
{
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
}
void logData(){ // void para armazenamento da informaçao no cartao de memoria
dht.begin();
float h = dht.readHumidity(); // leitura da humidade, sendo h a variavel
utilizada
float t = dht.readTemperature(); // leitura da temperatura, sendo t a variavel
DateTime now;
// log milliseconds desde o inicio
uint32_t m = millis();
logfile.print(m); // milliseconds desde o inicio
logfile.print(", ");
#if ECHO_TO_SERIAL
Serial.print(m); // milliseconds desde o inicio
Serial.print(", ");
#endif
now = RTC.get(); // o get é da biblioteca do RTC 1302, pega o horário atual
// log time
logfile.print(now.unixtime()); // segundos desde 1/1/1970
logfile.print(", ");
logfile.print('"');
logfile.print(now.year(), DEC);
logfile.print("/");
logfile.print(now.month(), DEC);
logfile.print("/");
logfile.print(now.day(), DEC);
logfile.print(" ");
logfile.print(now.hour(), DEC);
logfile.print(":");
logfile.print(now.minute(), DEC);
logfile.print(":");
logfile.print(now.second(), DEC);
logfile.print('"');
logfile.print(", ");
logfile.print(t);
logfile.print(", ");
logfile.print(h);
logfile.flush();
#if ECHO_TO_SERIAL
Serial.print(now.unixtime()); // segundos desde 1/1/1970
Serial.print(", ");
Serial.print('"');
Serial.print(now.year(), DEC);
Serial.print("/");
Serial.print(now.month(), DEC);
Serial.print("/");
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(":");
Serial.print(now.second(), DEC);
Serial.print('"');
Serial.print(", ");
Serial.print(t);
Serial.print(", ");
Serial.print(h);
#endif //ECHO_TO_SERIAL
}
void e_stop_ISR(void){ // void da interrupcao
detachInterrupt(5); // 5 é a interrupcao no pino 18, para interrupcao em outro
pino, deve verificar as interrupcoes no arduino MEGA
e_stop = !e_stop;
}

Mais conteúdo relacionado

Semelhante a Programa final

Invocação Remota de Procedimentos (RPC)
Invocação Remota de Procedimentos (RPC)Invocação Remota de Procedimentos (RPC)
Invocação Remota de Procedimentos (RPC)elliando dias
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Embarcados
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduinoCampus Party Brasil
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccsLuciano Zica
 
Workshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardWorkshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardFabio Souza
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresFlavio Oliveira Rodrigues
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoJuan Manoel
 
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...Israel pinto
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoFernando Passold
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 

Semelhante a Programa final (20)

Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Invocação Remota de Procedimentos (RPC)
Invocação Remota de Procedimentos (RPC)Invocação Remota de Procedimentos (RPC)
Invocação Remota de Procedimentos (RPC)
 
Relatório final
Relatório finalRelatório final
Relatório final
 
Pic slides
Pic slidesPic slides
Pic slides
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduino
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccs
 
Workshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardWorkshop Microchip Curiosity Board
Workshop Microchip Curiosity Board
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
Introdução a plataforma arduino
Introdução a plataforma arduinoIntrodução a plataforma arduino
Introdução a plataforma arduino
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduino
 
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...
PROJETOS ARDUINO.pptx tem o objetivo de treianr iniciantes na programaçao de ...
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Collectd
CollectdCollectd
Collectd
 

Programa final

  • 1. #include <TimeLib.h> #include <SD.h> #include <SPI.h> #include <Wire.h> #include "RTClib.h" #include<Adafruit_Sensor.h> #include <Wire.h> #include<LiquidCrystal_I2C.h> // Inicializa o display no endereco 0x3F LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); #include <DHT.h> #include <DHT_U.h> #define DHTPIN A5 // Pino que está conectado ao sensor DHT. #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // Uncomment the type of sensor in use: #define DHTTYPE DHT11 // DHT 11 #include <Time.h> #include <DS1302RTC.h> // Set up dos pinos: CE, IO,CLK DS1302RTC RTC(31, 33, 35); // no MEGA, no UNO, deve-se alterar boolean start = true; //variáveis de interrupção de emergência volatile boolean e_stop = false; int ledPin = 13; //led da musica //led para visualização int speakerPin = 7; //alto-falante ligado a uma das portas PWM #define SYNC_INTERVAL 1500 // mills between calls to flush() - para escrever dados no cartão uint32_t syncTime = 0; // time of last sync() #define ECHO_TO_SERIAL 1 // echo data to serial port - DADOS PARA O SD CARD #define WAIT_TO_START 0 // Wait for serial input in setup() - AGUARDANDO ENTRADA BOTAO PARA LOG
  • 2. #define c 261 //declaração das frequencias das notas musicais #define d 294 #define e 329 #define f 349 #define g 391 #define a 440 #define b 466 #define entradaChave1 3 // Set up chave SW #define entradaChave2 5 // Set up chave SW int entradaChave = 2; // Set up chave SW int estadoChave = HIGH; int estadoChave2 = HIGH; int val = 0; int val2 = 0; int relay6M = 6; //Set up Pino Relay int relay8M = 8; //Set up Pino Relay int i; // contador para efeito do LCD const int chipSelect = 4; // chipselect do arduino MEGA, se for UNO, deve alterar ***** NAO USAR ESTE PINO PARA NADA // the logging file File logfile; // preparação para log de informações void error(char *str) { Serial.print("error: "); Serial.println(str); while(1); } void setup(void) { Serial.begin(9600); lcd.begin (20,4); //inicialização do display LCD 20 x 4 lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(0,1); lcd.print("PROCESSO 1");
  • 3. lcd.setCursor(0,2); lcd.print(" INICIALIZADO "); lcd.setCursor(0,3); lcd.print("--****************--"); delay(500); //Faz o efeito de deslocamento para esquerda for (i =0; i <20; i++){ lcd.scrollDisplayLeft(); delay(20); } delay(1000); //Faz o efeito de deslocamento para esquerda for (i =0; i <20; i++){ lcd.scrollDisplayLeft(); delay(20); } delay(1000); //Faz o efeito de deslocamento para direita for (i =0; i <20; i++){ lcd.scrollDisplayRight(); delay(20); } delay(1000); //Faz o efeito de deslocamento para direita for (i =0; i <20; i++){ lcd.scrollDisplayRight(); delay(20); } delay(1000); attachInterrupt(5,e_stop_ISR, RISING); //setando interrupção na subida da mudança de estado do botão interrupçao pino 18 - set 5 ***** NAO USAR ESTE PINO PARA NADA pinMode(entradaChave, INPUT); pinMode(relay6M, OUTPUT); pinMode(entradaChave2, INPUT); pinMode(relay8M, OUTPUT); pinMode(entradaChave1, INPUT); pinMode(speakerPin, OUTPUT); musicaentrada(); // som de inicio - - puxar o void do beep para tocar a musica de inicio pinMode(10, OUTPUT); // para o mega funcionar com o Ethernet, necessario desligar o chip enable padrão, na porta 10 digitalWrite(10, HIGH); // desligando a porta 10, sem isto o shield ethernet nao funciona no arduino MEGA // use debugging LEDs #if WAIT_TO_START Serial.println("Type any character to start");
  • 4. while(!Serial.available()); #endif //WAIT_TO_START // inicialização do cartão SD Serial.print("Initializing SD card..."); // Certifique-se de que o pino de seleção de chip padrão esteja configurado como // saída, mesmo que não o use!!! pinMode(10, OUTPUT); // verifica se o cartão está presente e pode ser inicializado: if (!SD.begin(chipSelect)) { error("Cartão de memória falhou ou não está presente"); } Serial.println("Cartao de memoria inicializado"); // cria um novo arquivo char filename[] = "LOGGER00.CSV"; for (uint8_t i = 0; i < 100; i++) { filename[6] = i/10 + '0'; filename[7] = i%10 + '0'; if (! SD.exists(filename)) { // Abra apenas um novo arquivo se não existir logfile = SD.open(filename, FILE_WRITE); break; // deixa o loop!!!! } } if (! logfile) { error("Não foi possível criar o arquivo"); } Serial.print("Logging to: "); Serial.println(filename); // connectando ao RTC Wire.begin(); if (!RTC.writeEN()) { //lê o estado do RTC - relógio logfile.println("RTC failed"); #if ECHO_TO_SERIAL Serial.println("RTC failed"); #endif //ECHO_TO_SERIAL } //sequencia do log logfile.println("millis,stamp,dataehora,temperatura(Celsius),Humidade(%), status"); #if ECHO_TO_SERIAL Serial.println("millis,stamp,dataehora,temperatura(Celsius),Humidade(%), status"); #endif //ECHO_TO_SERIAL
  • 5. } void loop() { // ///////////////////////////////////////// if(start == true){ if(e_stop == false){ val = digitalRead(entradaChave1); // lê o valor de entrada val2 = digitalRead(entradaChave2); // lê o valor de entrada if (val == HIGH) { // checa se a entrada é HIGH digitalWrite(relay6M, HIGH); // coloca o relê em ON delay(150); if (estadoChave == LOW) { // acabamos de ligar logData(); Serial.print(", "); Serial.println("RELE 1 LIGADO!"); logfile.print(", "); logfile.println("RELE 1 LIGADO!"); logfile.flush(); lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(6,1); lcd.print("RELE 1"); lcd.setCursor(6,2); lcd.print("LIGADO"); delay(500); estadoChave = HIGH; } } else { digitalWrite(relay6M, LOW); // coloca o relê em OFF delay(150); if (estadoChave == HIGH) { logData(); Serial.print(", "); Serial.println("RELE 1 PARADO!"); logfile.print(", "); logfile.println("RELE 1 PARADO!");
  • 6. logfile.flush(); lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(6,1); lcd.print("RELE 1"); lcd.setCursor(6,2); lcd.print("PARADO"); delay(500); estadoChave = LOW; } } if (val2 == HIGH) { // checa se a entrada é HIGH digitalWrite(relay8M, HIGH); // coloca o relê em ON delay(150); if (estadoChave2 == LOW) { // acabamos de ligar logData(); Serial.print(", "); Serial.println("RELE 2 LIGADO!"); logfile.print(", "); logfile.println("RELE 2 LIGADO!"); logfile.flush(); lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(6,1); lcd.print("RELE 2"); lcd.setCursor(6,2); lcd.print("LIGADO"); delay(500); estadoChave2 = HIGH; } } else { digitalWrite(relay8M, LOW); // coloca o relê em OFF delay(150); if (estadoChave2 == HIGH) { logData(); Serial.print(", "); Serial.println("RELE 2 PARADO!"); logfile.print(", "); logfile.println("RELE 2 PARADO!");
  • 7. logfile.flush(); lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(6,1); lcd.print("RELE 2"); lcd.setCursor(6,2); lcd.print("PARADO"); delay(500); estadoChave2 = LOW; } if (estadoChave2 == LOW && estadoChave == LOW){ lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(3,1); lcd.print("RELE PARADOS"); lcd.setCursor(3,2); lcd.print("AGUARDANDO LIGAR"); delay(500); } } } else{ logData(); Serial.print(", "); Serial.println("RELE PARADOS"); logfile.print(", "); logfile.flush(); digitalWrite (relay6M, HIGH); // envia saida para nivel alto ----- desliga os relés digitalWrite (relay8M, HIGH); // envia saida para nivel alto alarme(); lcd.clear(); lcd.setBacklight(HIGH); lcd.setCursor(0,0); lcd.print("ARDUINO - ACIONANDO"); lcd.setCursor(3,1); lcd.print("RELE 1 E 2 "); lcd.setCursor(6,2);
  • 8. lcd.print("PARADOS"); lcd.setCursor(3,3); lcd.print("AGUARDANDO RESET"); while(1); } } } void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds) //void para tocar a musica { digitalWrite(ledPin, HIGH); // usa o led para visualizar as notas que estão sendo tocadas int x; long delayAmount = (long)(1000000/frequencyInHertz); long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2)); for (x=0;x<loopTime;x++) { digitalWrite(speakerPin,HIGH); delayMicroseconds(delayAmount); digitalWrite(speakerPin,LOW); delayMicroseconds(delayAmount); } digitalWrite(ledPin, LOW); //seta o led novamente para LOW delay(20); //um pouco de atraso para que todas as notas saiam separadas } void musicaentrada() //void da musica de entrada do programa { beep(speakerPin, c, 700); beep(speakerPin, c, 700); beep(speakerPin, c, 700); beep(speakerPin, f, 300); beep(speakerPin, f, 300); } void alarme() // void de som do alarme { beep(speakerPin, a, 500); beep(speakerPin, a, 500); beep(speakerPin, a, 500); beep(speakerPin, a, 500);
  • 9. beep(speakerPin, a, 500); beep(speakerPin, a, 500); beep(speakerPin, a, 500); } void logData(){ // void para armazenamento da informaçao no cartao de memoria dht.begin(); float h = dht.readHumidity(); // leitura da humidade, sendo h a variavel utilizada float t = dht.readTemperature(); // leitura da temperatura, sendo t a variavel DateTime now; // log milliseconds desde o inicio uint32_t m = millis(); logfile.print(m); // milliseconds desde o inicio logfile.print(", "); #if ECHO_TO_SERIAL Serial.print(m); // milliseconds desde o inicio Serial.print(", "); #endif now = RTC.get(); // o get é da biblioteca do RTC 1302, pega o horário atual // log time logfile.print(now.unixtime()); // segundos desde 1/1/1970 logfile.print(", "); logfile.print('"'); logfile.print(now.year(), DEC); logfile.print("/"); logfile.print(now.month(), DEC); logfile.print("/"); logfile.print(now.day(), DEC); logfile.print(" "); logfile.print(now.hour(), DEC); logfile.print(":"); logfile.print(now.minute(), DEC); logfile.print(":"); logfile.print(now.second(), DEC); logfile.print('"'); logfile.print(", "); logfile.print(t); logfile.print(", "); logfile.print(h); logfile.flush(); #if ECHO_TO_SERIAL Serial.print(now.unixtime()); // segundos desde 1/1/1970 Serial.print(", "); Serial.print('"');
  • 10. Serial.print(now.year(), DEC); Serial.print("/"); Serial.print(now.month(), DEC); Serial.print("/"); Serial.print(now.day(), DEC); Serial.print(" "); Serial.print(now.hour(), DEC); Serial.print(":"); Serial.print(now.minute(), DEC); Serial.print(":"); Serial.print(now.second(), DEC); Serial.print('"'); Serial.print(", "); Serial.print(t); Serial.print(", "); Serial.print(h); #endif //ECHO_TO_SERIAL } void e_stop_ISR(void){ // void da interrupcao detachInterrupt(5); // 5 é a interrupcao no pino 18, para interrupcao em outro pino, deve verificar as interrupcoes no arduino MEGA e_stop = !e_stop; }