Arduino en broadcast

Hallo! Ik heb een schakeling op breadboard gemaakt met de DHT11 (temperatuur- en vochtigheidssensor)en een SD kaart reader/writer. Werkt prima. Echter heb ik terug een vraagje ivm de sketch :-). Alles is me duidelijk uitgezonderd de "if functie" en dan specifiek waarvoor "broadcast" staat? Kan iemand dit voor me ophelderen aub? Alvast bedankt voor jullie tijd en moeite :-)!

c code:


#include <SDHT.h>                                       
#include <SD.h>                                         
#include <SPI.h>                                                            File mySensorData;                                       
int chipSelect = 4;                                     
SDHT dht;


void setup() {
  
  Serial.begin(9600);                                   
  SD.begin (chipSelect);                                
  pinMode (10 , OUTPUT);                                
}


void loop() {
  
  if (dht.broadcast(DHT11, 2)) layout();
  delay(2500);                                          
}


void layout() {
  mySensorData = SD.open("humTem.txt" , FILE_WRITE);     

  if (mySensorData){                                    
  Serial.print("   Humidity => ");                      
  Serial.println(String(dht.humidity, 1));             
  Serial.print("   Celsius => ");                       
  Serial.println(String(dht.celsius, 2));               

  mySensorData.print (dht.humidity, 1);                 
  mySensorData.print (" , ");                           
  mySensorData.println (dht.celsius, 2);                
  mySensorData.close();                                 
  delay (500);                                         
}

else {                                                   
  Serial.println ("Error opening file humTem.txt!!");   
}
}

[Bericht gewijzigd door Henry S. op 31 oktober 2019 22:06:22 (0%)]

c code:


void loop() {
if (dht.broadcast(DHT11, 2)) layout();
delay(2500);
}

Dit is de hoofdlus van het programma. Veel gebeurt er niet: er wordt gewacht op een bepaalde status, en als die wordt vervuld dan wordt de functie layout aangeroepen. Zoniet: 2,5 sec wachten en nog eens kijken.

De beslissende status wordt bepaald door de broadcast-functie uit de dht-library, daarover kan ik zo 1-2-3 niet veel vertellen. Raadpleeg de betreffende documentatie - het vinden daarvan zou misschien nog het lastigste kunnen worden... Maar het lijkt me niet onmogelijk dat er wordt gecheckt of er nieuwe data beschikbaar is vanwege de DHT11, ttz andere cijfers dan de vorige keer.

NB niet erg netjes dat de naam van het uitvoerbestand twee keer voorkomt in de brontekst, die had properder in een constante gekund.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
bprosman

Golden Member

"My best guess" is dat je alle eventueel op de lijn zittende Sensoren "een schop" geeft om de conversie (meting) te starten, om vervolgens #2 in te lezen , dan 2,5 seconde wachten. Wat ik me nog kon herinneren van zijn voorloper de SHT11 is dat de conversietijd relatief lang is en te snel uitlezen zelfopwarming kon veroorzaken.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Mmm de library lijkt me heel amateuristisch en slordig, veel typefouten ook. Hier had de auteur van SDHT.h zelf een broadcast.ino file:

c code:

void loop() {
  // put your main code here, to run repeatedly:
  if (dht.read(DHT22, 2)) layout();
  delay(2000);
}

Heel vreemd waarom het bij jou 'broadcast' heet.

Edit: hij heeft het zelf hernoemd naar read.
https://github.com/offcircuit/SDHT/commit/b5e6d7c1f3689e70b3dce30d68d2…
En in de header file:
https://github.com/offcircuit/SDHT/commit/c0693cfbbf2b6a7c085ce05c1fd5…

Overweeg overigens ook de ESP8266 zodat je naar WIFI kunt loggen. Heel simpel en werkt prima in de arduino software. Ik heb nu zoiets draaien (de grafieken kostte me dagen werk maar de ESP programmeren was nog geen uurtje werk:

Heren
Alle drie reuze bedankt voor de toelichting en jullie tijd. Het is me nu helemaal duidelijk.
@K7Jz : ik heb "broadcast" in de sketch vervangen door "read" maar toen kreeg ik een foutmelding. Nadat ik de library geupdated had werkte de sketch prima met "read" ipv "broadcast". Bedankt voor de tip :-).De functie "read" is duidelijker dan de functie "broadcast" :-)!
@big_fat_mama : ik begrijp uw nb niet goed :-(!Ik heb de sketch van de DHT gekopieerd en er zelf een stukje programma aan toegevoegd om de data te loggen met een SD kaart! Ik weet dat ik nog veel te leren heb :-)!
Toch nog even meegeven dat ik een complete amateur ben wat arduino betreft (zie mijn vorige posts).Ik ben dan ook erg blij dat er mensen op dit forum zijn die de tijd en moeite doen om me te helpen!GRTZ

ok, even verduidelijken dan, maar in pseudo-code want het is al laat en ik ga nu geen syntax-check meer draaien :)

* zo staat het er nu

code:

open "huppelepup.bestand.txt"
als dat niet lukte:
 ai ai ai ik kon "huppelepup.bestand.txt" niet openen

*beter, nmbm:

code:

[i]het_bestand[/i]="huppelepup.bestand.txt"
open [i]het_bestand[/i]
als dat niet lukte:
 ai ai ai ik kon [i]het_bestand[/i] niet openen

Het verschil is dat, als jij [of je opvolg(st)er] ooit beslissen een andere bestandsnaam te gaan gebruiken, er slechts 1 enkele aanpassing nodig is. Een volgende stap zou kunnen zijn dat de bestandsnaam een optie is op de command line, of uit een config file komt - maar dat is misschien een beetje overkill, in het huidige stadium.

Maar dat is eigenlijk maar een kwestie van stijl, en beheerbaarheid; aan de functionaliteit doet het niets.

(enne, wat betreft de aanspreking: dat is erg beleefd bedoeld, lijkt me, en ik hecht groot belang aan beleefdheid. Goed begonnen, dus! Helaas moet men in deze dagen van politieke correctheid een beetje "rijden en omzien" zoals we hier zeggen :) Laat nu eens dat er tussen de antwoorders een dame was? Dan stond je mooi voor schut!)

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

@big_fat_mama :oeps , verkeerde smiley gekozen! Mijn excuses!

Dat is het minste van het minste, vriendschap! Werk maar naarstig door, en houd ons op de hoogte! En houd u niet in om verder/dieper te vragen, er zijn er hier zat die graag van dienst zijn! Wel uw eigen inzet en inspanningen duidelijk maken, we gaan het u niet op een bordje aandragen. Werk maar naarstig door!

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

@big_fat_mama : ik had in mijn reactie gewoon de leestekens : en - en ( gebruikt en na het posten staat er een "kwade" smiley! Dat was totaal de bedoeling niet!!!Nogmaals sorry! Bedankt voor de toelichting! Ik begrijp wat u bedoeld , het is inderdaad duidelijker met uw aanpassing!