Go Down

Topic: Arduino starts from the setup, can you help me? (Read 509 times) previous topic - next topic

Filippo_02

Feb 18, 2018, 03:36 pm Last Edit: Feb 21, 2018, 06:31 pm by Filippo_02
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.


Code: [Select]
#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);
}

robtillaart

#1
Feb 18, 2018, 04:31 pm Last Edit: Feb 18, 2018, 04:32 pm by robtillaart
please learn to post code properly with tags. your code got italic because an index got interpreted.

CTRL-T autoformats code which makes it more readable and therefor better debugable
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

gpb01

#2
Feb 18, 2018, 04:57 pm Last Edit: Feb 18, 2018, 04:59 pm by gpb01
>Filippo_02: ... Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

... poi, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... infine, in conformità al suddetto regolamento, punto 7, come ti è stato anche detto da "robtillaart", devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano"
Search is Your friend ... or I am Your enemy !

Go Up