99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino控制的浸入式炊具

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2019-10-31 16:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:免責(zé)聲明和法律條款

1。該項(xiàng)目涉及使用線電壓(120-240v)。此外,用于容納控制器的外殼不是水密的,必須注意確保其不會(huì)被弄濕。此外,還有用于加熱水箱中水的裸露加熱元件。我要說(shuō)的是存在潛在的電擊或嚴(yán)重?zé)齻L(fēng)險(xiǎn)。如果您不能承擔(dān)此風(fēng)險(xiǎn),請(qǐng)不要構(gòu)建此項(xiàng)目。

2。未煮熟的食物可能會(huì)嚴(yán)重危害健康。確定合適的食物烹飪溫度時(shí),請(qǐng)查閱食譜和食物標(biāo)簽

警告:

1。除非將加熱元件浸入水中,否則切勿操作炊具。

2。除非將潛水泵浸入水中,否則切勿操作炊具。

3。請(qǐng)務(wù)必小心,以確保水或其他液體永遠(yuǎn)不要進(jìn)入控制箱。

4。切勿將您的手浸入熱水中。

5。

第2步:零件清單

1。 1 – Arduino Uno 29.00美元

2。 1 – LM35溫度傳感器$ 0.99

3。 1 – SainSmart LCD/鍵盤(pán)保護(hù)罩$ 9.95

4。 1 – SainSmart 2通道固態(tài)繼電器$ 7.95

5。 1 –電氣端子$ 3.75

6。 1個(gè)項(xiàng)目盒子(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

總計(jì):$ 123.37

第3步:工具

?焊鐵與焊料

?熱膠槍

?帶有各種尖端的Dremol工具

?螺絲起子

?尖嘴鉗

?鋼絲鉗/壓接鉗

?萬(wàn)用表

第4步:溫度傳感器子組件

溫度傳感器子組件使用LM35溫度傳感器,一些電阻器和電線。該傳感器需要電路來(lái)提供適當(dāng)?shù)?a target="_blank">信號(hào)。該電路在附圖中有詳細(xì)說(shuō)明:

首先測(cè)量將用于傳感器的連接線。傳感器將位于浸入式炊具的地板上,與加熱元件相反。我這樣做是為了確保獲得所有水的溫度讀數(shù),而不僅僅是加熱元件周?chē)乃?。您需要三根足夠長(zhǎng)的導(dǎo)線以橫穿浴缸的地板和墻壁,再加上三英尺長(zhǎng)才能到達(dá)控制箱。我使用了不同的電線顏色,因?yàn)槟鷮碛幸桓鼐€,5伏特和感應(yīng)線。

首先將連接到傳感器+ VS端子的擴(kuò)展信號(hào)焊接在一起。接下來(lái),將200Ω電阻器焊接到中央(Vout)端子。然后將一個(gè)2KΩ電阻焊接到傳感器的Gnd端子。我的本地RadioShack?沒(méi)有200?或2K?電阻,所以我使用了220?和2.2K?電阻。接下來(lái),我將電阻器的松散端絞在一起。然后,我拿了一個(gè)220a和2.2Ka電阻,將兩端的兩端都捻在一起,基本上如上圖8所示將它們并聯(lián)。添加一條信號(hào)線,并將并聯(lián)電阻的一端扭絞到從LM35傳感器出來(lái)的電阻的扭絞端上。在該連接處涂焊料。最后,將地線焊接到并聯(lián)電阻的其余雙絞端。

下一步,將線束編織起來(lái),這樣您就可以輕松地將電線和傳感器穿過(guò)用于將成為炊具底部的水密溫度傳感器通道。

下一步構(gòu)造水密溫度傳感器通道。首先,使用熱膠槍將尼龍螺絲粘貼到尼龍管中。然后沿著地板的中心和浴缸的側(cè)面粘貼管道。

