Search Code

Sensọ iwọn otutu LM75A pẹlu LCD1602 I2C

Sensọ iwọn otutu LM75A pẹlu LCD1602 I2C

Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe le lo ẹ̀rọ ìwọ̀n ìgbóná LM75A láti fi àwọn ìwọ̀n ìgbóná hàn ní àwọn ìwọ̀n Celsius àti Fahrenheit lórí ojú ìhàn LCD1602 nípa lílo ìbánisọ̀rọ̀ I2C. LM75A lè wọn ìgbóná láti -55°C dé +125°C, tí ó mú un yẹ fún ọ̀pọ̀lọpọ̀ àwọn ìlò. Nígbà tí ìtòlẹ́sẹ̀ẹ́ bá parí, ìwọ yóò rí àwọn ìwọ̀n ìgbóná ní àkókò gidi lórí ojú ìhàn LCD.

LCD1602-I2C display module with 4 wires

Fún iṣẹ́-ìlú yìí, a óò lo ẹ̀rọ ìwọ̀n ìgbóná LM75A àti ẹ̀yà LCD1602 tí a so pọ̀ nípa I2C, èyí tí ó jẹ́ kí ìsopọ̀ okun rọrùn àti kí àwọn pin tí a lò lórí Arduino kéré. Ìdí ni láti dá ètò kan tí yóò máa ka ìwọ̀n ìgbóná nígbà gbogbo tí yóò sì fi hàn lórí LCD. Bí o bá nílò ìpàlápàlà lórí apá kan nínú ìlànà náà, rí i pé o wo ẹ̀kọ́ fídíò (nínú fídíò ní 00:00).

Àlàyé Ohun Èlò

Àwọn èròjà pàtàkì fún iṣẹ́-ìlú yìí ní ẹ̀rọ ìwọ̀n ìgbóná LM75A àti ojú ìhàn LCD1602. LM75A jẹ́ ẹ̀rọ ìwọ̀n ìgbóná I2C tí ó pèsè àwọn ìwọ̀n ìgbóná tí ó péye. Ó ń bá Arduino sọ̀rọ̀ nípa àwọn okun méjì péré, SDA (okun dátà) àti SCL (okun aago), tí ó mú kí ìsopọ̀ rẹ̀ rọrùn nínú àwọn iṣẹ́-ìlú rẹ.

LCD1602 jẹ́ ojú ìhàn ohun kíkọ 16x2 tí ó lè fi àwọn ohun kíkọ 32 hàn ní àkókò kan. Nípa lílo ojú ìsopọ̀ I2C, a lè darí rẹ̀ pẹ̀lú àwọn okun méjì àfikún péré, èyí tí ó dín ìsopọ̀ okun kù púpọ̀. Ẹ̀yà ìmọ́lẹ̀ ẹ̀yìn LCD náà lè pèsè ìríran tí ó dára jù ní àwọn ibi tí ìmọ́lẹ̀ kò pọ̀.

Àwọn Àlàyé Datasheet

OlùṣelọpọTexas Instruments
Nọ́mbà apáLM75A
Fóltì Logic/IO2.7 V sí 5.5 V
Fóltì ìpèsè2.7 V sí 5.5 V
Ìwọ̀n ìjàde (fún ikanni)N/A
Ìwọ̀n ìjàde tí ó ga jù (fún ikanni)N/A
Ìtọ́sọ́nà ìgbohùnsá PWMN/A
Àwọn ìwọ̀n àbáwọlé logic0.3 * Vcc (rẹ̀lẹ̀), 0.7 * Vcc (ga)
Ìrẹ̀wẹ̀sì fóltì / RDS(on) / ìkúnN/A
Àwọn ìwọ̀n ìgbónáÌṣiṣẹ́: -55°C sí +125°C
ÀpótíSOT-23
Àwọn àkíyèsí / àwọn oríṣiWà ní ọ̀pọ̀ àwọn àdírẹ́sì I2C

  • Rí i pé ìpèsè agbára tí ó tọ́ wà (2.7 V sí 5.5 V).
  • Lo àwọn resistor ìfà sókè lórí àwọn okun SDA àti SCL bí ó bá pọn dandan.
  • Ṣàyẹ̀wò ìtòlẹ́sẹ̀ẹ́ àdírẹ́sì I2C fún àwọn ẹ̀rọ púpọ̀.
  • Jẹ́ kí ìsopọ̀ okun kúrú láti dín ìkọlù kéré.
  • Ṣàkíyèsí ìwọ̀n ìgbóná: -55°C sí +125°C.
  • Lo àbójútó ẹ̀rọ tẹlẹ fún ṣíṣàwárí àwọn ìwọ̀n ìgbóná.
  • Ṣàkóso àwọn ipò àṣìṣe nínú kóòdù dáradára.
  • Ṣọ́ra pẹ̀lú àwọn ìbéèrè agbára ojú ìhàn.

Àwọn Ìtọ́sọ́nà Ìsopọ̀ Okun

Arduino_wiring_LM75A_LCD_bb

Láti so okun ẹ̀rọ ìwọ̀n ìgbóná LM75A àti LCD1602, bẹ̀rẹ̀ nípa sísopọ̀ ìpèsè agbára. So pin VCC ti àwọn méjèèjì LM75A àti LCD1602 sí pin 5V lórí Arduino. Lẹ́yìn náà, so pin ilẹ̀ (GND) ti àwọn módúùlù méjèèjì sí pin GND lórí Arduino.

Ní àtẹ̀lé, so àwọn okun ìbánisọ̀rọ̀ I2C. Pin SDA ti LM75A yẹ kí ó so sí pin A4 lórí Arduino, nígbà tí pin SCL yóò so sí pin A5. Èyí gba ìbánisọ̀rọ̀ I2C láàárín ẹ̀rọ ìwọ̀n àti Arduino. Rí i pé àwọn ìsopọ̀ náà múlẹ̀ dáradára láti ṣèdíwọ́ fún àwọn àṣìṣe ìbánisọ̀rọ̀.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà

Nínú kóòdù náà, a kọ́kọ́ fi àwọn ilé-ìkàwé pàtàkì fún ẹ̀rọ ìwọ̀n ìgbóná LM75A àti ojú ìhàn LCD1602. Ìyọ̀kúrò tí ó tẹ̀lé e ṣàfihàn bí a ṣe le dá àpẹẹrẹ kan ti ẹ̀rọ ìwọ̀n ìgbóná LM75A:

LM75A lm75a_sensor(false, false, false);

Ìlà yìí bẹ̀rẹ̀ ohun èlò ẹ̀rọ ìwọ̀n ìgbóná LM75A. Àwọn àyọkà boolean náà bá àwọn pin A0, A1, àti A2 ti LM75A mu, tí ó gba àwọn àdírẹ́sì I2C ọ̀tọ̀ọ̀tọ̀ láyè bí ó bá pọn dandan.

Ní àtẹ̀lé, a ṣètò àbójútó ẹ̀rọ tẹlẹ àti bẹ̀rẹ̀ ojú ìhàn LCD:

void setup(void) {
  Serial.begin(9600);
  lcd.begin();  
  lcd.backlight();
  lcd.print("Robojax LM75A");
}

Níhìn-ín, a bẹ̀rẹ̀ ìbánisọ̀rọ̀ ẹ̀rọ tẹlẹ ní 9600 baud àti bẹ̀rẹ̀ ojú ìhàn LCD. Ìmọ́lẹ̀ ẹ̀yìn ti wa ní ṣíṣe, àti pé a tẹ ìròyìn àkọ́kọ́ sí ojú ìhàn.

Nínú ìyípo àkọkọ, a ń ka ìwọ̀n ìgbóná nígbà gbogbo àti fi hàn:

float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
  Serial.println("Error while getting temperature");
}

Apá yìí gba ìwọ̀n ìgbóná láti ọ̀dọ̀ ẹ̀rọ ìwọ̀n. Bí ìwọ̀n náà bá jẹ́ aláìṣiṣẹ́, a óò fi ìròyìn àṣìṣe sí àbójútó ẹ̀rọ tẹlẹ. Bí kò bá rí bẹ́ẹ̀, a lè ṣe ìtọ́jú ìwọ̀n ìgbóná náà àti fi hàn lórí LCD.

Ìṣàfihàn / Ohun Tí O Lè Retí

Nígbà tí ohun gbogbo bá ti sopọ̀ okun tán àti tí a ti gbé kóòdù sílẹ̀, ìwọ yóò rí àwọn ìwọ̀n ìgbóná lórí ojú ìhàn LCD1602, tí ó ń yí padà láàárín Celsius àti Fahrenheit. Bí ẹ̀rọ ìwọ̀n ìgbóná LM75A bá ń ṣiṣẹ́ dáradára, yóò máa ṣàtúnṣe ìwọ̀n ìgbóná tí ó hàn ní gbogbo ìṣẹ́jú ààyè. Bí àwọn ìṣòro bá wà, bíi ìyípadà pólárítì tàbí ìsopọ̀ okun tí kò tọ́, ṣàyẹ̀wò àwọn ìsopọ̀ náà kí o sì rí i pé àwọn pin tí ó tọ́ ni a lò (nínú fídíò ní 00:00).

Aworan

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_LCD_bb
Arduino_wiring_LM75A_LCD_bb
129-LM75A temperature sensor with LCD1602 I2C
Ede: C++
/*
 * \brief Show temperature in degrees Celsius and Fahrenheit every second
 *
 * \author Quentin Comte-Gaz <quentin@comte-gaz.com>
 * \date 8 July 2016
 * \license MIT License (contact me if too restrictive)
 * \copyright Copyright (c) 2016 Quentin Comte-Gaz
 * \version 1.0
 * 
 * Modified by Ahmad Shamshiri on July 12, 2018 at 22:40 for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/hVo_msVMlaI
For this sketch, you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5

 */

#include <LM75A.h>

// Create I2C LM75A instance
LM75A lm75a_sensor(false,  //A0 LM75A pin state
                   false,  //A1 LM75A pin state
                   false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"


// start of settings for LCD1602 with I2C
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
  // initialize the LCD
  lcd.begin();  
  lcd.backlight();
  lcd.print("Robojax LM75A");
  lcd.setCursor(0,1);
  lcd.print("Demo"); 
  delay(2000); 
}

void loop()
{
   lcd.clear();// clear previous values from screen
  // Robojax.com LM75A Test
  float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();

  if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
    Serial.println("Error while getting temperature");
  } else {
    Serial.print("Temp: ");
    Serial.print(temperature_in_degrees);
    Serial.print(" C (");
    float tmpF = LM75A::degreesToFahrenheit(temperature_in_degrees);
    Serial.print(tmpF);
    Serial.println(" F)");
  lcdDisplay(
             // to print Celsius:
             0, // character 0 
             0, // line 0
             "Celsius: ", 

             // to print Celsius
             11, // character 10
             0, // line 0
             temperature_in_degrees 
             );  

  lcdDisplay(
             // to print Fahrenheit:
             0, // character 0 
             1, // line 1
             "Fahrenheit: ", 

             // to print Fahrenheit
             11, // character 9
             1, // line 0
             tmpF   
             );                 
  }

  delay(1000);
}


/*
 * lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
 * displays value and title on LCD1602
 * How to use:
 * If you want to display: "Voltage: 13.56mV" starting from the first character
 * on the second row.
 * use:
 * lcdDisplay(0, 1, "Voltage: ", 13.56)
 *   
 * tc  is the character number  (0)
 * tr is the row number in the LCD (1)
 * title is the text ("Voltage:")
 * vc is the character number for the value
 * vr is the row number for the value
 * value is the value (13.56)
 */
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
   // Robojax.com LCD1602 for LM75A Demo
   lcd.setCursor (tc,tr); //
   lcd.print(title);
   
   lcd.setCursor (vc,vr); //
   lcd.print(value);
 
}

Ohun ti o le nilo

Orisun & itọkasi

Fáìlìs📁

Fayile Fritzing

Awọn faili miiran