Salve a tutti, Sto simulando una camera di albergo con controllo accessi tramite lettore di card rfid, che fa accendere una luce quando la luminosità e bassa grazie alla fotoresistenza che ho integrato. Vado al dunque ho inserito un sensore dht 11, ho preso lo sketch dal kit 37 sensori elegoo; il mio problema è che non riesco a fare visualizzare la temperatura sul monitor seriale. Posto lo sketch, se c'è qualche anima pia che mi può aiutare grazie...
Sketch
digita o incolla il codice qui
#include <MFRC522.h>
#include <string.h>
#include <dht_nonblocking.h>
#define GREEN_LED_PIN 2
#define RED_LED_PIN 3
#define RELAY_PIN 8
#define DHTPIN 7
#define DHT_SENSOR_TYPE DHT_TYPE_11
MFRC522 rfid(10, 9);
static const int DHT_SENSOR_PIN = 7;
DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );
String users[] = {"f3e11e15"};
int usersSize = sizeof(users)/sizeof(String);
int relay = 8;
int val = 0; // variable for reading the pin status
int inputPin = 6; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int fotoresistenzaPin = A0;
int soglia = 500; //fotoresistors
void setup(){
Serial.begin(115200);
SPI.begin();
rfid.PCD_Init();
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(inputPin, INPUT); // declare sensor as input
pinMode(DHT_SENSOR_PIN, INPUT);
}
void loop(){
if(rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()){
char a = uid = getUID();
if(checkUID(uid)){
blinkLed(GREEN_LED_PIN, 2000, 1);
digitalWrite(RELAY_PIN, HIGH);
}else{
blinkLed(RED_LED_PIN, 400, 2);
digitalWrite(RELAY_PIN, LOW);
}
}else if{
float temperature;
float humidity;
if(dht_sensor.measure(&temperature, &humidity)){
Serial.print( "T = " );
Serial.print( temperature, 1 );
Serial.print( " deg. C, H = " );
Serial.print( humidity, 1 );
Serial.println( "%" );
}
}
}
}
delay(100);
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(relay, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
delay(10000);
}
} else {
digitalWrite(relay, LOW); // turn LED OFF
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
int luminosita = analogRead(fotoresistenzaPin);
Serial.print("Luminosita: ");
Serial.println(luminosita);
delay(100);
}
String getUID(){
String uid = "";
for(int i = 0; i < rfid.uid.size; i++){
uid += rfid.uid.uidByte[i] < 0x10 ? "0" : "";
uid += String(rfid.uid.uidByte[i], HEX);
}
rfid.PICC_HaltA();
return uid;
}
bool checkUID(String uid){
for(int i = 0; i < usersSize; i++){
if(users[i] == uid){
return true;
}
}
return false;
}
void blinkLed(int led, int duration, int repeat){
for(int i = 0; i < repeat; i++){
digitalWrite(led, HIGH);
delay(duration/2);
digitalWrite(led, LOW);
delay(duration/2);
}
}