您應(yīng)該能夠輕松地將溫度傳感器插入上圖所示的水密通道中。修剪浴缸上部邊緣的水密通道。

步驟5:加熱元件子組件

接下來(lái),我們將構(gòu)造加熱元件。我添加了兩個(gè)元素,盡管可以添加其他元素,這將使水更快地達(dá)到溫度。加熱元件幾乎可以在任何五金店或廚房供應(yīng)店購(gòu)買(mǎi)。它們可浸入水中,通常用于加熱杯子中的水以用于咖啡或茶。每個(gè)元件的額定功率為300瓦。使用公式A = W/V,每個(gè)電極將消耗大約2安培的電流,這完全在我們固態(tài)繼電器(SSR)的10安培額定值之內(nèi)。值得注意的是,我最初嘗試使用SainSmart 2安培SSR,但是由于要消耗的安培略大于2安培,所以將它們燒壞了。

需要安裝加熱元件,以使其不接觸外殼側(cè)面。浴缸并融化。為此,我找到了兩個(gè)可以抵消這些元素的硬塑料衣架。我將它們粘合在一起,然后在其上粘合一塊面包板,以提供額外的保護(hù)以防熔化。然后,我使用扎線帶將加熱元件固定在其上。如圖所示。

最后,我用我的Dremel工具在浴缸的側(cè)脊上切出一個(gè)槽,并將倒置的衣架插入槽中以安裝加熱元件。

潛水泵底部應(yīng)有吸盤(pán),并使用這些吸盤(pán)將其簡(jiǎn)單地連接到浴缸的側(cè)壁。然后,我收集了所有的電線,并使用扎帶將它們捆在一起。

步驟6:控制器子組件(第1部分)

現(xiàn)在,我們將注意力轉(zhuǎn)向控制器。對(duì)于控制器,我選擇了三個(gè)主要組件,分別是Arduino Uno控制器,SainSmart LCD/鍵盤(pán)護(hù)罩和SainSmart 10安培雙固態(tài)繼電器(SSR)。首先,在項(xiàng)目框的底部鉆孔,然后將電源端子固定在框上。接下來(lái),從潛水加熱元件和潛水泵的末端切下一定長(zhǎng)度的壁塞,以使其能到達(dá)坐在浴缸旁邊柜臺(tái)上的控制箱。我保留了從插頭到潛水泵的電源,因?yàn)樗哂凶铋L(zhǎng)的長(zhǎng)度,但是您可以使用任何可用的電源線來(lái)實(shí)現(xiàn)此目的。鉆一個(gè)足夠大的孔,以使所有電纜進(jìn)入項(xiàng)目盒的側(cè)面,然后將其布線到接線盒。該孔可以用橡膠墊圈密封。如果需要,可以將終端放置在電源插頭,潛水泵上,以及每個(gè)潛水加熱元件的一根電線上。將電源線的一根電線連接到每個(gè)插排。將一根電纜從潛水泵連接到每個(gè)條帶(潛水泵將連續(xù)運(yùn)行,并且不會(huì)通過(guò)繼電器布線)??蛇x地,電源插頭中的一根電線可以通過(guò)開(kāi)關(guān)進(jìn)行布線,但是我選擇此版本的電磁爐只是為了簡(jiǎn)化操作。最后,將一根導(dǎo)線從每個(gè)潛水加熱元件連接到配電盤(pán)的一側(cè)。使用哪個(gè)條帶都沒(méi)有關(guān)系,但是從每個(gè)加熱元件連接的電線應(yīng)從同一條帶上脫落。請(qǐng)注意,我在項(xiàng)目盒內(nèi)的電源電纜上打了一個(gè)結(jié),以防止其(和其他電纜)從盒內(nèi)的孔中拉回。

下一步,切短兩段(?6“ ),然后將其連接到固定有潛水加熱元件的相對(duì)條上。這些連接如圖所示。

步驟7:控制器子組件(第2部分)

現(xiàn)在讓我們看一下SSR,SSR期望與Arduino板有四個(gè)連接,一個(gè)+ 5v連接,一個(gè)Gnd連接和兩個(gè)數(shù)字信號(hào)連接。我發(fā)現(xiàn)最簡(jiǎn)單的方法是將這些連接焊接到電路板的底部,因?yàn)镾SR每個(gè)繼電器具有三個(gè)螺絲端子,將兩條六英寸的雙絞線剝開(kāi)并擰入中心端子。如圖所示,再接兩條兩條6英寸的雙絞線,然后將它們擰緊到每個(gè)繼電器最左邊的端子中。為了使這些繼電器保持平衡,繼電器將抵靠在項(xiàng)目盒的面板上。

步驟8:控制器子組件(第3部分)

現(xiàn)在,將兩條數(shù)字控制線從SSR焊接到SainSmart LCD/鍵盤(pán)防護(hù)板的數(shù)字端口2和3。將三根六英寸的導(dǎo)線分別焊接到SainSmart LCD/鍵盤(pán)屏蔽的5v,Gnd和模擬端口1。

步驟9:控制器子組件(第4部分)

插入SainSmart LCD/Keypad屏蔽到Arduino Uno中,確保所有銷(xiāo)釘正確接合。通過(guò)USB串行端口將Arduino連接到計(jì)算機(jī),然后編譯并將附件代碼下載到設(shè)備中。如果您希望設(shè)備默認(rèn)使用攝氏溫度運(yùn)行,只需在編譯之前將變量“ iTempMode”從“ FARENHEIT”更改為“ CELSIUS”即可。請(qǐng)注意,可以即時(shí)在攝氏和攝氏之間進(jìn)行切換(請(qǐng)參閱步驟10)。

使用SainSmart LCD/鍵盤(pán)護(hù)罩左上角的小螺釘來(lái)調(diào)節(jié)顯示屏的亮度。有必要的。拔下Arduino,將其關(guān)閉。從SainSmart LCD/鍵盤(pán)護(hù)罩上取下Arduino Uno。

在面板上切開(kāi)/鉆孔,然后用螺釘將SainSmart LCD/鍵盤(pán)護(hù)罩和SainSmart SSR護(hù)罩固定在面板上。

收集紅色溫度傳感器線,將SainSmart LCD/鍵盤(pán)護(hù)罩的5v導(dǎo)線與SainSmart SSR的Vss + 5v導(dǎo)線連接在一起并焊接,并用收縮管保護(hù)它們。對(duì)黑色溫度傳感器導(dǎo)線和兩條Gnd導(dǎo)線執(zhí)行相同的操作。將綠色導(dǎo)線從溫度傳感器連接到模擬端口1導(dǎo)線。使用擰緊的端子連接器將SSR的一根導(dǎo)線固定到一個(gè)加熱元件的一根導(dǎo)線上。對(duì)其余的SSR和加熱元件重復(fù)此步驟。然后將每個(gè)SSR中剩余的導(dǎo)線分別固定到從接線盒中引出的導(dǎo)線上。

將Arduino Uno的插頭插入SainSmart LCD/鍵盤(pán)屏蔽層。我決定不使用單獨(dú)的9伏電源,而是決定使用從RadioShack?購(gòu)買(mǎi)的非處方電源。我通過(guò)項(xiàng)目框側(cè)面的孔將此連接器插入,然后將其插入Arduino Uno。這種布置的缺點(diǎn)是需要兩個(gè)壁式插座來(lái)運(yùn)行炊具。優(yōu)點(diǎn)是您仍可以使用控制器(并檢查包括溫度傳感器的連接),而無(wú)需在加熱元件上施加壁式電源。

