Salve a tutti, sono Alessandro, come capirete sono un neofita di arduino.
Ho un problema di programmazione.
Vorrei far accendere e spegnere un led quando il sensore di temperatura ds18b20 supera o scende sotto una certa soglia.
Premetto che per far funzionare il sensore ho usato le ultime librerie onewire e dallas temperature, e che caricando uno sketch di esempio arduino mostra sul seriale le temperature esatte, fin qui tutto ok, vorrei ggiungere un if else per far accendere e spegnere un led, ma non riesco...
questo è lo sketch che ho caricato:
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Pin 9 has an LED connected
int led = 9;
void setup(void)
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex(0));
if (digitalRead(2) < 29.00)
{
digitalWrite(led, LOW); // Led spento con temperatura sotto i 29
}
else (digitalRead(2) >= 29.00);
{
digitalWrite(led, HIGH); //Led acceso con temperatura sopra i 29
}
}
Ciao,
... il primo errore che hai fatto e NON aver letto con attenzione il regolamento, punto 7. , il codice va racchiuso tra i tag CODE ! Edita cortesemente il tuo post e correggi.
Poi ...
... un po di errori nel codice ...
NON puoi leggere la temperatura con una digitalRead() ... vatti a vedere nel reference a cosa serve una digitalRead()
La temperatura la leggi con l'apposito metodo della libreria DallasTemperature, come già fai per visualizzarla, e devi salvarne il valore in una variabile con la quale poi fai i confronti.
Ti consiglio di aggiungere un ciclo di isteresi altrimenti, quando il sensore starà sui 29 gradi ... avrai il led che lampeggia in continuazione.
engbeer:
mi chiamo Alessandro, da poco ho scoperto Arduino tramite ricerche su internet per cercare metodi di automatizzazione del mio impiantino per birra, da quel momento è stato vero amore.
gpb01, grazie per le correzioni riguardo all'utilizzo del forum.
Per quel che riguarda il topic che hai linkato, lo avevo visto, ma quella discussione riguarda un progetto ben più complesso del mio, che rischierebbe di confondermi ancora di più le idee, io sono ai primi passi ed il mio progetto è elementare, avevo solo chiesto aiuto riguardo all'errore nella programmazione.
Magari un esempio di come potrebbe essere la composizione di "if" ed "else" nel mio progetto potrebbe aiutarmi.
Grazie comuque.
engbeer:
avevo solo chiesto aiuto riguardo all'errore nella programmazione.
Magari un esempio di come potrebbe essere la composizione di "if" ed "else" nel mio progetto potrebbe aiutarmi.
Se tu avessi letto le risposte con attenzione avresti visto che ti avevo detto esattamente cosa non andava e cosa fare, invece ti sei messo a fare l'arrogante scrivendomi in MP ... e ora non avrai da me più alcun aiuto.
Guglielmo
P.S. : Al prossimo MP dello stesso tono, segnalerò la cosa ad un moderatore richiedendo un tuo ban