Hi,
I'm new to Arduino, and I'm trying to run my code, but Arduino keeps restarting and I really don't know why.
Can anyone help me?
I'm using Arduino UNO as a rest server.
// Libraries
#include <SPI.h>
#include <Ethernet.h>
#include <aREST.h>
#include <avr/wdt.h>
// Enter a MAC address for your controller below.
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xFE, 0x40 };
// IP address in case DHCP fails
IPAddress ip(192,168,2,2);
// Ethernet server
EthernetServer server(80);
// Create aREST instance
aREST rest = aREST();
// Variables to be exposed to the API
//iniciar variavel que armazena a quantidade de pessoas na sala
//String pessoas;
int pessoasSala;
int pessoasQuarto;
int totalPessoas;
//variaveis rele
const int ReleLampada1 = 7; // pino ao qual o Módulo Relé da lampada 1 está conectado
const int ReleLampada2 = 9; // pino ao qual o Módulo Relé da lampada 2 está conectado
const int ReleTomada = 8; // pino ao qual o Módulo Relé da tomada está conectado
int L1;
int L2;
int T;
//iniciar LDRs
int ldr0 = A0;
int ldr1 = A1;
int ldr2 = A2;
int ldr3 = A3;
int ldr4 = A4;
int ldr5 = A5;
//iniciar variavel que armazena o valor medido pelos LDRs
int valorLdr0;
int valorLdr1;
int valorLdr2;
int valorLdr3;
int valorLdr4;
int valorLdr5;
void setup(void)
{
// Start Serial
//Serial.begin(115200);
Serial.begin(9600);
pinMode(ReleLampada1, OUTPUT); // seta o pino como saída
pinMode(ReleLampada2, OUTPUT); // seta o pino como saída
pinMode(ReleTomada, OUTPUT); // seta o pino como saída
//inicializar reles desl,igados
digitalWrite(ReleLampada1, 1);
digitalWrite(ReleLampada2, 1);
digitalWrite(ReleTomada, 1);
L1 = 1;
L2 = 1;
T = 1;
valorLdr0 = 0;
valorLdr1 = 0;
valorLdr2 = 0;
valorLdr3 = 0;
valorLdr4 = 0;
valorLdr5 = 0;
// Init variables and expose them to REST API
//pessoas;
pessoasSala = 0;
pessoasQuarto = 0;
totalPessoas = 0;
//pessoas="{"S" = 0, "Q" = 0,"T" = 0}";
// rest.variable("pessoas",&pessoas);
rest.variable("L1",&L1);
rest.variable("L2",&L2);
rest.variable("T",&T);
rest.variable("ldrQ",&valorLdr0);
rest.variable("ldrS",&valorLdr3);
rest.variable("S",& pessoasSala );
rest.variable("Q",& pessoasQuarto );
rest.variable("T",& totalPessoas );
// Function to be exposed
rest.function("lampada1",lampada1);
rest.function("lampada2",lampada2);
rest.function("tomada",tomada);
// Give name & ID to the device (ID should be 6 characters long)
rest.set_id("008");
rest.set_name("projeto");
// Start the Ethernet connection and the server
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip);
}
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
// Start watchdog
wdt_enable(WDTO_4S);
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
rest.handle(client);
valorLdr0 = analogRead(ldr0);
valorLdr1 = analogRead(ldr1);
valorLdr2 = analogRead(ldr2);
valorLdr3 = analogRead(ldr3);
valorLdr4 = analogRead(ldr4);
valorLdr5 = analogRead(ldr5);
if(valorLdr1>400 && valorLdr2<400){
ativou_ldr1();
valorLdr1=0;
valorLdr2=0;
valorLdr4=0;
valorLdr5=0;
delay(500);
}
else if(valorLdr2>400 && valorLdr1<400){
ativou_ldr2();
valorLdr1=0;
valorLdr2=0;
valorLdr4=0;
valorLdr5=0;
delay(500);
}
else if(valorLdr4>400 && valorLdr5<400){
ativou_ldr4();
valorLdr1=0;
valorLdr2=0;
valorLdr4=0;
valorLdr5=0;
delay(500);
}
else if(valorLdr5>400 && valorLdr4<400){
ativou_ldr5();
valorLdr1=0;
valorLdr2=0;
valorLdr4=0;
valorLdr5=0;
delay(500);
}
wdt_reset();
}
// Custom function accessible by the API
int lampada1(String command) {
digitalWrite(ReleLampada1,command.toInt());
L1=command.toInt();
return 1;
}
int lampada2(String command) {
digitalWrite(ReleLampada2,command.toInt());
L2=command.toInt();
return 1;
}
int tomada(String command) {
digitalWrite(ReleTomada,command.toInt());
T=command.toInt();
return 1;
}
void ativou_ldr1(){
delay(1000);
valorLdr1=0;
valorLdr2=0;
do{
valorLdr1 = analogRead(ldr1);
valorLdr2 = analogRead(ldr2);
}while(valorLdr1<400 && valorLdr2<400);
if(valorLdr1<400 && valorLdr2>400){
if(totalPessoas!=0){
if(pessoasQuarto>0){
pessoasQuarto-=1;
pessoasSala+=1;
if(pessoasQuarto<0)
pessoasQuarto=0;
}
}
}
}
void ativou_ldr2(){
delay(1000);
valorLdr1=0;
valorLdr2=0;
do{
valorLdr1 = analogRead(ldr1);
valorLdr2 = analogRead(ldr2);
}while(valorLdr1<400 && valorLdr2<400);
if(valorLdr1>400 && valorLdr2<400){
if(totalPessoas!=0){
if(pessoasSala>0){
pessoasQuarto+=1;
pessoasSala-=1;
if(pessoasSala<0)
pessoasSala=0;
}
}
}
}
void ativou_ldr4(){
delay(1000);
valorLdr3=0;
valorLdr4=0;
do{
valorLdr4 = analogRead(ldr4);
valorLdr5 = analogRead(ldr5);
}while(valorLdr4<400 && valorLdr5<400);
if(valorLdr5>400 && valorLdr4<400){
if(totalPessoas!=0){
if(pessoasSala>0){
pessoasSala-=1;
totalPessoas-=1;
if(totalPessoas<0)
totalPessoas=0;
if(pessoasSala<0)
pessoasSala=0;
}
}
}
}
void ativou_ldr5(){
delay(1000);
valorLdr3=0;
valorLdr4=0;
do{
valorLdr5 = analogRead(ldr5);
valorLdr4 = analogRead(ldr4);
}while(valorLdr4<400 && valorLdr5<400);
if(valorLdr5<400 && valorLdr4>400){
pessoasSala+=1;
totalPessoas+=1;
}
}