最后,將面板固定在項(xiàng)目盒上。您可以插入9伏電源,并且應(yīng)該會(huì)看到設(shè)備啟動(dòng),并讀取默認(rèn)的設(shè)定溫度(130°F)和當(dāng)前溫度(室溫)。如果您將熱水裝滿浴缸,則溫度會(huì)升高。

步驟10:基本操作

要升高或降低設(shè)定溫度,請(qǐng)分別使用“向上”和“向下”鍵。調(diào)節(jié)到所需的溫度后,使用“選擇”鍵設(shè)置新的“設(shè)置”溫度。 SSR應(yīng)響應(yīng)設(shè)置溫度相對(duì)于當(dāng)前溫度的變化而發(fā)出咔嗒聲。如果您想在攝氏下工作,請(qǐng)使用“左”鍵調(diào)出選項(xiàng)菜單。使用“向上”和“向下”鍵在模式之間進(jìn)行選擇,并使用“選擇”鍵進(jìn)行選擇。為了將來(lái),我打算添加一個(gè)時(shí)鐘,時(shí)鐘功能也將是通過(guò)此方法輸入的子菜單。 “ Rst”鍵將重新啟動(dòng)設(shè)備,而“ Right”鍵目前已被忽略。

我強(qiáng)烈建議在連接120v電源之前,將Arduino/SainSmart電路用于測(cè)試驅(qū)動(dòng)器。只需在浴缸中注滿熱水即可。插入Arduino 9v電源。 LCD顯示屏上應(yīng)顯示“ Booting…”(正在引導(dǎo)…)消息,最后顯示“ Immersion Cooker”和軟件版本號(hào)。在引導(dǎo)階段,軟件將實(shí)例化溫度讀取陣列,該陣列用于執(zhí)行信號(hào)平滑。幾秒鐘后,應(yīng)顯示默認(rèn)設(shè)置溫度(130°F)和當(dāng)前溫度。當(dāng)傳感器達(dá)到真實(shí)溫度時(shí),溫度在最初的幾秒鐘內(nèi)可能會(huì)發(fā)生很大變化,但應(yīng)該穩(wěn)定下來(lái)。我在水中使用了模擬烹飪溫度計(jì),以驗(yàn)證溫度傳感器讀數(shù)的正確性。當(dāng)升高或降低設(shè)定溫度時(shí),您應(yīng)該聽(tīng)到SSR的喀噠聲。此外,應(yīng)使用萬(wàn)用表檢查繼電器的導(dǎo)通性,以確保SSR正常工作。我還將使用萬(wàn)用表檢查所有120v連接,以確保沒(méi)有短路。一旦確定所有電氣連接正確,就可以將120v電路連接到主電源。

步驟11:您的第一頓飯

首先,要使用炊具,必須將食物放在真空密封袋中。在第一頓飯中,我調(diào)味了一些蔬菜并用真空密封。接下來(lái),我拿了大約20只大蝦,將它們密封在一個(gè)裝有幾包黃油和一些大蒜的袋子中。最后,將兩塊紐約條狀牛排,用少許鹽,胡椒粉,洋蔥粉和大蒜粉調(diào)味,并用真空袋密封。

我喜歡我的牛排,這種稀有牛排的溫度約為140°F,因此,那是我設(shè)定溫度的地方。蝦將在較低的溫度下烹飪,因此您將在此溫度下過(guò)度烹飪。我將它們放在水中的時(shí)間不超過(guò)30分鐘。同樣,將蔬菜放在水中一小時(shí)以上會(huì)導(dǎo)致蔬菜煮得過(guò)頭。

但是,讓我們談?wù)勥@頓飯的真正意義;那些多汁的紐約牛排。他們可以在水中靜置數(shù)小時(shí),并且永遠(yuǎn)不會(huì)在此溫度下煮熟。我會(huì)讓他們坐至少一個(gè)小時(shí),但他們?cè)跍囟认峦A舻臅r(shí)間越長(zhǎng),它們就會(huì)變得越嫩。

