16 channels Eitable Device Names and Programable Setup:
- 14 Switches ON/OFF;
- 2 Sensor Input(LM35 && LDR);
- APP. Memory Data Bank;
- EEPROM Memory Arduino;
- Bluetooth Client and Server;
- Get Status Switches;
- Protection against power failure Arduino EEPROM Memory and App. Data Bank.
- Timer on A4 Output: 15s, 30s, 60s, 5m, 15m, 30m, 1h, 2h, 4h, 6h,
8h;
PRONTO! Controle temporizado para ligar e desligar dispositivos 110V/220V conectados a energia elétrica residencial com uso do módulo de relé: TV, Som, Ventilador, Luminária, Torradeira, Cafeteira, etc;
- Timer on A4 Output: 15s, 30s, 60s, 5m, 15m, 30m, 1h, 2h, 4h, 6h,
8h;
PRONTO! Controle temporizado para ligar e desligar dispositivos 110V/220V conectados a energia elétrica residencial com uso do módulo de relé: TV, Som, Ventilador, Luminária, Torradeira, Cafeteira, etc;
Monitor LM35 LDR Program Switches
Google Play:
Veja no meu canal Youtube:
Icone de Apresentação:
Conteúdo:
1)- Descrição de Funcionamento;
2)- Comandos utilizados e pinagem do Arduino;
3)- Fotos do aplicativo;
3.1)- Fotos do aplicativo funcionando com tablet Samsung;
4)- Código Arduino: Monitor LM35 LDR Program Switches
5)- Lista de Materiais;
6)- Esquema de ligações;
1)- DESCRIÇÃO DE FUNCIONAMENTO:
TODOS OS 14 BOTÕES SÃO EDITÁVEIS PROGRAMÁVEIS!
FUNÇÃO BLUETOOTH CLIENT AND SERVER: App. Android Transceiver: Envia e recebe dados do Arduino;
TELA CONTROL LM35: Programar o Setup, valor que você deseja controlar a Temperatura; Atua sobre o Arduino utilizando uma saída para relé;
Editar o nome do dispositivo a ser controlado, exemplo ventilador do quarto;
OBS.: Fazer o Sincronismo entre App. Android e Arduino: Pressionar o botão vermelho central do setup que faz o sincronismo entre o Android e Arduino, setando os valores de Temperatura em 25°C inicial.(Como o App está "limpo" sem nenhuma programação, então da primeira vez torna-se necessário esta sincronização onde valores defaults serão gravados.
TELA CONTROL LDR: Programar o Setup, valor que você deseja controlar a Iluminação; Atua sobre o Arduino utilizando uma saída para relé;
Editar o nome do dispositivo a ser controlado, exemplo luminária do quarto;
OBS.: Fazer o Sincronismo entre App. Android e Arduino: Pressionar o botão vermelho central do setup que faz o sincronismo entre o Android e Arduino, setando os valores de iluminação em 250 Lux inicial.(Como o App está "limpo" sem nenhuma programação, então da primeira vez torna-se necessário esta sincronização onde valores defaults serão gravados.
TELA SWITCHES: Controle ON/OFF de 12 chaves, acionamento liga e desliga de 12 relés conectados aos dispositivos
Editar o Nome dos 12 Dispositivos a serem controlados, exemplo quarto da frente, sala, Cozinha, motor da caixa dágua, ON/OFF TV e som, cafeteira , ventilador do closet, etc;
BOTÃO TIMER: Mostra tela do timer, onde podemos escolher os intervalos de tempos para o temporizador que fará o acionamento do dispositivo a ser temporizado com intervalos selecionáveis:
- Timer on A4 Output: 15s, 30s, 60s, 5m, 15m, 30m, 1h, 2h, 4h, 6h,
8h;
Aplicação: Controle temporizado para ligar e desligar dispositivos 110V/220V conectados a energia elétrica residencial com uso do módulo de relé: TV, Som, Ventilador, Luminária, Torradeira, Cafeteira, etc;
GET STATUS SWITCHES: Recuperar o ultimo Status das 12 chaves; Assim que você liga o App. pressione este botão para resgatar todas as posições das chaves, assim você saberá quais dispositivos estão ligados ou desligados no momento;
PROTEÇÃO CONTRA QUEDA DE ENERGIA: Quando a energia for restabelecida todos os valores de Setup da Temperatura ou Iluminação ou Posição das Chaves serão automaticamente recuperados ou restaurados com os últimos valores que você programou; Isto é muito importante no caso se você estiver ausente, viajando e você deixou tudo programado então se houver uma queda de energia que são frequentes, tudo funcionará normalmente pois todos os dados serão salvos na EEPROM do Arduino!
MENU DE FUNÇÕES E PROGRAMAÇÕES:
BOTÃO MONITOR: Mostra a tela que monitora valores de LM35 e LDR;
BOTÃO TECLADO: Mostra tela das chave Switches acionamento de 12 canais com botões editáveis programáveis e sistema GET STATUS SWITCHES, que recupera as ultimas alterações feitas que ficaram salvas na EEPROM do Arduino.
TODOS OS 14 BOTÕES SÃO EDITÁVEIS PROGRAMÁVEIS!
BOTÃO TIMER: Mostra tela do timer onde podemos escolher os intervalos de tempos para o temporizador que fará o acionamento do dispositivo a ser temporizado com intervalos selecionáveis:
- Timer on A4 Output: 15s, 30s, 60s, 5m, 15m, 30m, 1h, 2h, 4h, 6h,
8h;
Aplicação: Controle temporizado para ligar e desligar dispositivos 110V/220V conectados a energia elétrica residencial com uso do módulo de relé: TV, Som, Ventilador, Luminária, Torradeira, Cafeteira, etc;
BOTÃO "TERMÔMETRO": Mostra valor do LM35, Programar Setup UP e DOWN; Controla a temperatura ambiente, acionando por exemplo ventiladores ou exaustores; Editar o nome do Dispositivo;
Antes de sair programando não se esqueça de pressionar o botão vermelho central do Setup que faz o sincronismo entre o Android e Arduino, setando os valores de temperatura em 25C inicial.
BOTÃO "LUZ - SOL": BOTÃO": Mostra valor do LDR, Programar Setup UP e DOWN; Controla a Iluminação ambiente, acionando por exemplo abatjour, lâmpada ou luminária, de forma a acender ou apagar conforme valores que voçê programou;
Exemplo controlar a iluminação dos corredores ou quintal da frente ou fundos da casa quando a iluminação natural atingir valor que você programou então o acionamento será automático de desligará automaticamente quando a iluminação natural voltar para valores programados.
Exemplo quando você sai de casa e antes deixa programado para quando chegar a noite acender uma lâmpada da sala, etc.
Editar o nome do Dispositivo;
Antes de sair programando não se esqueça de pressionar o botão vermelho central do setup que faz o sincronismo entre o Android e Arduino, setando os valores de iluminação em 250 Lux inicial.
BOTÃO "LUPA": Mostra todas as telas simultaneamente: Tela Monitor, Tela Control LM35, Tela Control LDR e Tela Switches.
BOTÃO "SALVAR": Não se esqueça de pressionar este botão para gravar todos os dados configurados dos Setups, LM35, LDR, Switches e Nomes dos Dispositivos;
Estes dados serão gravados no Banco de Dados do App. e na EEPROM do Arduino.
BOTÃO "CADEADO": Pressione este botão para abrir o cadeado(Desbloqueado) e Permitir que você Edit os Nomes dos Dispositivos e faça suas programações; Terminada a Edição Programação, feche o cadeado(Bloqueado);
OBS1.: Desbloquear o Sistema para programação(Abrir o cadeado).
OBS2.: Bloquear o Sistema para programação indesejada(Fechar o cadeado).
OBS3.: Fazer o Sincronismo entre o App. Android e Arduino: Pressionar o botão vermelho central do setup(somente da primeira vez, pois o App. e Arduino estão com a memória "limpa" sem nada gravado);
OBS4.: Pressionar o botão SALVAR ANTES DE SAIR DO APP.
VEJA TAMBÉM:
PROGRAMA CÓDIGO ARDUINO COMPLETO;
ESQUEMA DE LIGAÇÕES COM LEDS;
ESQUEMA DE LIGAÇÕES COM MÓDULOS DE RELÉS;
LISTA DE MATERIAIS;
FOTOS E VÍDEOS;
DESCRIÇÃO DE FUNCIONAMENTO;
DESCRIÇÃO DE TODOS OS COMANDOS E PINAGENS DO ARDUINO;
EXEMPLOS DE LIGAÇÕES DOS SENSORES, LEDS E MÓDULOS RELÉS PARA ACIONAMENTO DE DISPOSITIVOS LIGADOS A REDE ELÉTRICA 110/220VCA.
2)- COMANDOS UTILIZADOS E PINAGEM ARDUINO:
TELA DO APP. E PINAGEM DO ARDUINO:
TELA MONITOR:
A0 = Input Entrada Sensor LM35(temperatura);
A1 = Input Entrada Sensor LDR(luminosidade);
TELA CONTROL LM35:
A2 = Output Saída Controle ON/OFF de temperatura(exemplo relé do ventilador)Dispositivo 13;
TELA CONTROL LDR:
A3 = Output Saída Controle ON/OFF de luminosidade(exemplo relé do abatjour)Dispositivo 14;
TELA SWITCHES:
A4 = Output Saída Controle ON/OFF Dispositivo 1;
A5 = Output Saída Controle ON/OFF Dispositivo 2;
D4 = Output Saída Controle ON/OFF Dispositivo 3;
D5 = Output Saída Controle ON/OFF Dispositivo 4;
D6 = Output Saída Controle ON/OFF Dispositivo 5;
D7 = Output Saída Controle ON/OFF Dispositivo 6;
D8 = Output Saída Controle ON/OFF Dispositivo 7;
D9 = Output Saída Controle ON/OFF Dispositivo 8;
D10 = Output Saída Controle ON/OFF Dispositivo 9;
D11 = Output Saída Controle ON/OFF Dispositivo 10;
D12 = Output Saída Controle ON/OFF Dispositivo 11;
D13 = Output Saída Controle ON/OFF Dispositivo 12;
TELA TIMER:
A4 = Output Saída Controle ON/OFF Dispositivo 1 on Timer;
D0 = N/C(não utilizado);
D1 = N/C(não utilizado);
D2 = TX do Módulo Bluetooth(JY-MCU);
D3 = RX do Módulo Bluetooth(JY-MCU);
COMUNICAÇÃO - COMANDOS ENTRE ANDROID && ARDUINO:
APP. ANDROID ENVIA: | ARDUINO RECEBE: | ARDUINO EXECUTA: | ARDUINO ENVIA: | APP. ANDROID RECEBE: | APP. ANDORID EXECUTA: |
Button1 OFF | Caracter = a | A4 = HIGH = 5V | Caracter: A4ON | Button1 ON | Dispositivo 1: A4 OUT 5V |
Button1 ON | Caracter = b | A4 = LOW = 0V | Caracter: A4OFF | Button1 OFF | Dispositivo 1: A4 OUT 0V |
Button2 OFF | Caracter = c | A5 = HIGH = 5V | Caracter: A5ON | Button2 ON | Dispositivo 2: A5 OUT 5V |
Button2 ON | Caracter = d | A5 = LOW = 0V | Caracter: A5OFF | Button2 OFF | Dispositivo 2: A5 OUT 0V |
Button3 OFF | Caracter = e | D4 = HIGH = 5V | Caracter: D4ON | Button3 ON | Dispositivo 3: D4 OUT 5V |
Button3 ON | Caracter = f | D4 = LOW = 0V | Caracter: D4OFF | Button3 OFF | Dispositivo 3: D4 OUT 0V |
Button4 OFF | Caracter = g | D5 = HIGH = 5V | Caracter: D5ON | Button4 ON | Dispositivo 4: D5 OUT 5V |
Button4 ON | Caracter = h | D5 = LOW = 0V | Caracter: D5OFF | Button4 OFF | Dispositivo 4: D5 OUT 0V |
Button5 OFF | Caracter = i | D6 = HIGH = 5V | Caracter: D6ON | Button5 ON | Dispositivo 5: D6 OUT 5V |
Button5 ON | Caracter = j | D6 = LOW = 0V | Caracter: D6OFF | Button5 OFF | Dispositivo 5: D6 OUT 0V |
Button6 OFF | Caracter = k | D7 = HIGH = 5V | Caracter: D7ON | Button6 ON | Dispositivo 6: D7 OUT 5V |
Button6 ON | Caracter = l | D7 = LOW = 0V | Caracter: D7OFF | Button6 OFF | Dispositivo 6: D7 OUT 0V |
Button7 OFF | Caracter = m | D8 = HIGH = 5V | Caracter: D8ON | Button7 ON | Dispositivo 7: D8 OUT 5V |
Button7 ON | Caracter = n | D8 = LOW = 0V | Caracter: D8OFF | Button7 OFF | Dispositivo 7: D8 OUT 0V |
Button8 OFF | Caracter = o | D9 = HIGH = 5V | Caracter: D9ON | Button8 ON | Dispositivo 8: D9 OUT 5V |
Button8 ON | Caracter = p | D9 = LOW = 0V | Caracter: D9OFF | Button8 OFF | Dispositivo 8: D9 OUT 0V |
Button9 OFF | Caracter = q | D10 = HIGH = 5V | Caracter: D10ON | Button9 ON | Dispositivo 9: D10 OUT 5V |
Button9 ON | Caracter = r | D10 = LOW = 0V | Caracter: D10OFF | Button9 OFF | Dispositivo 9: D10 OUT 0V |
Button10 OFF | Caracter = s | D11 = HIGH = 5V | Caracter: D11ON | Button10 ON | Dispositivo 10: D11 OUT 5V |
Button10 ON | Caracter = t | D11 = LOW = 0V | Caracter: D11OFF | Button10 OFF | Dispositivo 10: D11 OUT 0V |
Button11 OFF | Caracter = u | D12 = HIGH = 5V | Caracter: D12ON | Button11 ON | Dispositivo 11: D12 OUT 5V |
Button11 ON | Caracter = v | D12 = LOW = 0V | Caracter: D12OFF | Button11 OFF | Dispositivo 11: D12 OUT 0V |
Button12 OFF | Caracter = x | D13 = HIGH = 5V | Caracter: D13ON | Button12 ON | Dispositivo 12: D13 OUT 5V |
Button12 ON | Caracter = y | D13 = LOW = 0V | Caracter: D13OFF | Button12 OFF | Dispositivo 12: D13 OUT 0V |
Get Status Switches | Caracter = A | Arduino Verifica | Caracter: A4ON | Button1 ON | Dispositivo 1: A4 OUT 5V |
qual é o Status | Caracter: A4OFF | Button1 OFF | Dispositivo 1: A4 OUT 0V | ||
das saídas digitais | Caracter: A5ON | Button2 ON | Dispositivo 2: A5 OUT 5V | ||
e envia para o | Caracter: A5OFF | Button2 OFF | Dispositivo 2: A5 OUT 0V | ||
comando para o | Caracter: D4ON | Button3 ON | Dispositivo 3: D4 OUT 5V | ||
App. Android. | Caracter: D4OFF | Button3 OFF | Dispositivo 3: D4 OUT 0V | ||
Caracter: D5ON | Button4 ON | Dispositivo 4: D5 OUT 5V | |||
Caracter: D5OFF | Button4 OFF | Dispositivo 4: D5 OUT 0V | |||
Caracter: D6ON | Button5 ON | Dispositivo 5: D6 OUT 5V | |||
Caracter: D6OFF | Button5 OFF | Dispositivo 5: D6 OUT 0V | |||
Caracter: D7ON | Button6 ON | Dispositivo 6: D7 OUT 5V | |||
Caracter: D7OFF | Button6 OFF | Dispositivo 6: D7 OUT 0V | |||
Caracter: D8ON | Button7 ON | Dispositivo 7: D8 OUT 5V | |||
Caracter: D8OFF | Button7 OFF | Dispositivo 7: D8 OUT 0V | |||
Caracter: D9ON | Button8 ON | Dispositivo 8: D9 OUT 5V | |||
Caracter: D9OFF | Button8 OFF | Dispositivo 8: D9 OUT 0V | |||
Caracter: D10ON | Button9 ON | Dispositivo 9: D10 OUT 5V | |||
Caracter: D10OFF | Button9 OFF | Dispositivo 9: D10 OUT 0V | |||
Caracter: D11ON | Button10 ON | Dispositivo 10: D11 OUT 5V | |||
Caracter: D11OFF | Button10 OFF | Dispositivo 10: D11 OUT 0V | |||
Caracter: D12ON | Button11 ON | Dispositivo 11: D12 OUT 5V | |||
Caracter: D12OFF | Button11 OFF | Dispositivo 11: D12 OUT 0V | |||
Caracter: D13ON | Button12 ON | Dispositivo 12: D13 OUT 5V | |||
Caracter: D13OFF | Button12 OFF | Dispositivo 12: D13 OUT 0V | |||
LM35 Setup = UP | Caracter = U | LM35Ca<>LM35Se | A2ON/A2OFF | Button13 ON/OFF | Dispositivo LM35:A2 0V/5V |
LM35 Setup = DOWN | Caracter = V | LM35Ca<>LM35Se | A2ON/A2OFF | Button13 ON/OFF | Dispositivo LM35:A2 0V/5V |
LM35 Setup = Restart | Caracter = X | LM35Setup = 25°C | LM35Setup = 25°C | LM35Setup = 25°C | |
LDR Setup = UP | Caracter = R | LDRCa<>LDRSe | A3ON/A3OFF | Button14 ON/OFF | Dispositivo LDR:A3 0V/5V |
LDR Setup = DOWN | Caracter = T | LDRCa<>LDRSe | A3ON/A3OFF | Button14 ON/OFF | Dispositivo LDR:A3 0V/5V |
LDR Setup = Restart | Caracter = S | LDRSetup=250Lux | LDRSetup=250Lux | LDRSetup=250Lux |
TIMER1-A4 = ON Caracter = K TIMER1-A4 = ON
TIMER1-A4 = OFF Caracter = L TIMER1-A4 = OFF
Button Forward Caracter = B TIMER1-A4 = Forward
Button Timing(Sync) Caracter = C TIMER1-A4 = 15s(Sync)
3)- Fotos do aplicativo:
3.1)- Fotos do aplicativo funcionando com tablet Samsung:
4)- Código Arduino: Monitor LM35 LDR Program Switches:
//***********************************************************************//
// MONITOR receve valores LM35 e LDR via bluetooth para o App. Android //
// Botões Editáveis com os nomes a escoller para cada um dos 14 canais //
// Os nomes dos dispositivos são gravados em banco de dados no App. //
// Controle de 14 canais sendo dois canais no modo automático //
// Função Bluetooth Server:Arduino envia dados LM35 e LDR a cada 1000ms// //
// Os valores dos setups de LM35 e LDR são gravados na EEPROM //
// Os setups e acionamentos são recuperados pela EEPROM em queda de //
// Energia ou reset do Arduino //
// Sistema Get Status Switches recupera a posição ON/OFF de 14 canais //
// O App. e Celular podem ser desligados que o Arduino mantém tudo //
// Funcionando conforme configurações. //
//***********************************************************************//
//Bibliotecas;
#include <SoftwareSerial.h>//Biblioteca para Serial Monitor IDE;
SoftwareSerial mySerial(2, 3);//Biblioteca para serial bluetooth;
//Arduino D2(Bluetooth-TX), Arduino D3(Bluetooth-RX);
#include <EEPROM.h>
//Declaração das variáveis de programa;
int device1 = 0;
int device2 = 0;
int device3 = 0;
int device4 = 0;
int device5 = 0;
int device6 = 0;
int device7 = 0;
int device8 = 0;
int device9 = 0;
int device10 = 0;
int device11 = 0;
int device12 = 0;
char caracter;
int AA2 = A2;//Arduino analogica A2;
int AA3 = A3;//Arduino analogica A3;
int AA4 = A4;//Arduino analogica A4;
int AA5 = A5;//Arduino analogica A5;
int D4 = 4;//Arduino digital D4;
int D5 = 5;//Arduino digital D5;
int D6 = 6;//Arduino digital D6;
int D7 = 7;//Arduino digital D7;
int D8 = 8;//Arduino digital D8;
int D9 = 9;//Arduino digital D9;
int D10 = 10;//Arduino digital D10;
int D11 = 11;//Arduino digital D11;
int D12 = 12;//Arduino digital D12;
int D13 = 13;//Arduino digital D13;
int pinSensorA0 = 0;//Analógica A0 conectado ao LM35;
int valueA0 = 0;//Variável para leitura LM35;
int pinSensorA1 = 1;//Analógica A1 conectado ao LDR;
float LM35 = 0;//Variável calcula e armazena valorlido do LM35;
float LDR = 0;//Variável calcula e armazena valorlido do LDR;
int cont = 0;//Variável para contagem do numero de leituras LM35 e LDR;
float LM35Calc = 0;//Variável tira a média de 100 leituras do LM35;
float LDRCalc = 0;//Variável tira a média de 100 leituras do LDR;
float LM35Setup;
float LDRSetup;
int LDRSetupEEprom;
int addressLDR1;
int addressLDR2;
int address1;
int address2;
int address3;
int address4;
int Divide1;
int Divide2;
int RestoDivisao;
int Resultado1;
int Resultado2;
int Resultado3;
int Resultado4;
int Res2;
int Res3;
int contSwitches12=0;
//int ContTimer1;
int ContTimerB;
int IncCont;
//int ContTimer1ONOFF;//ON/OFF
unsigned long ContTimer1ONOFF;//ON/OFF
unsigned long ContTimer1;
int Timer1IncSeg;//Contagem de segundos;
int Timer1IncMin;//Contagem de minutos;
int contSetupTimer1=0;//Contagem para setup das variáveis de controle de tempo;
void setup() {
mySerial.begin(9600);//Velocidade serial em 9600bps pinos D2 e D3;
//Bluetooth também deve estar na mesma veloc. 9600bps;
Serial.begin(9600);//Velocidade serial em 9600bps pinos D0 e D1;
//Serial Monitor IDE também deve estar na mesma veloc. 9600bps;
//Recupera o valor do LM35 gravado na EEPROM na queda de energia ou reset do Arduino;
LM35Setup=(EEPROM.read(0));//Inicializa a variável(LM35Setup)
//com o ultimo valor gravado na posição 0 da EEPROM;
Resultado1=(EEPROM.read(1));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 1 da EEPROM;
Res2=(EEPROM.read(2));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 2 da EEPROM;
Res3=(EEPROM.read(3));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 3 da EEPROM;
//Recupera o valor do LDR gravado na EEPROM na queda de energia ou reset do Arduino;
LDRSetupEEprom = ((EEPROM.read(1)*1000)+(EEPROM.read(2)*100)+(EEPROM.read(3)*10));
LDRSetup = LDRSetupEEprom;
IncCont =1;
//ContTimerB=4000;//Contagem para 1 minuto 60.000ms/15ms(loop);
ContTimer1ONOFF =2;//Desativa a contagem de tempo;
ContTimer1 =0;//Inicia a contagem em zero;
Timer1IncSeg =0;//Inicia contagem de segundos em zero;
Timer1IncMin =0;//Inicia contagem de minutos em zero;
//-----------------------Define porta como saída-----------------------
pinMode(AA2, OUTPUT);
pinMode(AA3, OUTPUT);
pinMode(AA4, OUTPUT);
pinMode(AA5, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
pinMode(D9, OUTPUT);
pinMode(D10, OUTPUT);
pinMode(D11, OUTPUT);
pinMode(D12, OUTPUT);
pinMode(D13, OUTPUT);
//-----------------------Inicializa porta em 0V-----------------------
digitalWrite(AA2, LOW);
digitalWrite(AA3, LOW);
digitalWrite(AA4, LOW);
digitalWrite(AA5, LOW);
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
digitalWrite(D8, LOW);
digitalWrite(D9, LOW);
digitalWrite(D10, LOW);
digitalWrite(D11, LOW);
digitalWrite(D12, LOW);
digitalWrite(D13, LOW);
}
void loop() {
char caracter = mySerial.read();//Variavel para leitura da serial;
if (caracter == 'a')//Arduino recebe caracter do Android;
{
digitalWrite(AA4, HIGH);//Coloca o pino A4 em 5V;
//Serial.println("A4ON");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4ON");
EEPROM.write(5,1);//Gravar no endereço 5 da EEPROM o dado = 1;
}
if (caracter == 'b')//Arduino recebe caracter do Android;
{
digitalWrite(AA4, LOW);//Coloca o pino A4 em 0V;
//Serial.println("A4OFF");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4OFF");
EEPROM.write(5,0);//Gravar no endereço 5 da EEPROM o dado = 0;
}
//---------------------------------------------------------
if (caracter == 'c')//Arduino recebe caracter do Android;
{
digitalWrite(AA5, HIGH);//Coloca o pino A5 em 5V;
//Serial.println("A5ON");
mySerial.println("A5ON");
EEPROM.write(6,1);
}
if (caracter == 'd')//Arduino recebe caracter do Android;
{
digitalWrite(AA5, LOW);//Coloca o pino A5 em 0V;
//Serial.println("A5OFF");
mySerial.println("A5OFF");
EEPROM.write(6,0);
}
//----------------------------------------------------------
if (caracter == 'e')//Arduino recebe caracter do Android;
{
digitalWrite(D4, HIGH);//Coloca o pino D4 em 5V;
//Serial.println("D4ON");
mySerial.println("D4ON");
EEPROM.write(7,1);
}
if (caracter == 'f')//Arduino recebe caracter do Android;
{
digitalWrite(D4, LOW);//Coloca o pino D4 em 0V;
//Serial.println("D4OFF");
mySerial.println("D4OFF");
EEPROM.write(7,0);
}
//----------------------------------------------------------
if (caracter == 'g')//Arduino recebe caracter do Android;
{
digitalWrite(D5, HIGH);//Coloca o pino D5 em 5V;
//Serial.println("D5ON");
mySerial.println("D5ON");
EEPROM.write(8,1);
}
if (caracter == 'h')//Arduino recebe caracter do Android;
{
digitalWrite(D5, LOW);//Coloca o pino D5 em 0V;
//Serial.println("D5OFF");
mySerial.println("D5OFF");
EEPROM.write(8,0);
}
//----------------------------------------------------------
if (caracter == 'i')//Arduino recebe caracter do Android;
{
digitalWrite(D6, HIGH);//Coloca o pino D6 em 5V;
//Serial.println("D6ON");
mySerial.println("D6ON");
EEPROM.write(9,1);
}
if (caracter == 'j')//Arduino recebe caracter do Android;
{
digitalWrite(D6, LOW);//Coloca o pino D6 em 0V;
//Serial.println("D6OFF");
mySerial.println("D6OFF");
EEPROM.write(9,0);
}
//----------------------------------------------------------
if (caracter == 'k')//Arduino recebe caracter do Android;
{
digitalWrite(D7, HIGH);//Coloca o pino D7 em 5V;
//Serial.println("D7ON");
mySerial.println("D7ON");
EEPROM.write(10,1);
}
if (caracter == 'l')//Arduino recebe caracter do Android;
{
digitalWrite(D7, LOW);//Coloca o pino D7 em 0V;
//Serial.println("D7OFF");
mySerial.println("D7OFF");
EEPROM.write(10,0);
}
//----------------------------------------------------------
if (caracter == 'm')//Arduino recebe caracter do Android;
{
digitalWrite(D8, HIGH);//Coloca o pino D8 em 5V;
//Serial.println("D8ON");
mySerial.println("D8ON");
EEPROM.write(11,1);
}
if (caracter == 'n')//Arduino recebe caracter do Android;
{
digitalWrite(D8, LOW);//Coloca o pino D8 em 0V;
//Serial.println("D8OFF");
mySerial.println("D8OFF");
EEPROM.write(11,0);
}
//----------------------------------------------------------
if (caracter == 'o')//Arduino recebe caracter do Android;
{
digitalWrite(D9, HIGH);//Coloca o pino D9 em 5V;
//Serial.println("D9ON");
mySerial.println("D9ON");
EEPROM.write(12,1);
}
if (caracter == 'p')//Arduino recebe caracter do Android;
{
digitalWrite(D9, LOW);//Coloca o pino D9 em 0V;
//Serial.println("D9OFF");
mySerial.println("D9OFF");
EEPROM.write(12,0);
}
//----------------------------------------------------------
if (caracter == 'q')//Arduino recebe caracter do Android;
{
digitalWrite(D10, HIGH);//Coloca o pino D10 em 5V;
//Serial.println("D10ON");
mySerial.println("D10ON");
EEPROM.write(13,1);
}
if (caracter == 'r')//Arduino recebe caracter do Android;
{
digitalWrite(D10, LOW);//Coloca o pino D10 em 0V;
//Serial.println("D10OFF");
mySerial.println("D10OFF");
EEPROM.write(13,0);
}
//----------------------------------------------------------
if (caracter == 's')//Arduino recebe caracter do Android;
{
digitalWrite(D11, HIGH);//Coloca o pino D11 em 5V;
//Serial.println("D11ON");
mySerial.println("D11ON");
EEPROM.write(14,1);
}
if (caracter == 't')//Arduino recebe caracter do Android;
{
digitalWrite(D11, LOW);//Coloca o pino D11 em 0V;
//Serial.println("D11OFF");
mySerial.println("D11OFF");
EEPROM.write(14,0);
}
//----------------------------------------------------------
if (caracter == 'u')//Arduino recebe caracter do Android;
{
digitalWrite(D12, HIGH);//Coloca o pino D12 em 5V;
//Serial.println("D12ON");
mySerial.println("D12ON");
EEPROM.write(15,1);
}
if (caracter == 'v')//Arduino recebe caracter do Android;
{
digitalWrite(D12, LOW);//Coloca o pino D12 em 0V;
//Serial.println("D12OFF");
mySerial.println("D12OFF");
EEPROM.write(15,0);
}
//----------------------------------------------------------
if (caracter == 'x')//Arduino recebe caracter do Android;
{
digitalWrite(D13, HIGH);//Coloca o pino D13 em 5V;
//Serial.println("D13ON");
mySerial.println("D13ON");
EEPROM.write(16,1);
}
if (caracter == 'y')//Arduino recebe caracter do Android;
{
digitalWrite(D13, LOW);//Coloca o pino D13 em 0V;
//Serial.println("D13OFF");
mySerial.println("D13OFF");
EEPROM.write(16,0);
}
//----------------------------------------------------------
device1 = digitalRead(AA4);
device2 = digitalRead(AA5);
device3 = digitalRead(D4);
device4 = digitalRead(D5);
device5 = digitalRead(D6);
device6 = digitalRead(D7);
device7 = digitalRead(D8);
device8 = digitalRead(D9);
device9 = digitalRead(D10);
device10 = digitalRead(D11);
device11 = digitalRead(D12);
device12 = digitalRead(D13);
cont++;//Incrementa a contagem na variável cont;
valueA0 = analogRead(pinSensorA0);//Leitura do LM35;
//Para melhorar a precisão do valor lido da temperatura
//selecione o cálculo correspondente em função da tensão
//de alimentação do LM35(se possível use um voltímetro
//entre(VCC e GND do LM35);
//Este valor depende da fonte utilizada;
//Selecione apenas um cálculo por vez
//e o restante deixe como "//" comentário, conforme segue abaixo:
//LM35 = (valueA0 * 0.00488);// Alimentação LM35=5,0V;
//LM35 = (valueA0 * 0.00478);// Alimentação LM35=4,9V;
//LM35 = (valueA0 * 0.00469);// Alimentação LM35=4,8V;
//LM35 = (valueA0 * 0.00459);// Alimentação LM35=4,7V;
//LM35 = (valueA0 * 0.00449);// Alimentação LM35=4,6V;
//LM35 = (valueA0 * 0.00439);// Alimentação LM35=4,5V;
LM35 = (valueA0 * 0.00430);// Alimentação LM35=4,4V(exemplo);
LM35 = (LM35 * 100);
LM35Calc =(LM35Calc + LM35);
LDR = analogRead(pinSensorA1);
LDRCalc =(LDRCalc + LDR);
//comtém Somatória de 100 valores do LM35 e LDR
if(cont==100)//Cálculo e ajuste do valor médio LM35 e LDR;
{
cont=0;//Zera contagem;
LM35Calc = (LM35Calc/100);//Calcula o valor médio;
//LM35Calc = (LM35Calc*0.95);//Ajusta o valor;
mySerial.println("Y");
mySerial.println(LM35Calc, 1);//Envia para App. o Android;
LDRCalc = (LDRCalc/100);//Calcula o valor médio;
mySerial.println("Z");
mySerial.println(LDRCalc, 0);//Envia para o App. Android;
//Mostra valor LM35 e LDR no Serial Monitor na IDE Arduino;
//Serial.print("LM35: ");//Mostra valores no Serial Monitor Arduino;
//Serial.println(LM35Calc, 1);//Mostra valores no Serial Monitor Arduino;
//Serial.print("LDR: ");//Mostra valores no Serial Monitor Arduino;
//Serial.println(LDRCalc, 0);//Mostra valores no Serial Monitor Arduino;
//--------------Compara LM35Calc com LM35Setup-------------------
if (LM35Calc >= LM35Setup){
digitalWrite(AA2, HIGH);//Coloca o pino A2 em 5V, FAN ON;
//Serial.println("A2ON");
mySerial.println("A2ON");
}
if (LM35Calc <= LM35Setup){
digitalWrite(AA2, LOW);//Coloca o pino A2 em 0V, FAN OFF;
//Serial.println("A2OFF");
mySerial.println("A2OFF");
}
//----------------Compara LDRCalc com LDRSetup-------------------
if (LDRCalc <= LDRSetup){
digitalWrite(AA3, HIGH);//Coloca o pino A3 em 5V, LIGHT ON;
//Serial.println("A3ON");
mySerial.println("A3ON");
}
if (LDRCalc >= LDRSetup){
digitalWrite(AA3, LOW);//Coloca o pino A3 em 0V, LIGHT OFF;
//Serial.println("A3OFF");
mySerial.println("A3OFF");
}
//------------------------------------------------------------------
}
delay(15);
//Como são executados 100 leituras x 15ms e tirado a média,
//o valor da temperatura e luminosidade será apresentado no
//Smartphone Android a cada 1500 ms.
//Com isso teremos um valor real e estabilidade nas leituras.
//-------------------Get New Status Switches----------------------
if (caracter == 'A')//Arduino recebe caracter do Android;
{
if (device1 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("A4ON");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4ON");//Arduino envia para Serial Bluetooth do Android;
}
if (device1 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("A4OFF");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
}
//----------------------------------------------------------------
if (device2 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("A5ON");
mySerial.println("A5ON");
}
if (device2 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("A5OFF");
mySerial.println("A5OFF");
}
//----------------------------------------------------------------
if (device3 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D4ON");
mySerial.println("D4ON");
}
if (device3 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D4OFF");
mySerial.println("D4OFF");
}
//----------------------------------------------------------------
if (device4 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D5ON");
mySerial.println("D5ON");
}
if (device4 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D5OFF");
mySerial.println("D5OFF");
}
//----------------------------------------------------------------
if (device5 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D6ON");
mySerial.println("D6ON");
}
if (device5 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D6OFF");
mySerial.println("D6OFF");
}
//----------------------------------------------------------------
if (device6 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D7ON");
mySerial.println("D7ON");
}
if (device6 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D7OFF");
mySerial.println("D7OFF");
}
//----------------------------------------------------------------
if (device7 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D8ON");
mySerial.println("D8ON");
}
if (device7 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D8OFF");
mySerial.println("D8OFF");
}
//----------------------------------------------------------------
if (device8 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D9ON");
mySerial.println("D9ON");
}
if (device8 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D9OFF");
mySerial.println("D9OFF");
}
//----------------------------------------------------------------
if (device9 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D10ON");
mySerial.println("D10ON");
}
if (device9 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D10OFF");
mySerial.println("D10OFF");
}
//----------------------------------------------------------------
if (device10 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D11ON");
mySerial.println("D11ON");
}
if (device10 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D11OFF");
mySerial.println("D11OFF");
}
//----------------------------------------------------------------
if (device11 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D12ON");
mySerial.println("D12ON");
}
if (device11 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D12OFF");
mySerial.println("D12OFF");
}
//----------------------------------------------------------------
if (device12 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D13ON");
mySerial.println("D13ON");
}
if (device12 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D13OFF");
mySerial.println("D13OFF");
}
}
//--------------------Setup LM35--------------------------------
if (caracter == 'U')//Arduino recebe caracter do Android;
{
LM35Setup++;
EEPROM.write(0,LM35Setup);
if (LM35Setup >= 100){
LM35Setup =100;
}
}
if (caracter == 'V')//Arduino recebe caracter do Android;
{
LM35Setup--;
EEPROM.write(0,LM35Setup);
if (LM35Setup <= 0){
LM35Setup = 0;
}
}
//--------------------Setup LDR--------------------------------
if (caracter == 'R')//Arduino recebe caracter do Android;
{
LDRSetup = (LDRSetup +10);
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão; Exemplo: 250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
if (LDRSetup >= 1000){
LDRSetup =1000;
}
}
//-------------------------------------------------
if (caracter == 'T')//Arduino recebe caracter do Android;
{
LDRSetup = (LDRSetup -10);
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão; Exemplo: 250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
if (LDRSetup <= 0){
LDRSetup = 0;
}
}
//----------Valores Defaults LM35=25C e LDR=250Lux-------------
if (caracter == 'X')//Arduino recebe caracter do Android;
{
LM35Setup = 25;
EEPROM.write(0,LM35Setup);
}
if (caracter == 'S')//Arduino recebe caracter do Android;
{
LDRSetup = 250;
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão;250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
}
//Recupera SWITCHES, dados gravados na EEPROM durante desligamento ou reset;
if(contSwitches12<=1){
contSwitches12++;
if( (EEPROM.read(5))==1){
digitalWrite(AA4, HIGH);
}
if( (EEPROM.read(5))==0){
digitalWrite(AA4, LOW);
}
if( (EEPROM.read(6))==1){
digitalWrite(AA5, HIGH);
}
if( (EEPROM.read(6))==0){
digitalWrite(AA5, LOW);
}
if( (EEPROM.read(7))==1){
digitalWrite(D4, HIGH);
}
if( (EEPROM.read(7))==0){
digitalWrite(D4, LOW);
}
if( (EEPROM.read(8))==1){
digitalWrite(D5, HIGH);
}
if( (EEPROM.read(8))==0){
digitalWrite(D5, LOW);
}
if( (EEPROM.read(9))==1){
digitalWrite(D6, HIGH);
}
if( (EEPROM.read(9))==0){
digitalWrite(D6, LOW);
}
if( (EEPROM.read(10))==1){
digitalWrite(D7, HIGH);
}
if( (EEPROM.read(10))==0){
digitalWrite(D7, LOW);
}
if( (EEPROM.read(11))==1){
digitalWrite(D8, HIGH);
}
if( (EEPROM.read(11))==0){
digitalWrite(D8, LOW);
}
if( (EEPROM.read(12))==1){
digitalWrite(D9, HIGH);
}
if( (EEPROM.read(12))==0){
digitalWrite(D9, LOW);
}
if( (EEPROM.read(13))==1){
digitalWrite(D10, HIGH);
}
if( (EEPROM.read(13))==0){
digitalWrite(D10, LOW);
}
if( (EEPROM.read(14))==1){
digitalWrite(D11, HIGH);
}
if( (EEPROM.read(14))==0){
digitalWrite(D11, LOW);
}
if( (EEPROM.read(15))==1){
digitalWrite(D12, HIGH);
}
if( (EEPROM.read(15))==0){
digitalWrite(D12, LOW);
}
if( (EEPROM.read(16))==1){
digitalWrite(D13, HIGH);
}
if( (EEPROM.read(16))==0){
digitalWrite(D13, LOW);
}
}
//-------Timer1: Temporizador/Contagem de tempo de 15s a 8h------------//
if(contSetupTimer1<=1){
contSetupTimer1++;
ContTimer1ONOFF =2;//Desativa a contagem de tempo;
ContTimer1 =0;//Inicia a contagem em zero;
}
//ContTimerB=3996;//Botão incrementa valor do Timer para 1 minuto;
if (caracter == 'B'){
IncCont++;}
if (IncCont == 1){//15seg;
ContTimerB=1000;}
if (IncCont == 2){//30seg;
ContTimerB=2000;}
if (IncCont == 3){//60seg;
ContTimerB=4000;}
if (IncCont == 4){//5min;
ContTimerB=20000;}
if (IncCont == 5){//15min;
ContTimerB=60000;}
if (IncCont == 6){//30min;
ContTimerB=120000;}
if (IncCont == 7){//1h;
ContTimerB=240000;}
if (IncCont == 8){//2h;
ContTimerB=480000;}
if (IncCont == 9){//4h;
ContTimerB=960000;}
if (IncCont == 10){//6h;
ContTimerB=1440000;}
if (IncCont == 11){//8h;
ContTimerB=1920000;}
if (IncCont == 12){//15seg;
IncCont = 1;}
//------------------------
if (caracter == 'C')//Arduino recebe caracter do Android Sync(setup 15seg);
{
IncCont = 1;
}
//------------------------
if (caracter == 'K') //Arduino recebe caracter do Android ligar Timer1ON;
{
digitalWrite(AA4, HIGH);
mySerial.println("A4ON");//Arduino envia para Serial Bluetooth do Android;
ContTimer1ONOFF=1;//ON
}
if (ContTimer1 >= ContTimerB){
ContTimer1=0;//Seta a contagem em zero;
ContTimer1ONOFF=2;//OFF Para a contagem do ContTimer1;
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
digitalWrite(AA4, LOW);
mySerial.println("Timer1OFF");//Arduino envia para Serial Bluetooth do Android;
//---------------------------------------
//1 min. = 3996=> 1 seg. = 66.5
//Timer1IncSeg = ContTimer1;//Encontra divizões para segundos;
//---------------------------------------
}
if (caracter == 'L')//Arduino recebe caracter do Android Timer1OFF;
{
digitalWrite(AA4, LOW);
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
ContTimer1=0;//Seta a contagem em zero;
ContTimer1ONOFF=2;//OFF Para a contagem do ContTimer1;
}
//-------------------------------------------------------------------------
if ((ContTimer1ONOFF ==1)&&((IncCont==1)||(IncCont==2)||(IncCont==3)))
{
ContTimer1++; //Contagem de tempo;
Timer1IncSeg++;//Contagem de segundos;
}
if((ContTimer1ONOFF ==1)&&((IncCont==4)||(IncCont==5)||(IncCont==6)
||(IncCont==7)||(IncCont==8)||(IncCont==9)||(IncCont==10)||(IncCont==11)))
{
ContTimer1++; //Contagem de tempo;
Timer1IncMin++;//Contagem de minutos;
}
//------------------------------------------------------------------------
if (ContTimer1ONOFF ==2)
{
ContTimer1 =0;//Contagem de tempo;
}
//----------------------------Timer1 para 1 segundo-----------------
//1 min. = 3996=> 1 seg. = 66,5
//Timer1IncSeg = ContTimer1;//Encontra divizões para segundos;
if (Timer1IncSeg == 66){
mySerial.println("Timer1IncSeg");//Arduino envia CMD para Android;
Timer1IncSeg = 0;
}
//----------------------------Timer1 para 1 minuto-----------------
//1 min. = 3996
if (Timer1IncMin == 3996){
mySerial.println("Timer1IncMin");//Arduino envia CMD para Android;
Timer1IncMin = 0;
}
//------------------------------------------------------------------
}//Loop
// MONITOR receve valores LM35 e LDR via bluetooth para o App. Android //
// Botões Editáveis com os nomes a escoller para cada um dos 14 canais //
// Os nomes dos dispositivos são gravados em banco de dados no App. //
// Controle de 14 canais sendo dois canais no modo automático //
// Função Bluetooth Server:Arduino envia dados LM35 e LDR a cada 1000ms// //
// Os valores dos setups de LM35 e LDR são gravados na EEPROM //
// Os setups e acionamentos são recuperados pela EEPROM em queda de //
// Energia ou reset do Arduino //
// Sistema Get Status Switches recupera a posição ON/OFF de 14 canais //
// O App. e Celular podem ser desligados que o Arduino mantém tudo //
// Funcionando conforme configurações. //
//***********************************************************************//
//Bibliotecas;
#include <SoftwareSerial.h>//Biblioteca para Serial Monitor IDE;
SoftwareSerial mySerial(2, 3);//Biblioteca para serial bluetooth;
//Arduino D2(Bluetooth-TX), Arduino D3(Bluetooth-RX);
#include <EEPROM.h>
//Declaração das variáveis de programa;
int device1 = 0;
int device2 = 0;
int device3 = 0;
int device4 = 0;
int device5 = 0;
int device6 = 0;
int device7 = 0;
int device8 = 0;
int device9 = 0;
int device10 = 0;
int device11 = 0;
int device12 = 0;
char caracter;
int AA2 = A2;//Arduino analogica A2;
int AA3 = A3;//Arduino analogica A3;
int AA4 = A4;//Arduino analogica A4;
int AA5 = A5;//Arduino analogica A5;
int D4 = 4;//Arduino digital D4;
int D5 = 5;//Arduino digital D5;
int D6 = 6;//Arduino digital D6;
int D7 = 7;//Arduino digital D7;
int D8 = 8;//Arduino digital D8;
int D9 = 9;//Arduino digital D9;
int D10 = 10;//Arduino digital D10;
int D11 = 11;//Arduino digital D11;
int D12 = 12;//Arduino digital D12;
int D13 = 13;//Arduino digital D13;
int pinSensorA0 = 0;//Analógica A0 conectado ao LM35;
int valueA0 = 0;//Variável para leitura LM35;
int pinSensorA1 = 1;//Analógica A1 conectado ao LDR;
float LM35 = 0;//Variável calcula e armazena valorlido do LM35;
float LDR = 0;//Variável calcula e armazena valorlido do LDR;
int cont = 0;//Variável para contagem do numero de leituras LM35 e LDR;
float LM35Calc = 0;//Variável tira a média de 100 leituras do LM35;
float LDRCalc = 0;//Variável tira a média de 100 leituras do LDR;
float LM35Setup;
float LDRSetup;
int LDRSetupEEprom;
int addressLDR1;
int addressLDR2;
int address1;
int address2;
int address3;
int address4;
int Divide1;
int Divide2;
int RestoDivisao;
int Resultado1;
int Resultado2;
int Resultado3;
int Resultado4;
int Res2;
int Res3;
int contSwitches12=0;
//int ContTimer1;
int ContTimerB;
int IncCont;
//int ContTimer1ONOFF;//ON/OFF
unsigned long ContTimer1ONOFF;//ON/OFF
unsigned long ContTimer1;
int Timer1IncSeg;//Contagem de segundos;
int Timer1IncMin;//Contagem de minutos;
int contSetupTimer1=0;//Contagem para setup das variáveis de controle de tempo;
void setup() {
mySerial.begin(9600);//Velocidade serial em 9600bps pinos D2 e D3;
//Bluetooth também deve estar na mesma veloc. 9600bps;
Serial.begin(9600);//Velocidade serial em 9600bps pinos D0 e D1;
//Serial Monitor IDE também deve estar na mesma veloc. 9600bps;
//Recupera o valor do LM35 gravado na EEPROM na queda de energia ou reset do Arduino;
LM35Setup=(EEPROM.read(0));//Inicializa a variável(LM35Setup)
//com o ultimo valor gravado na posição 0 da EEPROM;
Resultado1=(EEPROM.read(1));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 1 da EEPROM;
Res2=(EEPROM.read(2));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 2 da EEPROM;
Res3=(EEPROM.read(3));//Inicializa a variável(LDRSetup)
//com o ultimo valor gravado na posição 3 da EEPROM;
//Recupera o valor do LDR gravado na EEPROM na queda de energia ou reset do Arduino;
LDRSetupEEprom = ((EEPROM.read(1)*1000)+(EEPROM.read(2)*100)+(EEPROM.read(3)*10));
LDRSetup = LDRSetupEEprom;
IncCont =1;
//ContTimerB=4000;//Contagem para 1 minuto 60.000ms/15ms(loop);
ContTimer1ONOFF =2;//Desativa a contagem de tempo;
ContTimer1 =0;//Inicia a contagem em zero;
Timer1IncSeg =0;//Inicia contagem de segundos em zero;
Timer1IncMin =0;//Inicia contagem de minutos em zero;
//-----------------------Define porta como saída-----------------------
pinMode(AA2, OUTPUT);
pinMode(AA3, OUTPUT);
pinMode(AA4, OUTPUT);
pinMode(AA5, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
pinMode(D9, OUTPUT);
pinMode(D10, OUTPUT);
pinMode(D11, OUTPUT);
pinMode(D12, OUTPUT);
pinMode(D13, OUTPUT);
//-----------------------Inicializa porta em 0V-----------------------
digitalWrite(AA2, LOW);
digitalWrite(AA3, LOW);
digitalWrite(AA4, LOW);
digitalWrite(AA5, LOW);
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
digitalWrite(D8, LOW);
digitalWrite(D9, LOW);
digitalWrite(D10, LOW);
digitalWrite(D11, LOW);
digitalWrite(D12, LOW);
digitalWrite(D13, LOW);
}
void loop() {
char caracter = mySerial.read();//Variavel para leitura da serial;
if (caracter == 'a')//Arduino recebe caracter do Android;
{
digitalWrite(AA4, HIGH);//Coloca o pino A4 em 5V;
//Serial.println("A4ON");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4ON");
EEPROM.write(5,1);//Gravar no endereço 5 da EEPROM o dado = 1;
}
if (caracter == 'b')//Arduino recebe caracter do Android;
{
digitalWrite(AA4, LOW);//Coloca o pino A4 em 0V;
//Serial.println("A4OFF");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4OFF");
EEPROM.write(5,0);//Gravar no endereço 5 da EEPROM o dado = 0;
}
//---------------------------------------------------------
if (caracter == 'c')//Arduino recebe caracter do Android;
{
digitalWrite(AA5, HIGH);//Coloca o pino A5 em 5V;
//Serial.println("A5ON");
mySerial.println("A5ON");
EEPROM.write(6,1);
}
if (caracter == 'd')//Arduino recebe caracter do Android;
{
digitalWrite(AA5, LOW);//Coloca o pino A5 em 0V;
//Serial.println("A5OFF");
mySerial.println("A5OFF");
EEPROM.write(6,0);
}
//----------------------------------------------------------
if (caracter == 'e')//Arduino recebe caracter do Android;
{
digitalWrite(D4, HIGH);//Coloca o pino D4 em 5V;
//Serial.println("D4ON");
mySerial.println("D4ON");
EEPROM.write(7,1);
}
if (caracter == 'f')//Arduino recebe caracter do Android;
{
digitalWrite(D4, LOW);//Coloca o pino D4 em 0V;
//Serial.println("D4OFF");
mySerial.println("D4OFF");
EEPROM.write(7,0);
}
//----------------------------------------------------------
if (caracter == 'g')//Arduino recebe caracter do Android;
{
digitalWrite(D5, HIGH);//Coloca o pino D5 em 5V;
//Serial.println("D5ON");
mySerial.println("D5ON");
EEPROM.write(8,1);
}
if (caracter == 'h')//Arduino recebe caracter do Android;
{
digitalWrite(D5, LOW);//Coloca o pino D5 em 0V;
//Serial.println("D5OFF");
mySerial.println("D5OFF");
EEPROM.write(8,0);
}
//----------------------------------------------------------
if (caracter == 'i')//Arduino recebe caracter do Android;
{
digitalWrite(D6, HIGH);//Coloca o pino D6 em 5V;
//Serial.println("D6ON");
mySerial.println("D6ON");
EEPROM.write(9,1);
}
if (caracter == 'j')//Arduino recebe caracter do Android;
{
digitalWrite(D6, LOW);//Coloca o pino D6 em 0V;
//Serial.println("D6OFF");
mySerial.println("D6OFF");
EEPROM.write(9,0);
}
//----------------------------------------------------------
if (caracter == 'k')//Arduino recebe caracter do Android;
{
digitalWrite(D7, HIGH);//Coloca o pino D7 em 5V;
//Serial.println("D7ON");
mySerial.println("D7ON");
EEPROM.write(10,1);
}
if (caracter == 'l')//Arduino recebe caracter do Android;
{
digitalWrite(D7, LOW);//Coloca o pino D7 em 0V;
//Serial.println("D7OFF");
mySerial.println("D7OFF");
EEPROM.write(10,0);
}
//----------------------------------------------------------
if (caracter == 'm')//Arduino recebe caracter do Android;
{
digitalWrite(D8, HIGH);//Coloca o pino D8 em 5V;
//Serial.println("D8ON");
mySerial.println("D8ON");
EEPROM.write(11,1);
}
if (caracter == 'n')//Arduino recebe caracter do Android;
{
digitalWrite(D8, LOW);//Coloca o pino D8 em 0V;
//Serial.println("D8OFF");
mySerial.println("D8OFF");
EEPROM.write(11,0);
}
//----------------------------------------------------------
if (caracter == 'o')//Arduino recebe caracter do Android;
{
digitalWrite(D9, HIGH);//Coloca o pino D9 em 5V;
//Serial.println("D9ON");
mySerial.println("D9ON");
EEPROM.write(12,1);
}
if (caracter == 'p')//Arduino recebe caracter do Android;
{
digitalWrite(D9, LOW);//Coloca o pino D9 em 0V;
//Serial.println("D9OFF");
mySerial.println("D9OFF");
EEPROM.write(12,0);
}
//----------------------------------------------------------
if (caracter == 'q')//Arduino recebe caracter do Android;
{
digitalWrite(D10, HIGH);//Coloca o pino D10 em 5V;
//Serial.println("D10ON");
mySerial.println("D10ON");
EEPROM.write(13,1);
}
if (caracter == 'r')//Arduino recebe caracter do Android;
{
digitalWrite(D10, LOW);//Coloca o pino D10 em 0V;
//Serial.println("D10OFF");
mySerial.println("D10OFF");
EEPROM.write(13,0);
}
//----------------------------------------------------------
if (caracter == 's')//Arduino recebe caracter do Android;
{
digitalWrite(D11, HIGH);//Coloca o pino D11 em 5V;
//Serial.println("D11ON");
mySerial.println("D11ON");
EEPROM.write(14,1);
}
if (caracter == 't')//Arduino recebe caracter do Android;
{
digitalWrite(D11, LOW);//Coloca o pino D11 em 0V;
//Serial.println("D11OFF");
mySerial.println("D11OFF");
EEPROM.write(14,0);
}
//----------------------------------------------------------
if (caracter == 'u')//Arduino recebe caracter do Android;
{
digitalWrite(D12, HIGH);//Coloca o pino D12 em 5V;
//Serial.println("D12ON");
mySerial.println("D12ON");
EEPROM.write(15,1);
}
if (caracter == 'v')//Arduino recebe caracter do Android;
{
digitalWrite(D12, LOW);//Coloca o pino D12 em 0V;
//Serial.println("D12OFF");
mySerial.println("D12OFF");
EEPROM.write(15,0);
}
//----------------------------------------------------------
if (caracter == 'x')//Arduino recebe caracter do Android;
{
digitalWrite(D13, HIGH);//Coloca o pino D13 em 5V;
//Serial.println("D13ON");
mySerial.println("D13ON");
EEPROM.write(16,1);
}
if (caracter == 'y')//Arduino recebe caracter do Android;
{
digitalWrite(D13, LOW);//Coloca o pino D13 em 0V;
//Serial.println("D13OFF");
mySerial.println("D13OFF");
EEPROM.write(16,0);
}
//----------------------------------------------------------
device1 = digitalRead(AA4);
device2 = digitalRead(AA5);
device3 = digitalRead(D4);
device4 = digitalRead(D5);
device5 = digitalRead(D6);
device6 = digitalRead(D7);
device7 = digitalRead(D8);
device8 = digitalRead(D9);
device9 = digitalRead(D10);
device10 = digitalRead(D11);
device11 = digitalRead(D12);
device12 = digitalRead(D13);
cont++;//Incrementa a contagem na variável cont;
valueA0 = analogRead(pinSensorA0);//Leitura do LM35;
//Para melhorar a precisão do valor lido da temperatura
//selecione o cálculo correspondente em função da tensão
//de alimentação do LM35(se possível use um voltímetro
//entre(VCC e GND do LM35);
//Este valor depende da fonte utilizada;
//Selecione apenas um cálculo por vez
//e o restante deixe como "//" comentário, conforme segue abaixo:
//LM35 = (valueA0 * 0.00488);// Alimentação LM35=5,0V;
//LM35 = (valueA0 * 0.00478);// Alimentação LM35=4,9V;
//LM35 = (valueA0 * 0.00469);// Alimentação LM35=4,8V;
//LM35 = (valueA0 * 0.00459);// Alimentação LM35=4,7V;
//LM35 = (valueA0 * 0.00449);// Alimentação LM35=4,6V;
//LM35 = (valueA0 * 0.00439);// Alimentação LM35=4,5V;
LM35 = (valueA0 * 0.00430);// Alimentação LM35=4,4V(exemplo);
LM35 = (LM35 * 100);
LM35Calc =(LM35Calc + LM35);
LDR = analogRead(pinSensorA1);
LDRCalc =(LDRCalc + LDR);
//comtém Somatória de 100 valores do LM35 e LDR
if(cont==100)//Cálculo e ajuste do valor médio LM35 e LDR;
{
cont=0;//Zera contagem;
LM35Calc = (LM35Calc/100);//Calcula o valor médio;
//LM35Calc = (LM35Calc*0.95);//Ajusta o valor;
mySerial.println("Y");
mySerial.println(LM35Calc, 1);//Envia para App. o Android;
LDRCalc = (LDRCalc/100);//Calcula o valor médio;
mySerial.println("Z");
mySerial.println(LDRCalc, 0);//Envia para o App. Android;
//Mostra valor LM35 e LDR no Serial Monitor na IDE Arduino;
//Serial.print("LM35: ");//Mostra valores no Serial Monitor Arduino;
//Serial.println(LM35Calc, 1);//Mostra valores no Serial Monitor Arduino;
//Serial.print("LDR: ");//Mostra valores no Serial Monitor Arduino;
//Serial.println(LDRCalc, 0);//Mostra valores no Serial Monitor Arduino;
//--------------Compara LM35Calc com LM35Setup-------------------
if (LM35Calc >= LM35Setup){
digitalWrite(AA2, HIGH);//Coloca o pino A2 em 5V, FAN ON;
//Serial.println("A2ON");
mySerial.println("A2ON");
}
if (LM35Calc <= LM35Setup){
digitalWrite(AA2, LOW);//Coloca o pino A2 em 0V, FAN OFF;
//Serial.println("A2OFF");
mySerial.println("A2OFF");
}
//----------------Compara LDRCalc com LDRSetup-------------------
if (LDRCalc <= LDRSetup){
digitalWrite(AA3, HIGH);//Coloca o pino A3 em 5V, LIGHT ON;
//Serial.println("A3ON");
mySerial.println("A3ON");
}
if (LDRCalc >= LDRSetup){
digitalWrite(AA3, LOW);//Coloca o pino A3 em 0V, LIGHT OFF;
//Serial.println("A3OFF");
mySerial.println("A3OFF");
}
//------------------------------------------------------------------
}
delay(15);
//Como são executados 100 leituras x 15ms e tirado a média,
//o valor da temperatura e luminosidade será apresentado no
//Smartphone Android a cada 1500 ms.
//Com isso teremos um valor real e estabilidade nas leituras.
//-------------------Get New Status Switches----------------------
if (caracter == 'A')//Arduino recebe caracter do Android;
{
if (device1 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("A4ON");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4ON");//Arduino envia para Serial Bluetooth do Android;
}
if (device1 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("A4OFF");//Mostra valores no Serial Monitor Arduino;
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
}
//----------------------------------------------------------------
if (device2 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("A5ON");
mySerial.println("A5ON");
}
if (device2 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("A5OFF");
mySerial.println("A5OFF");
}
//----------------------------------------------------------------
if (device3 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D4ON");
mySerial.println("D4ON");
}
if (device3 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D4OFF");
mySerial.println("D4OFF");
}
//----------------------------------------------------------------
if (device4 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D5ON");
mySerial.println("D5ON");
}
if (device4 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D5OFF");
mySerial.println("D5OFF");
}
//----------------------------------------------------------------
if (device5 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D6ON");
mySerial.println("D6ON");
}
if (device5 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D6OFF");
mySerial.println("D6OFF");
}
//----------------------------------------------------------------
if (device6 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D7ON");
mySerial.println("D7ON");
}
if (device6 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D7OFF");
mySerial.println("D7OFF");
}
//----------------------------------------------------------------
if (device7 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D8ON");
mySerial.println("D8ON");
}
if (device7 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D8OFF");
mySerial.println("D8OFF");
}
//----------------------------------------------------------------
if (device8 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D9ON");
mySerial.println("D9ON");
}
if (device8 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D9OFF");
mySerial.println("D9OFF");
}
//----------------------------------------------------------------
if (device9 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D10ON");
mySerial.println("D10ON");
}
if (device9 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D10OFF");
mySerial.println("D10OFF");
}
//----------------------------------------------------------------
if (device10 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D11ON");
mySerial.println("D11ON");
}
if (device10 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D11OFF");
mySerial.println("D11OFF");
}
//----------------------------------------------------------------
if (device11 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D12ON");
mySerial.println("D12ON");
}
if (device11 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D12OFF");
mySerial.println("D12OFF");
}
//----------------------------------------------------------------
if (device12 == HIGH) {//Verificar se a entrada é HIGH;
//Serial.println("D13ON");
mySerial.println("D13ON");
}
if (device12 == LOW) {//Verificar se a entrada é LOW;
//Serial.println("D13OFF");
mySerial.println("D13OFF");
}
}
//--------------------Setup LM35--------------------------------
if (caracter == 'U')//Arduino recebe caracter do Android;
{
LM35Setup++;
EEPROM.write(0,LM35Setup);
if (LM35Setup >= 100){
LM35Setup =100;
}
}
if (caracter == 'V')//Arduino recebe caracter do Android;
{
LM35Setup--;
EEPROM.write(0,LM35Setup);
if (LM35Setup <= 0){
LM35Setup = 0;
}
}
//--------------------Setup LDR--------------------------------
if (caracter == 'R')//Arduino recebe caracter do Android;
{
LDRSetup = (LDRSetup +10);
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão; Exemplo: 250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
if (LDRSetup >= 1000){
LDRSetup =1000;
}
}
//-------------------------------------------------
if (caracter == 'T')//Arduino recebe caracter do Android;
{
LDRSetup = (LDRSetup -10);
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão; Exemplo: 250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
if (LDRSetup <= 0){
LDRSetup = 0;
}
}
//----------Valores Defaults LM35=25C e LDR=250Lux-------------
if (caracter == 'X')//Arduino recebe caracter do Android;
{
LM35Setup = 25;
EEPROM.write(0,LM35Setup);
}
if (caracter == 'S')//Arduino recebe caracter do Android;
{
LDRSetup = 250;
Divide1 = LDRSetup;
Divide2 = Divide1;
Resultado1 = (Divide1/1000);
Resultado2 = (Divide2%1000);//Separa resto da divisão;250
Res2 = (Resultado2/100);
Resultado3 = (Resultado2%100);//250/100 = 2,50 => resto =50
Res3 = (Resultado3/10);
EEPROM.write(1,Resultado1);
EEPROM.write(2,Res2);
EEPROM.write(3,Res3);
}
//Recupera SWITCHES, dados gravados na EEPROM durante desligamento ou reset;
if(contSwitches12<=1){
contSwitches12++;
if( (EEPROM.read(5))==1){
digitalWrite(AA4, HIGH);
}
if( (EEPROM.read(5))==0){
digitalWrite(AA4, LOW);
}
if( (EEPROM.read(6))==1){
digitalWrite(AA5, HIGH);
}
if( (EEPROM.read(6))==0){
digitalWrite(AA5, LOW);
}
if( (EEPROM.read(7))==1){
digitalWrite(D4, HIGH);
}
if( (EEPROM.read(7))==0){
digitalWrite(D4, LOW);
}
if( (EEPROM.read(8))==1){
digitalWrite(D5, HIGH);
}
if( (EEPROM.read(8))==0){
digitalWrite(D5, LOW);
}
if( (EEPROM.read(9))==1){
digitalWrite(D6, HIGH);
}
if( (EEPROM.read(9))==0){
digitalWrite(D6, LOW);
}
if( (EEPROM.read(10))==1){
digitalWrite(D7, HIGH);
}
if( (EEPROM.read(10))==0){
digitalWrite(D7, LOW);
}
if( (EEPROM.read(11))==1){
digitalWrite(D8, HIGH);
}
if( (EEPROM.read(11))==0){
digitalWrite(D8, LOW);
}
if( (EEPROM.read(12))==1){
digitalWrite(D9, HIGH);
}
if( (EEPROM.read(12))==0){
digitalWrite(D9, LOW);
}
if( (EEPROM.read(13))==1){
digitalWrite(D10, HIGH);
}
if( (EEPROM.read(13))==0){
digitalWrite(D10, LOW);
}
if( (EEPROM.read(14))==1){
digitalWrite(D11, HIGH);
}
if( (EEPROM.read(14))==0){
digitalWrite(D11, LOW);
}
if( (EEPROM.read(15))==1){
digitalWrite(D12, HIGH);
}
if( (EEPROM.read(15))==0){
digitalWrite(D12, LOW);
}
if( (EEPROM.read(16))==1){
digitalWrite(D13, HIGH);
}
if( (EEPROM.read(16))==0){
digitalWrite(D13, LOW);
}
}
//-------Timer1: Temporizador/Contagem de tempo de 15s a 8h------------//
if(contSetupTimer1<=1){
contSetupTimer1++;
ContTimer1ONOFF =2;//Desativa a contagem de tempo;
ContTimer1 =0;//Inicia a contagem em zero;
}
//ContTimerB=3996;//Botão incrementa valor do Timer para 1 minuto;
if (caracter == 'B'){
IncCont++;}
if (IncCont == 1){//15seg;
ContTimerB=1000;}
if (IncCont == 2){//30seg;
ContTimerB=2000;}
if (IncCont == 3){//60seg;
ContTimerB=4000;}
if (IncCont == 4){//5min;
ContTimerB=20000;}
if (IncCont == 5){//15min;
ContTimerB=60000;}
if (IncCont == 6){//30min;
ContTimerB=120000;}
if (IncCont == 7){//1h;
ContTimerB=240000;}
if (IncCont == 8){//2h;
ContTimerB=480000;}
if (IncCont == 9){//4h;
ContTimerB=960000;}
if (IncCont == 10){//6h;
ContTimerB=1440000;}
if (IncCont == 11){//8h;
ContTimerB=1920000;}
if (IncCont == 12){//15seg;
IncCont = 1;}
//------------------------
if (caracter == 'C')//Arduino recebe caracter do Android Sync(setup 15seg);
{
IncCont = 1;
}
//------------------------
if (caracter == 'K') //Arduino recebe caracter do Android ligar Timer1ON;
{
digitalWrite(AA4, HIGH);
mySerial.println("A4ON");//Arduino envia para Serial Bluetooth do Android;
ContTimer1ONOFF=1;//ON
}
if (ContTimer1 >= ContTimerB){
ContTimer1=0;//Seta a contagem em zero;
ContTimer1ONOFF=2;//OFF Para a contagem do ContTimer1;
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
digitalWrite(AA4, LOW);
mySerial.println("Timer1OFF");//Arduino envia para Serial Bluetooth do Android;
//---------------------------------------
//1 min. = 3996=> 1 seg. = 66.5
//Timer1IncSeg = ContTimer1;//Encontra divizões para segundos;
//---------------------------------------
}
if (caracter == 'L')//Arduino recebe caracter do Android Timer1OFF;
{
digitalWrite(AA4, LOW);
mySerial.println("A4OFF");//Arduino envia para Serial Bluetooth do Android;
ContTimer1=0;//Seta a contagem em zero;
ContTimer1ONOFF=2;//OFF Para a contagem do ContTimer1;
}
//-------------------------------------------------------------------------
if ((ContTimer1ONOFF ==1)&&((IncCont==1)||(IncCont==2)||(IncCont==3)))
{
ContTimer1++; //Contagem de tempo;
Timer1IncSeg++;//Contagem de segundos;
}
if((ContTimer1ONOFF ==1)&&((IncCont==4)||(IncCont==5)||(IncCont==6)
||(IncCont==7)||(IncCont==8)||(IncCont==9)||(IncCont==10)||(IncCont==11)))
{
ContTimer1++; //Contagem de tempo;
Timer1IncMin++;//Contagem de minutos;
}
//------------------------------------------------------------------------
if (ContTimer1ONOFF ==2)
{
ContTimer1 =0;//Contagem de tempo;
}
//----------------------------Timer1 para 1 segundo-----------------
//1 min. = 3996=> 1 seg. = 66,5
//Timer1IncSeg = ContTimer1;//Encontra divizões para segundos;
if (Timer1IncSeg == 66){
mySerial.println("Timer1IncSeg");//Arduino envia CMD para Android;
Timer1IncSeg = 0;
}
//----------------------------Timer1 para 1 minuto-----------------
//1 min. = 3996
if (Timer1IncMin == 3996){
mySerial.println("Timer1IncMin");//Arduino envia CMD para Android;
Timer1IncMin = 0;
}
//------------------------------------------------------------------
}//Loop
5)- Lista de Materiais;
Escolha uma fonte de alimentação ou bateria de sua preferencia:
Fonte de Alimentação de 9V/500mA com plug J4:
Utilizada para Alimentação do Arduino com sensores lm35, LDR e leds.
Fonte de Alimentação de 5V/500mA com plug J4 ou fios para protoboard:
Utilizada para alimentação dos relés(fonte independente mas conectadas através dos GND´s).
Outro exemplo: Fonte de alimentação 5V/1000mA com saída cabo USB:
Outro exemplo: Bateria de 9V com conector cabo e plug J4:
Placa Arduino Uno R3:
Sensor de Temperatura LM35:
LDR Light Sensor
Leds Coloridos para representar o acionamento das saídas Arduino
Resistores de 220 ohms para interligar com os leds para as saídas Arduino
Resistor de 1k ohms para fazer ajuste da luminosidade do LDR
Potenciometro linear de 2k2 ohms para fazer ajuste ou calibração da luminosidade do LDR
Placa Módulo Bluetooth JY-MCU:
Exemplo de módulos de relés:
Exemplo de Protoboard/Breadboard:
Jumpers Macho Macho:
Cabo USB comunicação para carregar o programa Arduino / Fonte
Alimentação 5V:
5)- Esquema de ligações: Utilizando apenas leds para representar os acionamentos.
5.1)- Esquema de ligações: Utilizando relés para acionamento dos dispositivos.
Exemplo de ligação utilizando relé:
Ligar a Fase da tomada no comum do relé;
Ligar o Neutro da tomada na lâmpada e saída da lâmpada no N/A ou N/F do relé;
Obs1.: Algums módulos de relés possuem uma lógica de acionamento invertida, ou seja:
Caso 1: Relé recebe sinal +5V e energiza a bobina contatos N/A fecha e N/F abre.
Caso 2: Relé recebe sinal +0V e energiza a bobina contatos N/A fecha e N/F abre.
Verificar qual é seu modelo simplesmente ligando VCC e GND e sinal do Arduino conforme demonstra figura abaixo então altere suas lidações de N/A ou N/F conforme sua necessidade de acionamento.
Veja que será melhor você deixar como está demonstrado no vídeo onde no aplicativo botão acionado ON VERDE saída do relé dispositivo ligado ou LÂMPADA LIGADA.
SINAL ARDUINO: A2, A3, A4, A5, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13(14 CANAIS).
VCC = 5V;
GND = 0V;
Capacidade máxima de utilização com 14 relés;
Atenção: Para utilização com relés é necessário ligar uma fonte de 5V/500mA independente da fonte de alimentação do Arduino.
Então a fonte de 9V/500mA do Arduino alimenta: A placa Arduino + Sensores LM35 e LDR + leds.
Fonte de alimentação de 5V/500mA para os Relés: Apenas para os Módulos de relés.
Obs.: As duas fontes são interligadas apenas com os GND´s. Não se esqueça de fazer a ligação entre os
GND´s comum entre as fontes com o GND da placa Arduino.
* Fontes independentes: Melhora a estabilidade para leitura e controle dos sensores além de não sobrecarregar o sistema por excesso de corrente!
Exemplo Módulo com 2 relés: IN1, IN2 sinal ligado ao Arduino: A2...D13
Exemplo de módulo com 8 Relés:
Atenção: Para utilização com relés é necessário ligar uma fonte de 5V/500mA independente da fonte de alimentação do Arduino.
Então a fonte de 9V do Arduino alimenta: A placa Arduino + Sensores LM35 e LDR + leds.
Fonte de alimentação de 5V/500mA para Módulos de relés alimenta: Apenas módulos de relés.
Obs.: As duas fontes são interligadas apenas com os GND´s com o GND da placa Arduino. Não se esqueça de fazer a ligação entre os
GND´s comum entre as fontes com o GND da placa Arduino.
Monitor LM35 LDR Program Switches
Nenhum comentário:
Postar um comentário