Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <BigNumbers.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- // Na PIN 7 cteni cidel
- #define ONE_WIRE_BUS 7
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- //prectené adresy Cidel DS18b20
- DeviceAddress Probe01 = { 0x28, 0xCC, 0x36, 0xB4, 0x01, 0x00, 0x00, 0xD0 };
- DeviceAddress Probe02 = { 0x28, 0x27, 0x23, 0x9D, 0x01, 0x00, 0x00, 0x4C };
- //zapojeni PINu 12, 11, 5, 4, 3, 2 do arduina
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- //inicializace velkych pismen
- BigNumbers bigNum(&lcd);
- //nastaveni promenne
- float tempC1, tempC1C;
- unsigned int temp, tempA, tempB, tempC;
- //smazani
- byte RR[8] =
- {
- B00000,
- B00000,
- B00000,
- B00000,
- B00000,
- B00000,
- B00000,
- B00000
- };
- //Stupen
- byte RT[8] =
- {
- B00000,
- B01110,
- B01010,
- B01010,
- B01010,
- B01010,
- B01110,
- B00000
- };
- //zobrazení mínusu
- byte LR[8] =
- {
- B00000,
- B00000,
- B00000,
- B00000,
- B00000,
- B11111,
- B11111,
- B11111
- };
- byte MB[8] =
- {
- B11111,
- B11111,
- B11111,
- B00000,
- B00000,
- B00000,
- B00000,
- B00000
- };
- //konec zobrazení mínusu
- //desetinna carka
- byte th[8] = {
- B00000,
- B00000,
- B00000,
- B00000,
- B00000,
- B01110,
- B01110,
- B01110
- };
- void setup()
- {
- lcd.createChar(0,RR);
- lcd.createChar(1,RT);
- lcd.createChar(2,LR);
- lcd.createChar(3,MB);
- lcd.createChar(4,th);
- sensors.begin();
- sensors.setResolution(Probe01, 12);
- sensors.setResolution(Probe02, 12);
- lcd.begin(20,4);
- lcd.clear();
- }
- void loop()
- {
- //inicializuje cidlo
- sensors.requestTemperatures();
- //precte teplotu z Probe02
- tempC1 = sensors.getTempC(Probe02);
- // tempc1 = -127 pak napise error
- if (tempC1 == -127.00)
- {
- //smazani desetinne tecky
- lcd.setCursor(9,3);
- lcd.write(byte(0));
- //konec
- //vykresleni stupne
- lcd.setCursor(17,0);
- lcd.write(byte(0));
- //KONEC stupne
- //smaze minus
- lcd.setCursor(0,1);
- lcd.write(byte(0));
- lcd.setCursor(0,2);
- lcd.write(byte(0));
- //KONEC minus
- bigNum.clearLargeNumber(2);
- bigNum.displayLargeNumber(12,2); //zobrazi pismeno E
- bigNum.clearLargeNumber(6);
- bigNum.displayLargeNumber(13,6); //zobrazi pismeno R
- bigNum.clearLargeNumber(10);
- bigNum.displayLargeNumber(14,10); //zobrazi pismeno O jao olga
- bigNum.clearLargeNumber(14);
- bigNum.displayLargeNumber(13,14);
- bigNum.clearLargeNumber(18);
- } else{
- //kdyz teplota bude mensi nez -0.05 pak vykresli znamenko minus na displeji
- if(tempC1 <= -0.05){
- //vykresleni minus
- lcd.setCursor(0,1);
- lcd.write(2);
- lcd.setCursor(0,2);
- lcd.write(3);
- //KONEC minus
- tempC1C = tempC1 * -1;
- //Serial.println(tempC1);
- //vypise prvni cislo na displeji 10.00
- temp = tempC1C/10;
- //Serial.println(temp);
- //vypise druhe cislo na displeji 01.00
- tempA = tempC1C - (temp*10);
- //Serial.println(tempA);
- //vypise treti cislo na displeji 00.10
- tempB = tempC1C*10-(temp*100+tempA*10);
- //Serial.println(tempB);
- //vypise ctvrte cislo na displeji 00.1
- tempC = tempC1C*100-(temp*1000+tempA*100+tempB*10);
- //Serial.println(tempC);
- bigNum.clearLargeNumber(2);
- bigNum.displayLargeNumber(temp,2);
- bigNum.clearLargeNumber(6);
- bigNum.displayLargeNumber(tempA,6);
- //vykresleni desetinne tecky
- lcd.setCursor(9,3);
- lcd.write(4);
- //KONEC
- bigNum.clearLargeNumber(10);
- bigNum.displayLargeNumber(tempB,10);
- bigNum.clearLargeNumber(14);
- bigNum.displayLargeNumber(tempC,14);
- //vykresleni pismene C
- bigNum.displayLargeNumber(11,18);
- //konec
- //vykresleni stupne
- lcd.setCursor(17,0);
- lcd.write(1);
- //KONEC stupne
- //kdyz teplota bude v plusi tak zapise teplotu a vymaze znamenko
- }else{
- //smazani minus
- lcd.setCursor(0,1);
- lcd.write(byte(0));
- lcd.setCursor(0,2);
- lcd.write(byte(0));
- //KONEC minus
- //Serial.println(tempC1);
- //vypise prvni cislo na displeji 10.00
- temp = tempC1/10;
- //Serial.println(temp);
- //vypise druhe cislo na displeji 01.00
- tempA = tempC1 - (temp*10);
- //Serial.println(tempA);
- //vypise treti cislo na displeji 00.10
- tempB = tempC1*10-(temp*100+tempA*10);
- //Serial.println(tempB);
- //vypise ctvrte cislo na displeji 00.1
- tempC = tempC1*100-(temp*1000+tempA*100+tempB*10);
- //Serial.println(tempC);
- bigNum.clearLargeNumber(2);
- bigNum.displayLargeNumber(temp,2);
- bigNum.clearLargeNumber(6);
- bigNum.displayLargeNumber(tempA,6);
- bigNum.clearLargeNumber(10);
- //vykresleni desetinne tecky
- lcd.setCursor(9,3);
- lcd.write(4);
- //KONEC
- bigNum.displayLargeNumber(tempB,10);
- bigNum.clearLargeNumber(14);
- bigNum.displayLargeNumber(tempC,14);
- //vykresleni pismene C
- bigNum.displayLargeNumber(11,18);
- //konec
- //vykresleni stupne
- lcd.setCursor(17,0);
- lcd.write(1);
- //KONEC stupne
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement