Hőmérő adatformátum kiírás

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
keurus
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2016. április 6. szerda, 19:55

Hőmérő adatformátum kiírás

Hozzászólás Szerző: keurus »

Sziasztok!

építenék egy fűtésvezérlőt, 4 motor vezérlése, állapot kijelzése, 4 hőmérséklet kijelzés, ebből 2 hőmérséklet állítható, ez alapján vezérelné 2 motor két kimenetet, illetve +1 kazántiltás, a két meglévő termosztáttal vezérelve. ( Kandalló vízhőmérséklet szabályzása,gázkazán tiltása, a két szobatermosztátnak megfelelően)
A hőmérők DS18B20 típusúak. Még nagyon az elején vagyok a dolgoknak, mind programilag, mind tapaszalatilag.
Azt szeretném kérdezni, hogy jelen pillanatban a kijelzőn kiírt hőmérséklet XX.XX de nekem nincs szükségem a század helyi értékre, ezt hogy tudom levarázsolni XX.X re?
Mellékelem a progit , De ne nagyon röhögjetek ki, 2 hónapja azt sem tudtam mi az az Arduino.

Kód: Egész kijelölése

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <FaBoLCD_PCF8574.h>  



#define ONE_WIRE_BUS 5    // Hőmérők az 5 lábon 
FaBoLCD_PCF8574 lcd(0x27);  //lcd a 0x27 en van
OneWire oneWire(ONE_WIRE_BUS);

// Sznzorok azonosítása
DallasTemperature sensors(&oneWire);

DeviceAddress Hom1 = { 0x28, 0xFF, 0x98, 0xFC, 0x37, 0x16, 0x04, 0x21 }; 
DeviceAddress Hom2 = { 0x28, 0xFF, 0xC4, 0x0C, 0x38, 0x16, 0x04, 0xBB }; 
DeviceAddress Hom3 = { 0x28, 0xFF, 0x52, 0xD7, 0x37, 0x16, 0x04, 0x5A }; 
DeviceAddress Hom4 = { 0x28, 0xFF, 0x71, 0x0E, 0x38, 0x16, 0x04, 0x21 };
int M1J = 13; // M1 motor vezérlő a 13on tesztként

void setup()  
{

  pinMode(M1J,OUTPUT);  //M1J kimenet, ezzel az M1 motort
  sensors.begin();
  sensors.setResolution(Hom1, 10);  //hőmérők beállítása, pontosság elég 0.25
  sensors.setResolution(Hom2, 10);
  sensors.setResolution(Hom3, 10);
  sensors.setResolution(Hom4, 10);
  
  lcd.begin (20,4);  //ezek fixen a kijelzőn
  lcd.setCursor(0,0);
  lcd.print("M1:");   
  lcd.setCursor(0,1);
  lcd.print("M2:");
  lcd.setCursor(0,2);
  lcd.print("M3:");
  lcd.setCursor(0,3);
  lcd.print("M4:");
   
}

void printTemperature(DeviceAddress deviceAddress)

{

  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {  
    lcd.print("Err");      //ha nem látja a szenzort
  } else {
    lcd.print(tempC);
  }
  }
void loop()
  {
                            //labkimenet tesztelésre
  {digitalWrite(13, HIGH); //13 lábon villogtatás
  lcd.setCursor(3,0);
  lcd.print(digitalRead(13));  //írjukki mitörténik
  delay(1000);
  
  digitalWrite(13, LOW);
  lcd.setCursor(3,0);
  lcd.print(digitalRead(13));
  delay(1000);}
    
  sensors.requestTemperatures(); // Adatkérés a hőmérőtől

  lcd.home();
  
  lcd.setCursor(5,0); // hovairjuk a hőmérsékletet
  lcd.print("T1:");
  printTemperature(Hom1);  
  
  lcd.setCursor(5,1); 
  lcd.print("T2:");
  printTemperature(Hom2);  
  
  lcd.setCursor(5,2); 
  lcd.print("T3:");
  printTemperature(Hom3);  
  
  lcd.setCursor(5,3); 
  lcd.print("T4:");
  printTemperature(Hom4);  
  
  
  
  }
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Hőmérő adatformátum kiírás

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

lcd.print(tempC,2); // 2 tizedes kiírás
lcd.print(tempC,1); // 1 tizedes kiírás
Fontos: nem kerekítés, hanem lehagyja a végét!
Daszkalosz
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2016. május 22. vasárnap, 20:26

Re: Hőmérő adatformátum kiírás

Hozzászólás Szerző: Daszkalosz »

Sziasztok!
Két tizedesig szeretném kiiratni a hőmérséklet és páratartalom értékeket.
Hogyan tehetném meg?

Kód: Egész kijelölése

//Ds1307  RTC és DHT22 szenzor LCD-re kiírva

#include <Wire.h>
#include "RTClib.h"      //Óra könyvtár
#include "DHT.h"         //Hőmérséklet és páratartalom könyvtár
#include <LiquidCrystal_I2C.h>
#define DHTPIN 7         //Hőmérséklet szenzor a 7-es pinre kötve
#define DHTTYPE DHT22
 DHT dht(DHTPIN, DHTTYPE);
 int ledPin = 13;
 LiquidCrystal_I2C lcd(0x27, 20, 4);
 RTC_DS1307 RTC;

void setup () {
    Serial.begin(9600);
    Wire.begin();
    Serial.println("DHT22");
    dht.begin();
    RTC.begin();
    lcd.begin(20, 4);
    lcd.backlight();
    
   pinMode(8,OUTPUT);

  if (! RTC.isrunning()) {
   Serial.println("RTC is NOT running!");
    // Beállítja az RTC dáum és idő vázlatát
   RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now(); 
    // Év,hónap,nap megjelenítése a kijelzőn
    
    lcd.setCursor(0, 0);
    lcd.print(now.year(), DEC);
    lcd.print('.');
    lcd.print(now.month(), DEC);
    lcd.print('.');
    lcd.print(now.day(), DEC);
    lcd.print(' ');
    lcd.setCursor(10, 0);
     if (now.hour()<10)
    lcd.print('0');
    lcd.print(now.hour(), DEC);
    lcd.print(':');
     if (now.minute()<10)
    lcd.print('0');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    if (now.second()<10)
    lcd.print('0');
    lcd.print(now.second(), DEC);
    lcd.setCursor(6, 1);
   int dayofweek = now.dayOfWeek();
   switch(dayofweek){
     case 1:
     lcd.print("Hetfo");
     break;
     case 2:
     lcd.print("Kedd");
     break;
     case 3:
     lcd.print("Szerda");
     break;
     case 4:
     lcd.print("Csutortok");
     break;
     case 5:
     lcd.print("Pentek");
     break;
     case 6:
     lcd.print("Szombat");
     break;
     case 0:
     lcd.print("Vasarnap");
     break;
    delay(1000);
    }
    {

// DHT22 szenzor paraméterei megjelenítése LCD kijelzőn

  int h = dht.readHumidity();
  int t = dht.readTemperature();

// set the cursor to (0,0):
  lcd.setCursor(0, 2);
// print from 0 to 9:
  lcd.setCursor(0, 2);
  lcd.print("Temperature: ");
  lcd.print(t);
  lcd.print("C");

// set the cursor to (16,1):
  lcd.setCursor(0, 3);
  lcd.print("Humidity: ");
  lcd.print(h);
  lcd.print("%");
  delay(200);

}
 
}
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Hőmérő adatformátum kiírás

Hozzászólás Szerző: csegebiga »

voltmár:
viewtopic.php?f=23&t=1345


(Robert tollából egy cikk a Signetics 25120 WOM -ról
érik bennem a WOU(Write Only User)cikk megírása)
Daszkalosz
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2016. május 22. vasárnap, 20:26

Re: Hőmérő adatformátum kiírás

Hozzászólás Szerző: Daszkalosz »

Köszi! Magamtól oldottam meg :)
Válasz küldése