步驟1:免責(zé)聲明和法律條款
1。該項目涉及使用線電壓(120-240v)。此外,用于容納控制器的外殼不是水密的,必須注意確保其不會被弄濕。此外,還有用于加熱水箱中水的裸露加熱元件。我要說的是存在潛在的電擊或嚴(yán)重?zé)齻L(fēng)險。如果您不能承擔(dān)此風(fēng)險,請不要構(gòu)建此項目。
2。未煮熟的食物可能會嚴(yán)重危害健康。確定合適的食物烹飪溫度時,請查閱食譜和食物標(biāo)簽。
警告:
1。除非將加熱元件浸入水中,否則切勿操作炊具。
2。除非將潛水泵浸入水中,否則切勿操作炊具。
3。請務(wù)必小心,以確保水或其他液體永遠(yuǎn)不要進(jìn)入控制箱。
4。切勿將您的手浸入熱水中。
5。
第2步:零件清單
1。 1 – Arduino Uno 29.00美元
2。 1 – LM35溫度傳感器$ 0.99
3。 1 – SainSmart LCD/鍵盤保護(hù)罩$ 9.95
4。 1 – SainSmart 2通道固態(tài)繼電器$ 7.95
6。 1個項目盒子(6“ x4”)5.99美元
7。 2 –2KΩ電阻$ 2.38
8。 2 –200Ω電阻$ 2.38
9。 20規(guī)格連接線(3根線軸,紅色,黑色,綠色)$ 8.39
10。熱縮管$ 2.99
11。 .023塑料管(3英尺)$ 1.23
12。 .023尼龍螺絲$ 0.19
13。 2 –潛水熱水器$ 18.00
14。 1 –潛水泵70 GPH $ 16.99
15。 1 –塑料桶,7加侖$ 7.99
16。 ?英寸支架,1.99美元
17。扭線連接器$ 3.21
總計:$ 123.37
第3步:工具
?焊鐵與焊料
?熱膠槍
?帶有各種尖端的Dremol工具
?螺絲起子
?尖嘴鉗
?鋼絲鉗/壓接鉗
?萬用表
第4步:溫度傳感器子組件
溫度傳感器子組件使用LM35溫度傳感器,一些電阻器和電線。該傳感器需要電路來提供適當(dāng)?shù)?a target="_blank">信號。該電路在附圖中有詳細(xì)說明:
首先測量將用于傳感器的連接線。傳感器將位于浸入式炊具的地板上,與加熱元件相反。我這樣做是為了確保獲得所有水的溫度讀數(shù),而不僅僅是加熱元件周圍的水。您需要三根足夠長的導(dǎo)線以橫穿浴缸的地板和墻壁,再加上三英尺長才能到達(dá)控制箱。我使用了不同的電線顏色,因為您將擁有一根地線,5伏特和感應(yīng)線。
首先將連接到傳感器+ VS端子的擴(kuò)展信號焊接在一起。接下來,將200Ω電阻器焊接到中央(Vout)端子。然后將一個2KΩ電阻焊接到傳感器的Gnd端子。我的本地RadioShack?沒有200?或2K?電阻,所以我使用了220?和2.2K?電阻。接下來,我將電阻器的松散端絞在一起。然后,我拿了一個220a和2.2Ka電阻,將兩端的兩端都捻在一起,基本上如上圖8所示將它們并聯(lián)。添加一條信號線,并將并聯(lián)電阻的一端扭絞到從LM35傳感器出來的電阻的扭絞端上。在該連接處涂焊料。最后,將地線焊接到并聯(lián)電阻的其余雙絞端。
下一步,將線束編織起來,這樣您就可以輕松地將電線和傳感器穿過用于將成為炊具底部的水密溫度傳感器通道。
下一步構(gòu)造水密溫度傳感器通道。首先,使用熱膠槍將尼龍螺絲粘貼到尼龍管中。然后沿著地板的中心和浴缸的側(cè)面粘貼管道。
您應(yīng)該能夠輕松地將溫度傳感器插入上圖所示的水密通道中。修剪浴缸上部邊緣的水密通道。
步驟5:加熱元件子組件
接下來,我們將構(gòu)造加熱元件。我添加了兩個元素,盡管可以添加其他元素,這將使水更快地達(dá)到溫度。加熱元件幾乎可以在任何五金店或廚房供應(yīng)店購買。它們可浸入水中,通常用于加熱杯子中的水以用于咖啡或茶。每個元件的額定功率為300瓦。使用公式A = W/V,每個電極將消耗大約2安培的電流,這完全在我們固態(tài)繼電器(SSR)的10安培額定值之內(nèi)。值得注意的是,我最初嘗試使用SainSmart 2安培SSR,但是由于要消耗的安培略大于2安培,所以將它們燒壞了。
需要安裝加熱元件,以使其不接觸外殼側(cè)面。浴缸并融化。為此,我找到了兩個可以抵消這些元素的硬塑料衣架。我將它們粘合在一起,然后在其上粘合一塊面包板,以提供額外的保護(hù)以防熔化。然后,我使用扎線帶將加熱元件固定在其上。如圖所示。
最后,我用我的Dremel工具在浴缸的側(cè)脊上切出一個槽,并將倒置的衣架插入槽中以安裝加熱元件。
潛水泵底部應(yīng)有吸盤,并使用這些吸盤將其簡單地連接到浴缸的側(cè)壁。然后,我收集了所有的電線,并使用扎帶將它們捆在一起。
步驟6:控制器子組件(第1部分)
現(xiàn)在,我們將注意力轉(zhuǎn)向控制器。對于控制器,我選擇了三個主要組件,分別是Arduino Uno控制器,SainSmart LCD/鍵盤護(hù)罩和SainSmart 10安培雙固態(tài)繼電器(SSR)。首先,在項目框的底部鉆孔,然后將電源端子固定在框上。接下來,從潛水加熱元件和潛水泵的末端切下一定長度的壁塞,以使其能到達(dá)坐在浴缸旁邊柜臺上的控制箱。我保留了從插頭到潛水泵的電源,因為它具有最長的長度,但是您可以使用任何可用的電源線來實現(xiàn)此目的。鉆一個足夠大的孔,以使所有電纜進(jìn)入項目盒的側(cè)面,然后將其布線到接線盒。該孔可以用橡膠墊圈密封。如果需要,可以將終端放置在電源插頭,潛水泵上,以及每個潛水加熱元件的一根電線上。將電源線的一根電線連接到每個插排。將一根電纜從潛水泵連接到每個條帶(潛水泵將連續(xù)運(yùn)行,并且不會通過繼電器布線)。可選地,電源插頭中的一根電線可以通過開關(guān)進(jìn)行布線,但是我選擇此版本的電磁爐只是為了簡化操作。最后,將一根導(dǎo)線從每個潛水加熱元件連接到配電盤的一側(cè)。使用哪個條帶都沒有關(guān)系,但是從每個加熱元件連接的電線應(yīng)從同一條帶上脫落。請注意,我在項目盒內(nèi)的電源電纜上打了一個結(jié),以防止其(和其他電纜)從盒內(nèi)的孔中拉回。
下一步,切短兩段(?6“ ),然后將其連接到固定有潛水加熱元件的相對條上。這些連接如圖所示。
步驟7:控制器子組件(第2部分)
現(xiàn)在讓我們看一下SSR,SSR期望與Arduino板有四個連接,一個+ 5v連接,一個Gnd連接和兩個數(shù)字信號連接。我發(fā)現(xiàn)最簡單的方法是將這些連接焊接到電路板的底部,因為SSR每個繼電器具有三個螺絲端子,將兩條六英寸的雙絞線剝開并擰入中心端子。如圖所示,再接兩條兩條6英寸的雙絞線,然后將它們擰緊到每個繼電器最左邊的端子中。為了使這些繼電器保持平衡,繼電器將抵靠在項目盒的面板上。
步驟8:控制器子組件(第3部分)
現(xiàn)在,將兩條數(shù)字控制線從SSR焊接到SainSmart LCD/鍵盤防護(hù)板的數(shù)字端口2和3。將三根六英寸的導(dǎo)線分別焊接到SainSmart LCD/鍵盤屏蔽的5v,Gnd和模擬端口1。
步驟9:控制器子組件(第4部分)
插入SainSmart LCD/Keypad屏蔽到Arduino Uno中,確保所有銷釘正確接合。通過USB串行端口將Arduino連接到計算機(jī),然后編譯并將附件代碼下載到設(shè)備中。如果您希望設(shè)備默認(rèn)使用攝氏溫度運(yùn)行,只需在編譯之前將變量“ iTempMode”從“ FARENHEIT”更改為“ CELSIUS”即可。請注意,可以即時在攝氏和攝氏之間進(jìn)行切換(請參閱步驟10)。
使用SainSmart LCD/鍵盤護(hù)罩左上角的小螺釘來調(diào)節(jié)顯示屏的亮度。有必要的。拔下Arduino,將其關(guān)閉。從SainSmart LCD/鍵盤護(hù)罩上取下Arduino Uno。
在面板上切開/鉆孔,然后用螺釘將SainSmart LCD/鍵盤護(hù)罩和SainSmart SSR護(hù)罩固定在面板上。
收集紅色溫度傳感器線,將SainSmart LCD/鍵盤護(hù)罩的5v導(dǎo)線與SainSmart SSR的Vss + 5v導(dǎo)線連接在一起并焊接,并用收縮管保護(hù)它們。對黑色溫度傳感器導(dǎo)線和兩條Gnd導(dǎo)線執(zhí)行相同的操作。將綠色導(dǎo)線從溫度傳感器連接到模擬端口1導(dǎo)線。使用擰緊的端子連接器將SSR的一根導(dǎo)線固定到一個加熱元件的一根導(dǎo)線上。對其余的SSR和加熱元件重復(fù)此步驟。然后將每個SSR中剩余的導(dǎo)線分別固定到從接線盒中引出的導(dǎo)線上。
將Arduino Uno的插頭插入SainSmart LCD/鍵盤屏蔽層。我決定不使用單獨(dú)的9伏電源,而是決定使用從RadioShack?購買的非處方電源。我通過項目框側(cè)面的孔將此連接器插入,然后將其插入Arduino Uno。這種布置的缺點是需要兩個壁式插座來運(yùn)行炊具。優(yōu)點是您仍可以使用控制器(并檢查包括溫度傳感器的連接),而無需在加熱元件上施加壁式電源。
最后,將面板固定在項目盒上。您可以插入9伏電源,并且應(yīng)該會看到設(shè)備啟動,并讀取默認(rèn)的設(shè)定溫度(130°F)和當(dāng)前溫度(室溫)。如果您將熱水裝滿浴缸,則溫度會升高。
步驟10:基本操作
要升高或降低設(shè)定溫度,請分別使用“向上”和“向下”鍵。調(diào)節(jié)到所需的溫度后,使用“選擇”鍵設(shè)置新的“設(shè)置”溫度。 SSR應(yīng)響應(yīng)設(shè)置溫度相對于當(dāng)前溫度的變化而發(fā)出咔嗒聲。如果您想在攝氏下工作,請使用“左”鍵調(diào)出選項菜單。使用“向上”和“向下”鍵在模式之間進(jìn)行選擇,并使用“選擇”鍵進(jìn)行選擇。為了將來,我打算添加一個時鐘,時鐘功能也將是通過此方法輸入的子菜單。 “ Rst”鍵將重新啟動設(shè)備,而“ Right”鍵目前已被忽略。
我強(qiáng)烈建議在連接120v電源之前,將Arduino/SainSmart電路用于測試驅(qū)動器。只需在浴缸中注滿熱水即可。插入Arduino 9v電源。 LCD顯示屏上應(yīng)顯示“ Booting…”(正在引導(dǎo)…)消息,最后顯示“ Immersion Cooker”和軟件版本號。在引導(dǎo)階段,軟件將實例化溫度讀取陣列,該陣列用于執(zhí)行信號平滑。幾秒鐘后,應(yīng)顯示默認(rèn)設(shè)置溫度(130°F)和當(dāng)前溫度。當(dāng)傳感器達(dá)到真實溫度時,溫度在最初的幾秒鐘內(nèi)可能會發(fā)生很大變化,但應(yīng)該穩(wěn)定下來。我在水中使用了模擬烹飪溫度計,以驗證溫度傳感器讀數(shù)的正確性。當(dāng)升高或降低設(shè)定溫度時,您應(yīng)該聽到SSR的喀噠聲。此外,應(yīng)使用萬用表檢查繼電器的導(dǎo)通性,以確保SSR正常工作。我還將使用萬用表檢查所有120v連接,以確保沒有短路。一旦確定所有電氣連接正確,就可以將120v電路連接到主電源。
步驟11:您的第一頓飯
首先,要使用炊具,必須將食物放在真空密封袋中。在第一頓飯中,我調(diào)味了一些蔬菜并用真空密封。接下來,我拿了大約20只大蝦,將它們密封在一個裝有幾包黃油和一些大蒜的袋子中。最后,將兩塊紐約條狀牛排,用少許鹽,胡椒粉,洋蔥粉和大蒜粉調(diào)味,并用真空袋密封。
我喜歡我的牛排,這種稀有牛排的溫度約為140°F,因此,那是我設(shè)定溫度的地方。蝦將在較低的溫度下烹飪,因此您將在此溫度下過度烹飪。我將它們放在水中的時間不超過30分鐘。同樣,將蔬菜放在水中一小時以上會導(dǎo)致蔬菜煮得過頭。
但是,讓我們談?wù)勥@頓飯的真正意義;那些多汁的紐約牛排。他們可以在水中靜置數(shù)小時,并且永遠(yuǎn)不會在此溫度下煮熟。我會讓他們坐至少一個小時,但他們在溫度下停留的時間越長,它們就會變得越嫩。
當(dāng)您準(zhǔn)備好吃飯時,只需將牛排從他們的袋子中拉出即可。將它們放在鍋中,放入一些低芥酸菜籽油中加熱,加熱時間足夠長,足以使它們焦灼。將蝦,蔬菜和牛排放入盤子。如果您愿意的話,可以減少三杯波特酒,一湯匙牛肉條和一些意大利香料,然后用中火將其減少,直到液體涂滿湯匙,從而減少波特酒。
第12步:接線圖
此項目中的電路在附圖中。
》
步驟13:
/************************** **************************************/
/* */
/*標(biāo)題:電磁爐控制器*/
/*版本:1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/* MCWSM */
/* */
/*說明:*/
/*此草圖在Arduino Uno平臺上運(yùn)行*/
/*,帶有SainSmart 1602 LCD/鍵盤護(hù)板,*/
/* SainSmart實體狀態(tài)繼電器設(shè)備和LM35 */
/*溫度傳感器。它旨在控制*/
/*兩個普通加熱元件和一個小型*/
/*浸入式炊具中的浸入式泵。 */
/*用戶只需使用*/
/*鍵盤撥入設(shè)定溫度,contrioller選通*/
/*加熱元件即可達(dá)到并保持設(shè)定水*/
/*溫度。 */
/* */
/*未來:添加計時器/時鐘功能*/
/* */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */
/****************** ******************************************/
#include
#定義VERSION_STRING“ 1.0”
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
#define ELEMENT_1 2//元素1控制端口
#define ELEMENT_2 3////元素2控制端口
#define LED_PORT 13
#define THIRTY_SECONDS 30000;//30,000微秒
#define鍵盤端口0
#define TEMP_PORT 1
#define增加1
#define減小-1
#define NO_CHANGE 0
#define SELECT 999
#define CELSIUS 0
#define FARENHEIT 1
#define TEMP_COUNT 10
#define KEY_BOUNCE_DELAY 333 int iTempMode = FARENHEIT;//默認(rèn)為Farenheit…
int iSetTemp = 130;//iSetTemp是全局的…
int iKeyPressIn = 0; float fTemp [TEMP_COUNT];//全局溫度平滑數(shù)組…
int iCurrentIndex = 0;//iCurrentIndex是臨時數(shù)組的全局索引…
byte bDegreeSymbol [8] =//°符號的位掩碼…
{
B11100,
B10100,
B11100,
B00000,
B00000,
B00000,
B00000,
B00000
} ;;字節(jié)bCheckMarkSymbol [8] =//√符號的位掩碼…
{
B00000,
B00000,
B00000,
B00001,
B00010,
B10100,
B01100,
B01000
} ;;液體液晶lcd(8,9,4, 5、6、7);//使用接口引腳的編號初始化庫
void setup()
{
/*************************** **********************************/
/* */
/*模塊:設(shè)置*/
/*版本:1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/*說明:*/
/*初始化LCD顯示屏并顯示啟動*/
/*屏幕。 */
/*在設(shè)置過程中,溫度*/
/*平滑陣列初始化為*/
/*讀數(shù)。 */
/* */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */
/******************************************* **************/
字符串strLine1;
字符串strLine2;
字符串strElipses =“?!?
lcd.createChar(0,bDegreeSymbol);//創(chuàng)建LCD字符
lcd.createChar(1,bCheckMarkSymbol);
lcd.begin(16,2);//設(shè)置LCD顯示列,行。..
DisplayLCD(“ Booting 。..”,“”);
for(int iIndex = 0; iIndex {
fTemp [iIndex] = AnalogRead(TEMP_PORT);
fTemp [iIndex] =((fTemp [iIndex] * 3.3)/1023);//10攝氏度/攝氏度
if(iTempMode == FARENHEIT)
{
fTemp [iIndex] = ConvertCelsiusToFarenheit(fTemp [iIndex]);//轉(zhuǎn)換為Farenheit 。..
}
DisplayLCD(“ Booting 。..”,strElipses);
strElipses + =“。”;
delay(100);
}
pinMode(ELEMENT_1,OUTPUT);
pinMode (ELEMENT_2,輸出);
pinMode(LED_PORT,輸出);
strLine1 =“浸入式炊具”;//創(chuàng)建并顯示初始屏幕
strLine2 =“版本:”;
strLine2 + = VERSION_STRING;
DisplayLCD(strLine1,strLine2);
delay(2000);
}
無效循環(huán)()
{
/****************************************** ***************/
/* */
/*模塊:循環(huán)*/
/*版本:1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/*說明:*/
/*獲取新的SetTemp(如果有)。然后,它調(diào)用SetTemp */
/*來選通加熱元件以調(diào)整*/
/*溫度。然后顯示溫度信息,延遲一秒*/
/*秒,然后返回。該延遲可防止*/
/*固態(tài)繼電器連續(xù)打開和關(guān)閉*/
/*。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
字符串strLCDLine0 =“”;
字符串strLCDLine1 =“”; iSetTemp = GetSetTemp(iSetTemp);//查看用戶是否要更改溫度。..
SetTemp(iSetTemp);//控制加熱元件。..
DisplayTemps(iSetTemp,GetCurrentTemp(),‘S’);//顯示溫度…
delay(1000);//不要過載SSR 。..
}
int GetSetTemp(int iSetTemp)
{
/******************* **************************************/
/* */
/*模塊:GetSetTemp */
/*版本:1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/*說明:*/
/*讀取鍵盤以查看是否正在對當(dāng)前設(shè)定溫度進(jìn)行*/
/*調(diào)節(jié)。默認(rèn)值為*/
/*,不按下任何鍵。這將從ReadKeypad返回*/
/* btnNone,并導(dǎo)致*/
/*立即返回給調(diào)用者。否則,將適當(dāng)調(diào)整*/
/*設(shè)定溫度和*/
/*新的調(diào)整溫度。 */
/* */
/*此模塊還允許用戶進(jìn)入*/
/*子菜單,該子菜單中可以執(zhí)行諸如更改*/
/*操作等操作從華氏溫度到攝氏溫度的模式。 */
/* */
/*如果用戶按下任何鍵進(jìn)行溫度*/
/*調(diào)整,他們必須按下選擇鍵*/
/*進(jìn)行調(diào)整永久并將*/
/*返回給調(diào)用方。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
int iKeyIn;
int iNewSetTemp;
int iTempDelta;//增加。減小或選擇。..
char cSetTemp [4];
布爾值bSelected = false;
char cTempMode =‘S’;
iNewSetTemp = iSetTemp;//從當(dāng)前溫度開始。..
iKeyIn = ReadKeypad();
if(iKeyIn!= btnNONE)//btnNONE =無需執(zhí)行任何操作,只需返回到調(diào)用方…
{
do//直到bSelected…
{
switch(iKeyIn)
{
case btnUP://調(diào)高溫度…
iNewSetTemp + = 1;
cTempMode =‘A’;//通知用戶正在進(jìn)行調(diào)整。..
中斷;
案例btnDOWN://向下調(diào)整溫度…
iNewSetTemp-= 1;
cTempMode =‘A’;//通知用戶正在進(jìn)行調(diào)整。..
中斷;
案例btnLEFT:
iNewSetTemp = Menu();//選項菜單。..
bSelected = true;//一旦菜單選項完成就退出。..
break;
case btnSELECT://調(diào)整完成…
bSelected = true;
break;
默認(rèn)值://忽略其他鍵。 。.
break;
}
DisplayTemps(iNewSetTemp,GetCurrentTemp(),cTempMode);//顯示每次調(diào)整的時間。..
delay(KEY_BOUNCE_DELAY);//平滑按鍵彈跳。..
iKeyIn = ReadKeypad();//內(nèi)部讀取循環(huán)。..
} while(!bSelected);
}
return(iNewSetTemp);
}
void SetTemp(int iSetTemp)
{
/******************* ****/
/* */
/*模塊:SetTemp */
/*版本:1.0 */
/*版本日期:05/01/2012 */
/*作者:Edward A Ranzenbach */
/*說明:*/
/*此模塊將iSetTemp參數(shù)與*/
/*當(dāng)前溫度進(jìn)行比較。如果*/
/*度的差異大于1,則會根據(jù)需要打開或關(guān)閉加熱元件*/
/*。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
int iCurrentTemp; iCurrentTemp = GetCurrentTemp();//檢查當(dāng)前溫度…
if(abs(iSetTemp-iCurrentTemp)》 = 1)//如果溫度變化超過1度
{
if(iCurrentTemp》 iSetTemp)//如果溫度過高,關(guān)閉加熱元件
{
digitalWrite(ELEMENT_1,LOW);
digitalWrite(ELEMENT_2,LOW);
digitalWrite(LED_PORT,LOW);
}
else
{
digitalWrite(ELEMENT_1,HIGH);//如果溫度太低,請打開加熱元件
digitalWrite(ELEMENT_2,HIGH);
digitalWrite(LED_PORT,HIGH);
}
}
}
int GetCurrentTemp()點擊{點擊/****************************************** ***********/
/* */
/*模塊:GetCurrentTemp */
/*版本:1.0 */
/*版本日期:05/01/2012 */
/*作者:Edward A Ranzenbach */
/*說明:*/
/*此模塊從*/
/*傳感器讀取當(dāng)前溫度并將其存儲到信號平滑*/
/*數(shù)組。傳感器的溫度以*/
/*攝氏度為單位,并且根據(jù)當(dāng)前操作模式,我們根據(jù)需要將溫度轉(zhuǎn)換為Farenheit */
/*。然后,用戶*/
/*返回一個表示平滑的*/
/*(即數(shù)組中所有溫度的平均值)*/
/*溫度的整數(shù)。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
int iReturnTemp = 0; float fCumulativeTemp = 0; float fADCIn;
if((iCurrentIndex)== TEMP_COUNT)//保持在數(shù)組范圍內(nèi)。 。
{
iCurrentIndex = 0;
}
fADCIn = AnalogRead(TEMP_PORT);//從傳感器獲取溫度信號。..
if(iTempMode == CELSIUS)//轉(zhuǎn)換為攝氏溫度。..
{
fTemp [iCurrentIndex] =((((fADCIn * 3.7)/1024)* 100) ;
}
else
{
fTemp [iCurrentIndex] = fADCIn;////直讀以法郎表示。
}
表示(int iIndex = 0; iIndex {
fCumulativeTemp + = fTemp [ iIndex];
}
iReturnTemp =((int)(fCumulativeTemp/TEMP_COUNT));//返回平滑的溫度。..
iCurrentIndex ++;//下次呼叫的凹凸索引。..
return(iReturnTemp);
}
void DisplayTemps(int iSetTemp,int iCurrentTemp,char cTempMode)
{
/***** **********/
/* */
/*模塊:DisplayTemps */
/*版本:1.0 */
/*版本日期:05/01/2012 */
/*作者:Edward A Ranzenbach */
/*說明:*/
/*此模塊在LCD顯示屏上顯示兩行溫度*/
/*。第一個是設(shè)定溫度*/
/*,并根據(jù)我們是在*/
/*進(jìn)行調(diào)節(jié)還是設(shè)定溫度進(jìn)行標(biāo)記。顯示屏的*/
/*第二行始終為當(dāng)前*/
/*溫度。 */
/* */
/*如果連續(xù)調(diào)用此模塊,則*/
/*將閃爍,因此調(diào)用方應(yīng)在*/
/*調(diào)用之間延遲。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
字符串strLine1;
字符串strLine2;
if(cTempMode ==‘A’)//調(diào)整模式。..
{
strLine1 =“調(diào)整:“;
}
else
{
strLine1 =”設(shè)置:“;//設(shè)置模式。..
}
strLine1 + = iSetTemp;
strLine2 = String(“ Current:”);
strLine2 + = iCurrentTemp;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(strLine1);
lcd.write(byte(0));//度數(shù)符號。..
if(iTempMode == FARENHEIT)
{
lcd.print(“ F”);
}
else
{
lcd。 print(“ C”);
}
lcd.setCursor(0,1);
lcd.print(strLine2);
lcd.write(byte(0));
if (iTempMode == FARENHEIT)
{
lcd.print(“ F”);
}
else
{
lcd.print(“ C”);
}
}
void DisplayLCD(String strLine0,String strLine1)
{
/************************** *******************************/
/* */
/*模塊:DisplayLCD */
/*版本:1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/*說明:*/
/*此模塊顯示兩個在LCD */
/*顯示屏上顯示文本行。 */
/*如果連續(xù)調(diào)用此模塊,則*/
/*將閃爍,因此調(diào)用方應(yīng)在*/
/*調(diào)用之間延遲。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
lcd.clear();
如果(strLine0.length()》 0)
{ lcd.setCursor(0,0);
lcd .print(strLine0);
}
如果(strLine1.length()》 0)
{ lcd.print(strLine1);
}
}
int ReadKeypad()
{
/******************************** *************************//
/* */
/*模塊:ReadKeypad */
/*版本: 1.0 */
/*版本日期:2012年5月1日*/
/*作者:Edward A Ranzenbach */
/*說明:*/
/*讀取SainSmart鍵盤。如果用戶*/
/*按下一個鍵,則返回一個值。 */
/*的值可能因設(shè)備而異。因此,我們*/
/*通過查看我們是否接近*/
/*讀取值來確定該值。 */
/*歷史記錄:*/
/* */
/* 2012-05-01-Edward A Ranzenbach */
/*初始編碼*/
/* */點擊/************ *******/
int iKeyIn = AnalogRead(KEYBOARD_PORT);
如果(iKeyIn》 1000)//這將是最常見的結(jié)果。..
{
return btnNONE;
}
否則(iKeyIn 《50)
{
delay(KEY_BOUNCE_DELAY);//處理按鍵彈跳。..
return btnRIGHT;
}
否則(iKeyIn 《195)
{
delay(KEY_BOUNCE_DELAY);//處理鍵反彈。..
return btnUP;
}
否則(iKeyIn 《380)
{
delay(KEY_BOUNCE_DELAY);到攝氏
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6478瀏覽量
188287
發(fā)布評論請先 登錄
相關(guān)推薦
STM32、Arduino、樹莓派開發(fā)方式差異大嗎
如何使用Arduino實現(xiàn)CAN總線通信呢
Arduino Nano Matter開發(fā)板正式上市
HAL庫在Arduino平臺上的使用
基于Arduino的串口通信項目
stm32與Arduino的比較
如何使用Arduino實現(xiàn)CAN總線通信
電極式傳感器如何控制水位的
利用Arduino的自動風(fēng)扇速度控制電路設(shè)計

求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?
變頻器兩線式控制與三線式控制有哪些區(qū)別
使用Arduino的溫控風(fēng)扇電路分享

評論