uitgang schakelen door ds18b20
7 berichten
• Pagina 1 van 1
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
uitgang schakelen door ds18b20
ik ben bezig met een grote sketch maar ik wil eerst in het klein proberen,
de bedoeling is dat onder een bepaalde temperatuur het relais hoog gaat, maar volgens de software doe ik niks ''fout''
hoop dat jullie mij kunnen helpen.
cpp code
de bedoeling is dat onder een bepaalde temperatuur het relais hoog gaat, maar volgens de software doe ik niks ''fout''
hoop dat jullie mij kunnen helpen.
cpp code
#include <OneWire.h>
#include "Wire.h"
#include <LiquidCrystal.h>
#define outWaterOrnament 47
OneWire ds(8);
float celsius ;
float VorstTempUit = 17;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup() {
lcd.begin(20, 4);
Serial.begin(9600);
}
void loop() {
if (VorstTempUit <= celsius) {
digitalWrite(outWaterOrnament, LOW);
} else {
digitalWrite(outWaterOrnament, HIGH);
}
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
//float celsius;
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
for( i = 0; i < 8; i++) {
}
if (OneWire::crc8(addr, 7) != addr[7]) {
return;
}
switch (addr[0]) {
case 0x10:
type_s = 1;
break;
case 0x28:
type_s = 0;
break;
case 0x22:
type_s = 0;
break;
default:
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(1000); // maybe 750ms is enough, maybe not
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3;
if (data[7] == 0x10) {
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
}
celsius = (float)raw / 16.0;
lcd.setCursor(5, 2);
lcd.print(celsius);
delay(1000);
}
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: uitgang schakelen door ds18b20
En celcius geeft de juiste temperatuur?
Overigens zou ik als ik een float een waarde neerzet, dit doen met
cpp code
tip: als je een pin als output wil gebruiken, moet je wel de pinMode opgeven als OUTPUT in de setup().
Dat je compile technisch geen fouten hebt betekent alleen dat de syntax goed is. Niet dat je programma goed is.
Tenslotte het is goed voor de andere lezers, als je wat commentaar toevoegd zodat een ander ook begrijpt wat je wilt doen en maakt oplossen vaak veel eenvoudiger...
Kost je niets extra, programma wordt er niet groter van, nodigt een andere lezer om te begrijpen wat je doet, en als je over een jaar nog eens zelf naar dit programma kijkt, begrijp je zelf ook wat je toen bedacht
Overigens zou ik als ik een float een waarde neerzet, dit doen met
cpp code
float VorstTempUit = 17.0;
tip: als je een pin als output wil gebruiken, moet je wel de pinMode opgeven als OUTPUT in de setup().
Dat je compile technisch geen fouten hebt betekent alleen dat de syntax goed is. Niet dat je programma goed is.
Tenslotte het is goed voor de andere lezers, als je wat commentaar toevoegd zodat een ander ook begrijpt wat je wilt doen en maakt oplossen vaak veel eenvoudiger...
Kost je niets extra, programma wordt er niet groter van, nodigt een andere lezer om te begrijpen wat je doet, en als je over een jaar nog eens zelf naar dit programma kijkt, begrijp je zelf ook wat je toen bedacht
Re: uitgang schakelen door ds18b20
(float) haakjes staan verkeerd
bij de if hetzelfde geen {}
de berekening moet ik nog nakijken.
bij de if hetzelfde geen {}
de berekening moet ik nog nakijken.
paul deelen
shooter@home.nl
shooter@home.nl
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
Re: uitgang schakelen door ds18b20
nicoverduin schreef:En celcius geeft de juiste temperatuur?
Overigens zou ik als ik een float een waarde neerzet, dit doen met
cpp codefloat VorstTempUit = 17.0;
tip: als je een pin als output wil gebruiken, moet je wel de pinMode opgeven als OUTPUT in de setup().
Dat je compile technisch geen fouten hebt betekent alleen dat de syntax goed is. Niet dat je programma goed is.
Tenslotte het is goed voor de andere lezers, als je wat commentaar toevoegd zodat een ander ook begrijpt wat je wilt doen en maakt oplossen vaak veel eenvoudiger...
Kost je niets extra, programma wordt er niet groter van, nodigt een andere lezer om te begrijpen wat je doet, en als je over een jaar nog eens zelf naar dit programma kijkt, begrijp je zelf ook wat je toen bedacht
echt stom nu zie ik het dat ik dat was vergeten, komt omdat ik even snel alles gekopieerd heb in een nieuwe sketch, normaal doe ik dat als eerste natuurlijk..... nu werkt het en heb hem ook ingevoerd in waar ik het nodig had, en het werkt.. 17 of 17.0 maakte voor de werking niet uit
alleen nu heb ik iets anders... ik probeerde een nieuwe sketch in de mega te laden en nu lukt het niet meer... lijkt of hij vastgelopen is? kan je dit resetten of is het gewoon over? heb met een andere mega geprobeerd en daar draait het programma nu goed op...
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: uitgang schakelen door ds18b20
Wat doet het niet meer......?
- corolla_g6
- Berichten: 47
- Geregistreerd: 24 Nov 2014, 19:47
Re: uitgang schakelen door ds18b20
ik denk dat het tijdens het uploaden fout is gegaan, toen is hij gestopt en nu bij het uploaden blijft hij hangen, of hij zegt dat de com poort al bezet is.
laptop en arduino opnieuw opgestart heeft geen effect... met een andere arduino geprobeert en dat doet hij wel..
laptop en arduino opnieuw opgestart heeft geen effect... met een andere arduino geprobeert en dat doet hij wel..
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: uitgang schakelen door ds18b20
Kennelijk is er nog iets dat die com poort bezet houdt. Soms kun jet op lossen door de driver te verwijderen en opnieuw te installeren van die com driver.
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten