当前位置:网站首页>Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)

Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)

2022-07-06 13:19:00 Lunan wind

Experimental equipment

arduino mega2560(uno And other series are the same )

ds18b20 Temperature sensor ( Waterproof package )

lcd1602A ( save io mouth , external pcf8574, Four wire drive )

There are several DuPont lines

Introduce

ds18b20

characteristic : Wide voltage range ,3.0~5.5v, Single line transmission of data , Multiple temperature sensors can be connected on three lines , Multi point temperature measurement , When the positive and negative poles are reversed for a short time , Will not burn the chip , But it doesn't work .
Measuring temperature range :-55℃~+125℃
Programmable resolution ,9 A to 12 position , Respectively 0.5℃,0.25℃,0.125℃,0.0625℃. Default 12 Bit accuracy
ds18b20, There is an external module , If no module is added to the data segment 1k The pull-up resistance of about Ω is enough ds18b20, There is an external terminal adapter , If there is no terminal adapter connected externally at the data end 1k The pull-up resistance of about Ω is enough ( The chip resistor on the module is only used 472 o )
 Insert picture description here
Call library , The simple function program is as follows
 Insert picture description here  Insert picture description here The same is true for references after adding other libraries

Code segment

#include <OneWire.h>       
#include <LiquidCrystal_I2C.h>    //4 The needle pcf8574 drive lcd1602 library 
#include <DallasTemperature.h>   //ds18b20 library 
#define buzzpin 6      // Define buzzer 6 Pin No 
#define Onewire_bus 7     //ds18b20 Connect 7 Pin 
OneWire oneWire(Onewire_bus);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2);     //LCD1602 Of I2C The address is 0x27,LCD1602 Two lines , Each row 16 Character LCD 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  lcd.init(); //  Perform twice LCD Of I2C Communication initialization 
  delay(20);
  lcd.init();
  delay(20);
  lcd.backlight();// Lighten up LCD Backlight 
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(50);
  Serial.print(" Get the temperature :");    //  Send a few words 
  sensors.requestTemperatures();         // Get the temperature 
  Serial.println(sensors.getTempCByIndex(0));
  lcd.setCursor(0, 0);               //  take LCD The cursor moves to the first position 0,0( Column , That's ok )
  lcd.print("temp:");
  lcd.print(sensors.getTempCByIndex(0));    //  Sensor temperature value 
  lcd.print(" C");            //  Continue the previous statement to write 
  if(sensors.getTempCByIndex(0)>40)    // The temperature is greater than 40 Call the police 
  {
    digitalWrite(buzzpin,HIGH);
   }
   else
   {
    digitalWrite(buzzpin,LOW);
    }
    delay(10);
}

test

There is no water here , Simple touch temperature test
 Insert picture description here Serial port display
 Insert picture description here
if lcd1602IIC The address is not 0x27, You can find it through the following program , Serial port sending address

#include <Wire.h> 

void setup() {
    Serial.begin (115200);  
    while (!Serial) { } 
    Serial.println (); 
    Serial.println ("I2C scanner.Scanning ..."); 
    byte count = 0; 
    Wire.begin(); 
    for (byte i = 8; i < 120; i++) {
        Wire.beginTransmission (i);
        if (Wire.endTransmission () == 0) {
            Serial.print ("Found address: ");
            Serial.print (i, DEC); Serial.print (" (0x");
            Serial.print (i, HEX); Serial.println (")");
            count++; delay (1); // maybe unneeded?
        } // end of good response
    } // end of for loop 
    Serial.println ("Done."); 
    Serial.print ("Found "); 
    Serial.print (count, DEC); 
    Serial.println (" device(s)."); 
} // end of setup 

void loop() {}

( source csdn, I can't find the original article of the boss , Invasion and deletion )

Have a problem

IIC Wrong address
Welded pcf8574 There is a potentiometer behind the adapter board , If the serial port displays the value normally ,lcd If it is not shown, you can adjust the potentiometer ,lcd After brightness adjustment, it can be displayed
 Insert picture description here

原网站

版权声明
本文为[Lunan wind]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916074763.html