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.


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/IO | 2.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á PWM | N/A |
| Àwọn ìwọ̀n àbáwọlé logic | 0.3 * Vcc (rẹ̀lẹ̀), 0.7 * Vcc (ga) |
| Ìrẹ̀wẹ̀sì fóltì / RDS(on) / ìkún | N/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íṣi | Wà 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

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).
/*
* \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
-
AmazonPurchase LCD1602-I2C from Amazonamzn.to
-
AmazonPurchase LM75A from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Orisun & itọkasi
-
Ita gbangbaLM75A datasheet from NXPnxp.com
-
Ita gbangbaLM75A datasheet from TIti.com
-
Ita gbangbaLM75A library from GitHubgithub.com
Fáìlìs📁
Fayile Fritzing
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
Awọn faili miiran
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB -
LM75A library from Robojax.com
robojax-LM75A_temperature_sensor.zip0.56 MB