ho una resistenza numerica di 3 numeri sul analogico pin 2, quando la lettura sul serial 500 sulla resistenza ho il numero 490. per avere un numero uguale su tutte 2 ho creato una variabile int var = 10;
poi ho creato una if variable int ris = (val-var);
per usarla nella If.
if (h <=ris vorrai che led si accende HIGH + 2 - 2 della h che una variable.
immagina che h sia 30.
il led in 28 29 30 31 32
digitalWrite(UMIDITA, HIGH);
int analogPin = 2;
int val = 0; // variable to store the value read
int var = 10;
void setup()
{
Serial.begin(9600);
void loop()
{
int ris = (val-var)/10;
if (35 <=ris) {
digitalWrite(UMIDITA, HIGH);
} else {
digitalWrite(UMIDITA, LOW); // turn the LED off by making the voltage LOW
}
cmq ecco il codice giusto avevo fatto una sintesi per non avere problemi a spiegare
/
#include "LiquidCrystal.h"
#include "DHT.h"
DHT dht(8, DHT22); //Imposta il modello di sensore e il pin di Arduino a cui è collegato
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Imposta i pin di Arduino a quali sono collegati in pin del display (Rs,E,DB4,DB5,DB6,DB7)
#define LAMPADA 13
#define LED2 9
#define UMIDITA A0
#define LED4 7
int lum_pin=3; //il pin al quale è collegato LED+
int analogPin = 2;
int val = 0; // variable to store the value read
int var = 10;
byte lum_val=127; // il valore della luminosità. Può essere impostato da 0 (retroilluminazione spenata) a 255 (retroilluminazione massima)
void setup()
{
Serial.begin(9600); // setup serial
pinMode(7,OUTPUT);
pinMode(13,OUTPUT);
pinMode(9,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(lum_pin,OUTPUT);
analogWrite(lum_pin,lum_val);
dht.begin();
lcd.begin(16, 2);// imposto il numer di righe e colonne del display
//creo il carattere ‘°’ per poter scrivere °C dopo il valore della temperatura
byte deg[8] =
{
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
lcd.createChar(4,deg);
}
void loop()
{
int ris = (val-var)/10;
val = analogRead(analogPin); // read the input pin
// debug
Serial.println(ris);
float h = dht.readHumidity(); //leggi il valore di temperatura
float t = dht.readTemperature(); //leggi il valore di umidità
lcd.setCursor(0,0);//metti il cursore sulla prima riga
lcd.print("Temp: ");
if(isnan(t))lcd.print("Errore!");//se il valore di temperatura è NaN (Not a Number)
else //altrimenti
{
lcd.print(t);
lcd.write(4); //scrivi il carattere ‘°’
lcd.print("C");
}
lcd.setCursor(0,1);//metti il cursore sulla seconda riga
lcd.print("Umid: ");
if(isnan(h))lcd.print("Errore!");//se il valore di umidità è NaN (Not a Number)
else
{
lcd.print(h);
lcd.print(" %");
if (t < 23.10) {
digitalWrite(LAMPADA, HIGH);
} else {
digitalWrite(LAMPADA, LOW);
}
if (h <=ris+1) {
digitalWrite(UMIDITA, HIGH);
} else {
digitalWrite(UMIDITA, LOW);
}
}
}
Non ho tanto chiaro cosa stai chiedendo, se come penso il tuo problema è che quando il valore è vicino alla soglia il led si accende e spegne di continuo allora prova a leggere qua