Come scandire i tempi in base alle funzioni

ciao, ho scoperto il mondo di arduiino da più o meno 6 o 7 mesi e mi piace davvero molto, sia a livello hardware che software, infatti sto lavorando ad un progetto ma ho riscontrato un problema, sapreste darmi qualche aiuto?

Ho un circuito sulla breadboard dove lampeggia un led e allo stesso tempo una sonda ds18b20 mi legge la temperatura, il problema è che io voglio che il led faccia il blink con un delay di 1000 millisecondi mentre la sonda per aggiornarsi ha bisogno di un delay di 1000 millisecondi, così i delay si sommano con quelli della sonda e quindi il blink invece di essere 1000 high e 1000 low diventa 1000(della sonda)+1000(del blink) high e 1000(del blink) low con un totale di 2000 high e 1000 low, vorrei dividere i 2 delay affinché non si sommino, magari usando 2 cicli diversi o qualche altro metodo che non conosco, grazie per l'aiuto, lascio lo sketch qui sotto:

#include <OneWire.h>                                                //inclusione librerie
#include <DallasTemperature.h>

#define led 9                                                       //definizione dei pin
#define sonda 8

OneWire oneWire(8);                                                //cose necessarie alla sonda ds18b20
DallasTemperature temp(&oneWire);

float tc;                                                          //creazione variabile per la temperatura in gradi celsius

void setup() {
  Serial.begin(9600);                                              //inizializzazione serial monitor
  temp.begin();                                                    //inizializzazione pin della sonda
  pinMode(led, OUTPUT);                                            //configurazione pin del led
  }

void loop() {
  temp.requestTemperatures();                                     //richiesta lettura temperatura alla sonda
  tc = temp.getTempCByIndex(0);
  Serial.print(tc);
  Serial.println("°C");
  delay(1000);
  
  digitalWrite(led, HIGH);                                        //blink del del led
    delay(500);
  digitalWrite(led, LOW);
    delay(500);        
}

Buonasera,

essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… 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 tutto il su citato REGOLAMENTO

... poi, in conformità al suddetto regolamento, punto 7, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Così com'è non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE). Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nel rispetto del citato regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di fare il tutto al più presto. :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.