Arduino restarting

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;
}
}

Is running on batteries? Once my batteries (9v) was almost discharged and it kept rebooting the arduino. Maybe it’s that. Other than that I don’t know

No, I tried both USB and external power supply, but either way it restarts.

Maybe it’s drawing too much power from the arduino, and it isn’t able to run continuously

And what about that wdt_reset() at the end of loop ( I have no idea what it does)

You (or the author) has coded some long delay()'s that may trip the watchdog. If you have no idea how something works, consult the documentation first. Then google.