Hi,
I'm Filippo, I'm 15 and I have a basic knowledge of arduino.
I need help becuse my arduino restart from the setup.
please help me.
#include <DHT.h>
#include "DHT.h"
#define DHTPIN 8
// 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11
// dht11 è il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10 // Pin 53 per Arduino Mega
#define RESET_DIO 9
#define delayRead 1000 // Tempo
#define delayLed 2000
#define ledVerde 3
#define ledRosso 4
#define rele 2
unsigned long timer;
unsigned long time1;
unsigned long time2;
unsigned long perma1;
unsigned long perma2;
int s1;
int s2;
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO);
// inserire tutti i codici esadecimali delle schede magnetiche riconosciute
String codiceAutorizzato1 = "840C149C";
String codiceAutorizzato2 = "1C5FC059DA";
String codiceAutorizzato3 = "";
void setup()
{
s1 = 0;
s2 = 0;
Serial.begin(9600);
/* Abilita SPI*/
SPI.begin();
/* Viene inizilizzato RFID reader */
RC522.init();
Serial.println("Setup");
pinMode(ledVerde,OUTPUT);
pinMode(ledRosso,OUTPUT);
pinMode(rele,OUTPUT);
}
void loop()
{
int t = dht.readTemperature();
int u = dht.readHumidity();
/* Temporary loop counter */
byte i;
// Se viene letta una tessera
if (RC522.isCard())
{
// Viene letto il suo codice
RC522.readCardSerial();
String codiceLetto ="";
Serial.println("Codice delle tessera letto:");
// Viene caricato il codice della tessera, all'interno di una Stringa
for(i = 0; i <= 4; i++)
{
codiceLetto+= String (RC522.serNum[i],HEX);
codiceLetto.toUpperCase();
}
Serial.println(codiceLetto);
if(verificaCodice(codiceLetto,codiceAutorizzato1)&&(s1)==0){
Serial.println("Tessera autorizzata");
Serial.print("Umidità: ");
Serial.println(u);
Serial.print("Temperatura: ");
Serial.println(t);
time1=timer;
s1=1;
accendiLed(ledVerde);
digitalWrite (rele, HIGH);
delay (1000); // Tempo relè in stato ON
digitalWrite (rele, LOW);
}
else if(verificaCodice(codiceLetto,codiceAutorizzato1)&&(s1)==1){
Serial.println("Tessera autorizzata");
time1=((timer)-(time1));
s1=0;
perma1=((perma1)+(time1));
Serial.print("Umidità: ");
Serial.println(u);
Serial.print("Temperaturas: ");
Serial.println(t);
Serial.println("Permanenza:");
Serial.println(perma1);
accendiLed(ledVerde);
digitalWrite (rele, HIGH);
delay (1000); // Tempo relè in stato ON
digitalWrite (rele, LOW);
}
else if(verificaCodice(codiceLetto,codiceAutorizzato2)&&(s2)==0){
Serial.println("Tessera autorizzata");
time2=timer;
s2=1;
Serial.println("Tessera autorizzata");
Serial.print("Umidità: ");
Serial.println(u);
Serial.print("Temperatura: ");
Serial.println(t);
accendiLed(ledVerde);
digitalWrite (rele, HIGH);
delay (1000); // Tempo relè in stato ON
digitalWrite (rele, LOW);
}
else if(verificaCodice(codiceLetto,codiceAutorizzato2)&&(s2)==1){
Serial.println("Tessera autorizzata");
time2=((timer)-(time2));
s2=0;
perma1=((perma2)+(time2));
Serial.println("Tessera autorizzata");
Serial.print("Umidità: ");
Serial.println(u);
Serial.print("Temperatura: ");
Serial.println(t);
Serial.println("Permanenza:");
Serial.println(perma2);
accendiLed(ledVerde);
digitalWrite (rele, HIGH);
delay (1000); // Tempo relè in stato ON
digitalWrite (rele, LOW);
}else{
Serial.println("Tessera non autorizzata");
accendiLed(ledRosso);
}
delay(delayRead);
}
}
// Questa funzione verifica se il codice Letto è autorizzato
boolean verificaCodice(String codiceLetto, String codiceAutorizzato){
if(codiceLetto.equals(codiceAutorizzato)){
return true;
}else{
return false;
}
}
// Questa funzione permette di accendere un LED per un determinato periodo
void accendiLed(int ledPin){
digitalWrite(ledPin,HIGH);
delay(delayLed);
digitalWrite(ledPin,LOW);
}