資料介紹
描述
介紹
在一些應用中,需要對系統進行溫度監測。這樣,為了提醒用戶,就需要使用傳感器進行監控和光、聲信號。
考慮到這個問題,我們開發了一個監控溫度的系統。當溫度超過用戶設定的值時,將激活LED和蜂鳴器以提醒用戶。
現在,讓我們了解如何開發以下功能:
- 調整用戶輸入的溫度;
- DS18B20 傳感器配置;
- 創建屏幕;
- 在Arduino EEPROM 存儲器中存儲永久數據。
但首先,我們將解釋電路,然后介紹開發的所有編程邏輯。
項目電子電路
此后,我們將討論并展示圖 1 中的電路。
對于這個項目,使用了三個按鈕:
按鈕(+):負責增加溫度值的調整;
按鈕(-):負責降低溫度值的調整;
按鈕(S):負責設置系統中的溫度調節信息。
Arduino將讀取DS18B20 傳感器的溫度并將此信息發送到16x2 LCD屏幕。圖 2 顯示了DS18B20 傳感器與Arduino的組裝電路。
通過這個電路,Arduino將使用DS18B20 傳感器讀取溫度。如果讀取的溫度超過調節溫度,LED和蜂鳴器將被激活以供用戶使用。
現在,您將學習如何實現該系統的所有功能。
系統編程
從圖 1 所示的電路中,我們設置了所有項目編程邏輯。
系統上電后,會出現PCBWay Factory Message,如圖 3 所示。
#include
#include
#include
#include
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define ONE_WIRE_BUS 8
/********************************************************************/
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
DallasTemperature sensors(&oneWire);
unsigned int verificador = 0;
bool increment, decrease, set = 0;
bool IncrementState = 0, DecreaseState = 0, EstadoSet = 0;
unsigned int temperature = 0;
byte PreviousValue = 0;
#define EndVerif 120
#define EndTemp 125
void setup()
{
lcd.begin(16, 2);
delay(500);
lcd.setCursor(3,0);
lcd.print("Factory");
lcd.setCursor(6,1);
lcd.print("PCBWay");
delay(3000);
sensors.begin();
lcd.clear();
pinMode(13, OUTPUT);
temperature = EEPROM.read(EndTemp);
}
void loop()
{
set = digitalRead(12);
if(set == 1)
{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Reconfigure ?");
lcd.setCursor(0,1);
lcd.print("Yes (+) No (-)");
do
{
increment = digitalRead(10);
decrease = digitalRead(11);
delay(50);
if(increment == 1 && decrease == 0)
{
EEPROM.write(EndVerif,0);
}
}while(increment == 0 && decrease == 0);
lcd.clear();
}
verificador = EEPROM.read(EndVerif);
if(verificador != 75)
{
lcd.setCursor(3,0);
lcd.print("Configure");
lcd.setCursor(0,1);
lcd.print("Temperature:");
temperature = EEPROM.read(EndTemp);
do
{
increment = digitalRead(10);
decrease = digitalRead(11);
set = digitalRead(12);
delay(200);
if(increment == 1 && IncrementState == 0)
{
temperature++; //Incrementa o valor da temperatura
IncrementState = 1;
}
if(increment == 0 && IncrementState == 1)
{
IncrementState = 0;
}
if(decrease == 1 && DecreaseState == 0)
{
temperature--; //Decrementa o valor da temperatura
DecreaseState = 1;
}
if(decrease == 0 && DecreaseState == 1)
{
DecreaseState = 0;
}
lcd.setCursor(13,1);
lcd.print(" ");
lcd.setCursor(13,1);
lcd.print(temperature);
}while(set != 1);
lcd.clear();
EEPROM.write(EndVerif,75);
EEPROM.write(EndTemp, temperature);
}
sensors.requestTemperatures();
float TempSensor = sensors.getTempCByIndex(0);
if(TempSensor != PreviousValue)
{
lcd.setCursor(2,0);
lcd.print("Temperature");
lcd.setCursor(4,1);
lcd.print(TempSensor);
lcd.print((char)223);
lcd.print("C");
PreviousValue = TempSensor;
if(TempSensor >= temperature)
{
digitalWrite(9, HIGH);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(9, LOW);
digitalWrite(13, LOW);
delay(1000);
}
if(TempSensor < temperature)
{
digitalWrite(9, LOW);
digitalWrite(13, LOW);
}
}
}
然后,我們在 void setup 函數中設置傳感器和LCD ,最后,我們讀取內存中的溫度調節值。
當機器關閉并且我們需要打開以使用相同的設定溫度值時,此讀取過程很有用。
temperature = EEPROM.read(EndTemp);
在循環函數的開頭,我們實現了一個條件來檢查設置按鈕是否被按下。如果是,系統將顯示溫度設置菜單,如圖 4 所示。
此時出現溫度調節畫面,如圖5所示,用戶可以選擇yes或no。如果用戶按否,則不會調節溫度。但是,如果是,用戶將調整溫度值。
當用戶按下yes 時,系統會將值0 寫入EEPROM 存儲器的End Verif (120) 位置。這是表示需要輸入新的溫度設定值的信號。
在下一個條件中,系統將執行一個條件來測試讀取并存儲在校驗變量中的值是否等于 75。
值 75 表示系統設置為溫度。如果讀取值與 75 不同,系統將啟動新的溫度調節過程。
在此之后,系統將根據值的遞增或遞減來配置新值,直到用戶按下設置按鈕。
最后,系統會將值75保存在EndVerif位置,并將溫度值保存在EndTemp位置。這樣可以在系統關閉時保持保存溫度值。
EEPROM.write(EndVerif,75);
EEPROM.write(EndTemp, temperature);
然后,將請求溫度值并將該值存儲在 TempSensor 變量中,如下所示。
sensors.requestTemperatures();
float TempSensor = sensors.getTempCByIndex(0);
最后,如果溫度與之前的值不同,系統會在屏幕上顯示一個新值,如圖 5 所示。
然后,它將讀取的溫度與設定值進行比較。如果它更大,LED和蜂鳴器將被激活以引起操作員的注意。如果較小,則LED和蜂鳴器將關閉。
致謝
感謝PCBWay支持我們的 YouTube 頻道并生產和組裝質量更好的 PCB。
- 可編程攝影轉盤開源設計
- 通用可編程定時器開源設計
- 可編程控制器AC500用戶手冊 1次下載
- 可編程邏輯器件PLD課件下載 31次下載
- 三菱微型可編程控制器FX1s系列使用手冊 6次下載
- MC14541B可編程定時器芯片數據手冊 7次下載
- 基于可編程邏輯的SDRAM控制方法設計 8次下載
- 系統可編程閃存中的RISC微控制器LGT8XM 0次下載
- ADXL355低噪聲可編程文件下載 0次下載
- 可編程控制器原理及應用 21次下載
- 三菱可編程邏輯控制器密碼破解軟件下載 6次下載
- 現場可編程門陣列簡介 76次下載
- 可編程邏輯陣列fpga和cpld說明 25次下載
- 電子技術基礎知識存儲器、復雜可編程器件和現場可編程門陣列的介紹 28次下載
- 基于ARM的可編程數顯表的設計 6次下載
- 什么是現場可編程邏輯陣列?它有哪些特點和應用? 481次閱讀
- 可編程片上系統的基本特征和主要應用 403次閱讀
- 可編程片上系統是什么意思 399次閱讀
- 現場可編程門陣列的原理和應用 457次閱讀
- 現場可編程門陣列是什么 2217次閱讀
- 可編程晶振如何設置呢 533次閱讀
- 簡單認識現場可編程門陣列 681次閱讀
- 可編程邏輯器件測試方法 1160次閱讀
- 可編程電源的結構 可編程電源的使用事項 856次閱讀
- 可編程電源的原理 可編程電源的優缺點 2150次閱讀
- 可編程控制器的特點有哪些 8439次閱讀
- 可編程電源應用與選型詳解 1.3w次閱讀
- 可編程控制器基本知識_可編程控制器原理及應用 5.8w次閱讀
- 可編程邏輯陣列(PLA)簡介 1.9w次閱讀
- 可編程電源簡介 2067次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多