Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <OneWire.h>
- byte i = 0;
- byte data[9];
- byte addr[8];
- float temp; // Mudei para float
- float tempACC; // Acumulador de temperatura
- float tempD; // Parte decimal da temperatura
- boolean type;
- OneWire ds(2); // pin 2
- LiquidCrystal lcd(11, 12, 4, 5, 3, 7);
- //-------------------------------
- void setup(void)
- {
- lcd.begin(20, 4);
- lcd.print("Temp de cada Sensor = ");
- lcd.setCursor(0, 1);
- lcd.print("S1,S2,S3 = ");
- lcd.setCursor(0, 2);
- lcd.print("CARLOSKWIEK.COM.BR");
- lcd.setCursor(4, 3);
- lcd.print("BLOG E MUITO +");
- }
- //-------------------------------
- void loop(void)
- {
- if (!ds.search(addr)) //get the addresses of Temperature Sensors
- {
- ds.reset_search(); // Pare a procura de Sensor
- temp = tempACC / 3;
- lcd.setCursor(9, 1);
- lcd.print(temp);
- lcd.print(" ");
- lcd.write(223); // Simbolo graus
- lcd.print("C ");
- tempACC = 0; // Zera o acumulado
- return;
- }
- switch (addr[0])
- {
- case 0x10: type = 1; break; //DS18S20
- case 0x22: type = 0; break; //DS1822
- case 0x28: type = 0; break; //DS18B20
- default: break;
- }
- ds.reset();
- ds.select(addr);
- ds.write(0x44);
- delay(750);
- ds.reset();
- ds.select(addr);
- ds.write(0xBE);
- for ( i = 0; i < 9; i++) //Leitura
- {
- data[i] = ds.read();
- }
- if (!type) //DS18B20 ou DS1822
- {
- temp = (data[1] << 4) | (data[0] >> 4);
- if ((data[1] >> 7) == 1)
- {
- data[1] = ~data[1];
- data[0] = (~data[0]) + 1;
- temp = temp * - 1;
- }
- tempD = tempD + ((data[0] & 0x0F) * 625); // Calcula valor decimal
- if (tempD > 625)
- {
- tempD = tempD / 1000;
- }
- else
- {
- tempD = tempD / 10000;
- }
- temp = temp + tempD; // Junta inteiro com decimal
- tempACC = tempACC + temp; // Acumula temperatura
- }
- else //DS18S20
- {
- temp = data[0] >> 1;
- if ((data[1] >> 7) == 1)
- {
- data[0] = ~data[0];
- }
- temp = temp * - 1;
- //tempD = ((data[0] & 0x01) * 5);
- //temp = temp + tempD; // Junta inteiro com decimal
- tempACC = tempACC + temp; // Acumula temperatura
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement