[ davidsusi22 @ 03.04.2017. 09:47 ] @
Hallo. Probao sam da zamjenim cod od analognog lm35 sa digitalnim ds18b20 i uvijek imam neku gresku u codu.Ja sam novi u tim stvarima, mada sa samim digitalnim senzorom ocitavam temperaturu na lcd-u, tj sve radi,ali kada dodajem preostali dio coda sa hysterezom, cod je uvijek sa greskom.Dali bi neko mogao da prepravi dole navedeni cod,tako da to radi sa ds18b20. Cod ince radi, ali sa Analognim lm 35 Hvala. #include <Wire.h> #include <LiquidCrystal_I2C.h> #define sensorPin 0 // spojiti sa LM35 #define DELAY1 10 // pauza za mjeriti #define DELAY2 500 // pauza za prikaz #define motorPin 9 // spojiti sa motorom #define threshold 25 // zadana temp. za paliti motor #define hysterese 1 // zadana vrijednost hysterese const int cycles = 20; // broj mjerenja LiquidCrystal_I2C lcd(0X27,16,2) // adresa LCD void setup() { pinMode(motorPin,OUTPUT); lcd.init(); lcd.backlight(); } void loop() { float resultTemp = 0.0; for(int i = 0; i < cycles; i++){ int analogValue = analogRead(sensorPin); float temperature = (5.0 * 100.0 * analogValue) / 1024; resultTemp += temperature; delay(DELAY1); } resultTemp /= cycles; lcd.clear(); lcd.print("Temp:"); lcd.print(resultTemp); #if ARDUINO < 100 lcd.print(0xD0 + 15, BYTE); #else lcd.write(0xD0 + 15); #endif lcd.print("C"); lcd.setCursor(0, 1); lcd.print("MOTOR: "); if(resultTemp > (threshold + hysterese)) digitalWrite(motorPin,HIGH); if(resultTemp < (threshold + hysterese)) digitalWrite(motorPin,LOW); lcd.print(digitalRead(motorPin) == HIGH?"UPALJEN":"UGASEN"); delay(DELAY2); } |