當(dāng)您準(zhǔn)備好吃飯時(shí),只需將牛排從他們的袋子中拉出即可。將它們放在鍋中,放入一些低芥酸菜籽油中加熱,加熱時(shí)間足夠長(zhǎng),足以使它們焦灼。將蝦,蔬菜和牛排放入盤(pán)子。如果您愿意的話,可以減少三杯波特酒,一湯匙牛肉條和一些意大利香料,然后用中火將其減少,直到液體涂滿湯匙,從而減少波特酒。

第12步:接線圖

此項(xiàng)目中的電路在附圖中。

步驟13:

/************************** **************************************/

/* */

/*標(biāo)題:電磁爐控制器*/

/*版本:1.0 */

/*版本日期:2012年5月1日*/

/*作者:Edward A Ranzenbach */

/* MCWSM */

/* */

/*說(shuō)明:*/

/*此草圖在Arduino Uno平臺(tái)上運(yùn)行*/

/*,帶有SainSmart 1602 LCD/鍵盤(pán)護(hù)板,*/

/* SainSmart實(shí)體狀態(tài)繼電器設(shè)備和LM35 */

/*溫度傳感器。它旨在控制*/

/*兩個(gè)普通加熱元件和一個(gè)小型*/

/*浸入式炊具中的浸入式泵。 */

/*用戶只需使用*/

/*鍵盤(pán)撥入設(shè)定溫度,contrioller選通*/

/*加熱元件即可達(dá)到并保持設(shè)定水*/

/*溫度。 */

/* */

/*未來(lái):添加計(jì)時(shí)器/時(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鍵盤(pán)端口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í)數(shù)組的全局索引

byte bDegreeSymbol [8] =//°符號(hào)的位掩碼…

{

B11100,

B10100,

B11100,

B00000,

B00000,

B00000,

B00000,

B00000

} ;;字節(jié)bCheckMarkSymbol [8] =//√符號(hào)的位掩碼…

{

B00000,

B00000,

B00000,

B00001,

B00010,

B10100,

B01100,

B01000

} ;;液體液晶lcd(8,9,4, 5、6、7);//使用接口引腳的編號(hào)初始化庫(kù)

void setup()

{

/*************************** **********************************/

/* */

/*模塊:設(shè)置*/

/*版本:1.0 */

/*版本日期:2012年5月1日*/

/*作者:Edward A Ranzenbach */

/*說(shuō)明:*/

/*初始化LCD顯示屏并顯示啟動(dòng)*/

/*屏幕。 */

/*在設(shè)置過(guò)程中,溫度*/

/*平滑陣列初始化為*/

/*讀數(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);

}

無(wú)效循環(huán)()

{

/****************************************** ***************/

/* */

/*模塊:循環(huán)*/

/*版本:1.0 */

/*版本日期:2012年5月1日*/

/*作者:Edward A Ranzenbach */

/*說(shuō)明:*/

/*獲取新的SetTemp(如果有)。然后,它調(diào)用SetTemp */

/*來(lái)選通加熱元件以調(diào)整*/

/*溫度。然后顯示溫度信息,延遲一秒*/

/*秒,然后返回。該延遲可防止*/

/*固態(tài)繼電器連續(xù)打開(kāi)和關(guān)閉*/

/*。 */

/*歷史記錄:*/

/* */

/* 2012-05-01-Edward A Ranzenbach */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

字符串strLCDLine0 =“”;

字符串strLCDLine1 =“”; iSetTemp = GetSetTemp(iSetTemp);//查看用戶是否要更改溫度。..

SetTemp(iSetTemp);//控制加熱元件。..

DisplayTemps(iSetTemp,GetCurrentTemp(),‘S’);//顯示溫度…

delay(1000);//不要過(guò)載SSR 。..

}

int GetSetTemp(int iSetTemp)

{

/******************* **************************************/

/* */

/*模塊:GetSetTemp */

/*版本:1.0 */

/*版本日期:2012年5月1日*/

/*作者:Edward A Ranzenbach */

/*說(shuō)明:*/

/*讀取鍵盤(pán)以查看是否正在對(duì)當(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 */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

int iKeyIn;

int iNewSetTemp;

int iTempDelta;//增加。減小或選擇。..

char cSetTemp [4];

布爾值bSelected = false;

char cTempMode =‘S’;

iNewSetTemp = iSetTemp;//從當(dāng)前溫度開(kāi)始。..

iKeyIn = ReadKeypad();

if(iKeyIn!= btnNONE)//btnNONE =無(wú)需執(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();//選項(xiàng)菜單。..

bSelected = true;//一旦菜單選項(xiàng)完成就退出。..

break;

case btnSELECT://調(diào)整完成…

bSelected = true;

break;

默認(rèn)值://忽略其他鍵。 。.

break;

}

DisplayTemps(iNewSetTemp,GetCurrentTemp(),cTempMode);//顯示每次調(diào)整的時(shí)間。..

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 */

/*說(shuō)明:*/

/*此模塊將iSetTemp參數(shù)與*/

/*當(dāng)前溫度進(jìn)行比較。如果*/

/*度的差異大于1,則會(huì)根據(jù)需要打開(kāi)或關(guān)閉加熱元件*/

/*。 */

/*歷史記錄:*/

/* */

/* 2012-05-01-Edward A Ranzenbach */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

int iCurrentTemp; iCurrentTemp = GetCurrentTemp();//檢查當(dāng)前溫度…

if(abs(iSetTemp-iCurrentTemp)》 = 1)//如果溫度變化超過(guò)1度

{

if(iCurrentTemp》 iSetTemp)//如果溫度過(guò)高,關(guān)閉加熱元件

{

digitalWrite(ELEMENT_1,LOW);

digitalWrite(ELEMENT_2,LOW);

digitalWrite(LED_PORT,LOW);

}

else

{

digitalWrite(ELEMENT_1,HIGH);//如果溫度太低,請(qǐng)打開(kāi)加熱元件

digitalWrite(ELEMENT_2,HIGH);

digitalWrite(LED_PORT,HIGH);

}

}

}

int GetCurrentTemp()點(diǎn)擊{點(diǎn)擊/****************************************** ***********/

/* */

/*模塊:GetCurrentTemp */

/*版本:1.0 */

/*版本日期:05/01/2012 */

/*作者:Edward A Ranzenbach */

/*說(shuō)明:*/

/*此模塊從*/

/*傳感器讀取當(dāng)前溫度并將其存儲(chǔ)到信號(hào)平滑*/

/*數(shù)組。傳感器的溫度以*/

/*攝氏度為單位,并且根據(jù)當(dāng)前操作模式,我們根據(jù)需要將溫度轉(zhuǎn)換為Farenheit */

/*。然后,用戶*/

/*返回一個(gè)表示平滑的*/

/*(即數(shù)組中所有溫度的平均值)*/

/*溫度的整數(shù)。 */

/*歷史記錄:*/

/* */

/* 2012-05-01-Edward A Ranzenbach */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

int iReturnTemp = 0; float fCumulativeTemp = 0; float fADCIn;

if((iCurrentIndex)== TEMP_COUNT)//保持在數(shù)組范圍內(nèi)。 。

{

iCurrentIndex = 0;

}

fADCIn = AnalogRead(TEMP_PORT);//從傳感器獲取溫度信號(hào)。..

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 */

/*說(shuō)明:*/

/*此模塊在LCD顯示屏上顯示兩行溫度*/

/*。第一個(gè)是設(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 */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

字符串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ù)符號(hào)。..

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 */

/*說(shuō)明:*/

/*此模塊顯示兩個(gè)在LCD */

/*顯示屏上顯示文本行。 */

/*如果連續(xù)調(diào)用此模塊,則*/

/*將閃爍,因此調(diào)用方應(yīng)在*/

/*調(diào)用之間延遲。 */

/*歷史記錄:*/

/* */

/* 2012-05-01-Edward A Ranzenbach */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

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 */

/*說(shuō)明:*/

/*讀取SainSmart鍵盤(pán)。如果用戶*/

/*按下一個(gè)鍵,則返回一個(gè)值。 */

/*的值可能因設(shè)備而異。因此,我們*/

/*通過(guò)查看我們是否接近*/

/*讀取值來(lái)確定該值。 */

/*歷史記錄:*/

/* */

/* 2012-05-01-Edward A Ranzenbach */

/*初始編碼*/

/* */點(diǎn)擊/************ *******/

int iKeyIn = AnalogRead(KEYBOARD_PORT);

如果(iKeyIn》 1000)//這將是最常見(jiàn)的結(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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192182
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Arduino與LabVIEW聯(lián)合編程指南

    Arduino編程并與LabVIEW上位機(jī)結(jié)合實(shí)現(xiàn)設(shè)備的遠(yuǎn)程控制與數(shù)據(jù)采集。
    發(fā)表于 06-19 15:54 ?0次下載

    免費(fèi)分享Arduino入門(mén)+進(jìn)階(全套例程+書(shū)籍)

    創(chuàng)意,比如控制燈光、傳感器、電機(jī)等。以下是Arduino入門(mén)+進(jìn)階學(xué)習(xí)資料1.Arduino編程語(yǔ)言說(shuō)明(相關(guān)文件可在下文掃碼領(lǐng)取)2.Arduino系列學(xué)習(xí)例程
    的頭像 發(fā)表于 05-22 11:40 ?265次閱讀
    免費(fèi)分享<b class='flag-5'>Arduino</b>入門(mén)+進(jìn)階(全套例程+書(shū)籍)

    嵌入開(kāi)發(fā)入門(mén)指南:從零開(kāi)始學(xué)習(xí)嵌入

    特定功能的計(jì)算機(jī)系統(tǒng),廣泛應(yīng)用于智能家居、工業(yè)控制、醫(yī)療設(shè)備、車(chē)載系統(tǒng)等領(lǐng)域。 2. 學(xué)習(xí)嵌入開(kāi)發(fā)的前置知識(shí)熟悉C語(yǔ)言編程掌握基本的數(shù)據(jù)結(jié)構(gòu)與算法了解數(shù)字電路與微控制器原理熟悉Linux操作系統(tǒng)
    發(fā)表于 05-15 09:29

    《ESP32S3 Arduino開(kāi)發(fā)指南》第二章 Arduino基礎(chǔ)知識(shí)

    的發(fā)展,在Arduino出現(xiàn)以前,雖然也有很多公司在推廣一些簡(jiǎn)單易用的可編程控制器,但是由于開(kāi)發(fā)平臺(tái)種類(lèi)繁多,而且使用這些控制器基本上都需要對(duì)電子技術(shù)、數(shù)字邏輯、寄存器等內(nèi)容進(jìn)行多方面的了解和學(xué)習(xí),才能
    發(fā)表于 05-13 09:28

    STM32、Arduino、樹(shù)莓派開(kāi)發(fā)方式差異大嗎

    異同點(diǎn) STM32、Arduino、樹(shù)莓派是三種不同的硬件平臺(tái),各自具有獨(dú)特的特點(diǎn)和適用場(chǎng)景。 ? 一、硬件特性 ? 硬件平臺(tái) STM32 Arduino 樹(shù)莓派 類(lèi)型 微控制器 開(kāi)源電子原型平臺(tái)
    的頭像 發(fā)表于 01-02 11:33 ?1363次閱讀

    如何使用Arduino實(shí)現(xiàn)CAN總線通信呢

    CAN(Controller Area Network)總線是一種常用于汽車(chē)和工業(yè)控制系統(tǒng)的串行通信協(xié)議,以其高可靠性和實(shí)時(shí)性而聞名。Arduino,作為一種流行的開(kāi)源微控制器平臺(tái),可以通過(guò)附加
    的頭像 發(fā)表于 12-23 09:06 ?1938次閱讀

    Arduino采集雷達(dá)模塊數(shù)據(jù)與串口繪圖

    Arduino采集雷達(dá)模塊數(shù)據(jù)與串口繪圖
    的頭像 發(fā)表于 12-14 11:44 ?843次閱讀
    <b class='flag-5'>Arduino</b>采集雷達(dá)模塊數(shù)據(jù)與串口繪圖

    Arduino Nano Matter開(kāi)發(fā)板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter開(kāi)發(fā)板現(xiàn)已正式上市。這是延續(xù)今年3 月芯科科技和Arduino釋出Arduino
    的頭像 發(fā)表于 12-10 13:50 ?937次閱讀

    HAL庫(kù)在Arduino平臺(tái)上的使用

    HAL庫(kù)在Arduino平臺(tái)上的使用 Arduino平臺(tái)是一個(gè)開(kāi)源的電子原型平臺(tái),它包括硬件(基于微控制器的電路板)和軟件(Arduino IDE)。
    的頭像 發(fā)表于 12-02 14:04 ?1628次閱讀

    基于Arduino的串口通信項(xiàng)目

    基于Arduino的串口通信項(xiàng)目涉及多個(gè)方面,包括硬件連接、軟件編程、串口參數(shù)配置等。 一、硬件準(zhǔn)備 Arduino開(kāi)發(fā)板 :確保你有一塊Arduino開(kāi)發(fā)板,如Arduino Uno
    的頭像 發(fā)表于 11-22 09:24 ?2188次閱讀

    stm32與Arduino的比較

    在微控制器的世界里,STM32和Arduino是兩個(gè)經(jīng)常被提及的名字。STM32是一系列由STMicroelectronics生產(chǎn)的高性能微控制器,而Arduino則是一個(gè)開(kāi)源電子原型
    的頭像 發(fā)表于 11-19 15:45 ?4188次閱讀

    如何使用Arduino實(shí)現(xiàn)CAN總線通信

    CAN總線(Controller Area Network)是一種多主控制的串行通信協(xié)議,廣泛應(yīng)用于汽車(chē)電子、工業(yè)自動(dòng)化等領(lǐng)域。它以其高可靠性、實(shí)時(shí)性和靈活性而受到青睞。Arduino作為一個(gè)
    的頭像 發(fā)表于 11-12 10:09 ?2718次閱讀

    電極傳感器如何控制水位的

    電極傳感器是一種利用電學(xué)原理來(lái)檢測(cè)水位的設(shè)備。它通過(guò)測(cè)量液體與電極之間的電阻或電導(dǎo)率來(lái)確定水位的高低。這種傳感器廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、環(huán)境監(jiān)測(cè)等領(lǐng)域,用于自動(dòng)控制水位,以確保系統(tǒng)的穩(wěn)定運(yùn)行和安全
    的頭像 發(fā)表于 09-19 16:46 ?1565次閱讀

    怎樣用Arduino測(cè)試鋰電池容量

    本文詳細(xì)介紹了如何用Arduino測(cè)量鋰電池的容量。并附有電路圖和Arduino的程序代碼。
    的頭像 發(fā)表于 07-30 09:14 ?1670次閱讀
    怎樣用<b class='flag-5'>Arduino</b>測(cè)試鋰電池容量

    Arduino自制點(diǎn)焊機(jī)

    組裝18650電池組,要用到點(diǎn)焊機(jī),本文介紹用Arduino控制點(diǎn)焊機(jī)的點(diǎn)焊時(shí)間。
    發(fā)表于 07-29 10:14 ?9次下載