使用Arduino控制的浸入式炊具

电子说

1.3w人已加入

描述

步骤1:免责声明和法律条款

1。该项目涉及使用线电压(120-240v)。此外,用于容纳控制器的外壳不是水密的,必须注意确保其不会被弄湿。此外,还有用于加热水箱中水的裸露加热元件。我要说的是存在潜在的电击或严重烧伤风险。如果您不能承担此风险,请不要构建此项目。

2。未煮熟的食物可能会严重危害健康。确定合适的食物烹饪温度时,请查阅食谱和食物标签。

警告:

1。除非将加热元件浸入水中,否则切勿操作炊具。

2。除非将潜水泵浸入水中,否则切勿操作炊具。

3。请务必小心,以确保水或其他液体永远不要进入控制箱。

4。切勿将您的手浸入热水中。

5。

第2步:零件清单

1。 1 – Arduino Uno 29.00美元

2。 1 – LM35温度传感器$ 0.99

3。 1 – SainSmart LCD/键盘保护罩$ 9.95

4。 1 – SainSmart 2通道固态继电器$ 7.95

5。 1 –电气端子$ 3.75

6。 1个项目盒子(6“ x4”)5.99美元

7。 2 –2KΩ电阻$ 2.38

8。 2 –200Ω电阻$ 2.38

9。 20规格连接线(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步:温度传感器子组件

Arduino

Arduino

温度传感器子组件使用LM35温度传感器,一些电阻器和电线。该传感器需要电路来提供适当的信号。该电路在附图中有详细说明:

首先测量将用于传感器的连接线。传感器将位于浸入式炊具的地板上,与加热元件相反。我这样做是为了确保获得所有水的温度读数,而不仅仅是加热元件周围的水。您需要三根足够长的导线以横穿浴缸的地板和墙壁,再加上三英尺长才能到达控制箱。我使用了不同的电线颜色,因为您将拥有一根地线,5伏特和感应线。

首先将连接到传感器+ VS端子的扩展信号焊接在一起。接下来,将200Ω电阻器焊接到中央(Vout)端子。然后将一个2KΩ电阻焊接到传感器的Gnd端子。我的本地RadioShack™没有200?或2K?电阻,所以我使用了220?和2.2K?电阻。接下来,我将电阻器的松散端绞在一起。然后,我拿了一个220â和2.2Kâ电阻,将两端的两端都捻在一起,基本上如上图8所示将它们并联。添加一条信号线,并将并联电阻的一端扭绞到从LM35传感器出来的电阻的扭绞端上。在该连接处涂焊料。最后,将地线焊接到并联电阻的其余双绞端。

下一步,将线束编织起来,这样您就可以轻松地将电线和传感器穿过用于将成为炊具底部的水密温度传感器通道。

下一步构造水密温度传感器通道。首先,使用热胶枪将尼龙螺丝粘贴到尼龙管中。然后沿着地板的中心和浴缸的侧面粘贴管道。

您应该能够轻松地将温度传感器插入上图所示的水密通道中。修剪浴缸上部边缘的水密通道。

步骤5:加热元件子组件

接下来,我们将构造加热元件。我添加了两个元素,尽管可以添加其他元素,这将使水更快地达到温度。加热元件几乎可以在任何五金店或厨房供应店购买。它们可浸入水中,通常用于加热杯子中的水以用于咖啡或茶。每个元件的额定功率为300瓦。使用公式A = W/V,每个电极将消耗大约2安培的电流,这完全在我们固态继电器(SSR)的10安培额定值之内。值得注意的是,我最初尝试使用SainSmart 2安培SSR,但是由于要消耗的安培略大于2安培,所以将它们烧坏了。

需要安装加热元件,以使其不接触外壳侧面。浴缸并融化。为此,我找到了两个可以抵消这些元素的硬塑料衣架。我将它们粘合在一起,然后在其上粘合一块面包板,以提供额外的保护以防熔化。然后,我使用扎线带将加热元件固定在其上。如图所示。

最后,我用我的Dremel工具在浴缸的侧脊上切出一个槽,并将倒置的衣架插入槽中以安装加热元件。

潜水泵底部应有吸盘,并使用这些吸盘将其简单地连接到浴缸的侧壁。然后,我收集了所有的电线,并使用扎带将它们捆在一起。

步骤6:控制器子组件(第1部分)

现在,我们将注意力转向控制器。对于控制器,我选择了三个主要组件,分别是Arduino Uno控制器,SainSmart LCD/键盘护罩和SainSmart 10安培双固态继电器(SSR)。首先,在项目框的底部钻孔,然后将电源端子固定在框上。接下来,从潜水加热元件和潜水泵的末端切下一定长度的壁塞,以使其能到达坐在浴缸旁边柜台上的控制箱。我保留了从插头到潜水泵的电源,因为它具有最长的长度,但是您可以使用任何可用的电源线来实现此目的。钻一个足够大的孔,以使所有电缆进入项目盒的侧面,然后将其布线到接线盒。该孔可以用橡胶垫圈密封。如果需要,可以将终端放置在电源插头,潜水泵上,以及每个潜水加热元件的一根电线上。将电源线的一根电线连接到每个插排。将一根电缆从潜水泵连接到每个条带(潜水泵将连续运行,并且不会通过继电器布线)。可选地,电源插头中的一根电线可以通过开关进行布线,但是我选择此版本的电磁炉只是为了简化操作。最后,将一根导线从每个潜水加热元件连接到配电盘的一侧。使用哪个条带都没有关系,但是从每个加热元件连接的电线应从同一条带上脱落。请注意,我在项目盒内的电源电缆上打了一个结,以防止其(和其他电缆)从盒内的孔中拉回。

下一步,切短两段(〜6“ ),然后将其连接到固定有潜水加热元件的相对条上。这些连接如图所示。

步骤7:控制器子组件(第2部分)

现在让我们看一下SSR,SSR期望与Arduino板有四个连接,一个+ 5v连接,一个Gnd连接和两个数字信号连接。我发现最简单的方法是将这些连接焊接到电路板的底部,因为SSR每个继电器具有三个螺丝端子,将两条六英寸的双绞线剥开并拧入中心端子。如图所示,再接两条两条6英寸的双绞线,然后将它们拧紧到每个继电器最左边的端子中。为了使这些继电器保持平衡,继电器将抵靠在项目盒的面板上。

步骤8:控制器子组件(第3部分)

Arduino

现在,将两条数字控制线从SSR焊接到SainSmart LCD/键盘防护板的数字端口2和3。将三根六英寸的导线分别焊接到SainSmart LCD/键盘屏蔽的5v,Gnd和模拟端口1。

步骤9:控制器子组件(第4部分)

插入SainSmart LCD/Keypad屏蔽到Arduino Uno中,确保所有销钉正确接合。通过USB串行端口将Arduino连接到计算机,然后编译并将附件代码下载到设备中。如果您希望设备默认使用摄氏温度运行,只需在编译之前将变量“ iTempMode”从“ FARENHEIT”更改为“ CELSIUS”即可。请注意,可以即时在摄氏和摄氏之间进行切换(请参阅步骤10)。

使用SainSmart LCD/键盘护罩左上角的小螺钉来调节显示屏的亮度。有必要的。拔下Arduino,将其关闭。从SainSmart LCD/键盘护罩上取下Arduino Uno。

在面板上切开/钻孔,然后用螺钉将SainSmart LCD/键盘护罩和SainSmart SSR护罩固定在面板上。

收集红色温度传感器线,将SainSmart LCD/键盘护罩的5v导线与SainSmart SSR的Vss + 5v导线连接在一起并焊接,并用收缩管保护它们。对黑色温度传感器导线和两条Gnd导线执行相同的操作。将绿色导线从温度传感器连接到模拟端口1导线。使用拧紧的端子连接器将SSR的一根导线固定到一个加热元件的一根导线上。对其余的SSR和加热元件重复此步骤。然后将每个SSR中剩余的导线分别固定到从接线盒中引出的导线上。

将Arduino Uno的插头插入SainSmart LCD/键盘屏蔽层。我决定不使用单独的9伏电源,而是决定使用从RadioShack™购买的非处方电源。我通过项目框侧面的孔将此连接器插入,然后将其插入Arduino Uno。这种布置的缺点是需要两个壁式插座来运行炊具。优点是您仍可以使用控制器(并检查包括温度传感器的连接),而无需在加热元件上施加壁式电源。

最后,将面板固定在项目盒上。您可以插入9伏电源,并且应该会看到设备启动,并读取默认的设定温度(130°F)和当前温度(室温)。如果您将热水装满浴缸,则温度会升高。

步骤10:基本操作

要升高或降低设定温度,请分别使用“向上”和“向下”键。调节到所需的温度后,使用“选择”键设置新的“设置”温度。 SSR应响应设置温度相对于当前温度的变化而发出咔嗒声。如果您想在摄氏下工作,请使用“左”键调出选项菜单。使用“向上”和“向下”键在模式之间进行选择,并使用“选择”键进行选择。为了将来,我打算添加一个时钟,时钟功能也将是通过此方法输入的子菜单。 “ Rst”键将重新启动设备,而“ Right”键目前已被忽略。

我强烈建议在连接120v电源之前,将Arduino/SainSmart电路用于测试驱动器。只需在浴缸中注满热水即可。插入Arduino 9v电源。 LCD显示屏上应显示“ Booting…”(正在引导…)消息,最后显示“ Immersion Cooker”和软件版本号。在引导阶段,软件将实例化温度读取阵列,该阵列用于执行信号平滑。几秒钟后,应显示默认设置温度(130°F)和当前温度。当传感器达到真实温度时,温度在最初的几秒钟内可能会发生很大变化,但应该稳定下来。我在水中使用了模拟烹饪温度计,以验证温度传感器读数的正确性。当升高或降低设定温度时,您应该听到SSR的喀哒声。此外,应使用万用表检查继电器的导通性,以确保SSR正常工作。我还将使用万用表检查所有120v连接,以确保没有短路。一旦确定所有电气连接正确,就可以将120v电路连接到主电源。

步骤11:您的第一顿饭

首先,要使用炊具,必须将食物放在真空密封袋中。在第一顿饭中,我调味了一些蔬菜并用真空密封。接下来,我拿了大约20只大虾,将它们密封在一个装有几包黄油和一些大蒜的袋子中。最后,将两块纽约条状牛排,用少许盐,胡椒粉,洋葱粉和大蒜粉调味,并用真空袋密封。

我喜欢我的牛排,这种稀有牛排的温度约为140°F,因此,那是我设定温度的地方。虾将在较低的温度下烹饪,因此您将在此温度下过度烹饪。我将它们放在水中的时间不超过30分钟。同样,将蔬菜放在水中一小时以上会导致蔬菜煮得过头。

但是,让我们谈谈这顿饭的真正意义;那些多汁的纽约牛排。他们可以在水中静置数小时,并且永远不会在此温度下煮熟。我会让他们坐至少一个小时,但他们在温度下停留的时间越长,它们就会变得越嫩。

当您准备好吃饭时,只需将牛排从他们的袋子中拉出即可。将它们放在锅中,放入一些低芥酸菜籽油中加热,加热时间足够长,足以使它们焦灼。将虾,蔬菜和牛排放入盘子。如果您愿意的话,可以减少三杯波特酒,一汤匙牛肉条和一些意大利香料,然后用中火将其减少,直到液体涂满汤匙,从而减少波特酒。

第12步:接线图

Arduino

此项目中的电路在附图中。

步骤13:

Arduino

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

/* */

/*标题:电磁炉控制器*/

/*版本:1.0 */

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

/*作者:Edward A Ranzenbach */

/* MCWSM */

/* */

/*说明:*/

/*此草图在Arduino Uno平台上运行*/

/*,带有SainSmart 1602 LCD/键盘护板,*/

/* SainSmart实体状态继电器设备和LM35 */

/*温度传感器。它旨在控制*/

/*两个普通加热元件和一个小型*/

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

/*用户只需使用*/

/*键盘拨入设定温度,contrioller选通*/

/*加热元件即可达到并保持设定水*/

/*温度。 */

/* */

/*未来:添加计时器/时钟功能*/

/* */

/*历史记录:*/

/* */

/* 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;//默认为Farenheit…

int iSetTemp = 130;//iSetTemp是全局的…

int iKeyPressIn = 0; float fTemp [TEMP_COUNT];//全局温度平滑数组…

int iCurrentIndex = 0;//iCurrentIndex是临时数组的全局索引…

byte bDegreeSymbol [8] =//°符号的位掩码…

{

B11100,

B10100,

B11100,

B00000,

B00000,

B00000,

B00000,

B00000

} ;;字节bCheckMarkSymbol [8] =//√符号的位掩码…

{

B00000,

B00000,

B00000,

B00001,

B00010,

B10100,

B01100,

B01000

} ;;液体液晶lcd(8,9,4, 5、6、7);//使用接口引脚的编号初始化库

void setup()

{

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

/* */

/*模块:设置*/

/*版本:1.0 */

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

/*作者:Edward A Ranzenbach */

/*说明:*/

/*初始化LCD显示屏并显示启动*/

/*屏幕。 */

/*在设置过程中,温度*/

/*平滑阵列初始化为*/

/*读数。 */

/* */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */

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

字符串strLine1;

字符串strLine2;

字符串strElipses =“。”;

lcd.createChar(0,bDegreeSymbol);//创建LCD字符

lcd.createChar(1,bCheckMarkSymbol);

lcd.begin(16,2);//设置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]);//转换为Farenheit 。..

}

DisplayLCD(“ Booting 。..”,strElipses);

strElipses + =“。”;

delay(100);

}

pinMode(ELEMENT_1,OUTPUT);

pinMode (ELEMENT_2,输出);

pinMode(LED_PORT,输出);

strLine1 =“浸入式炊具”;//创建并显示初始屏幕

strLine2 =“版本:”;

strLine2 + = VERSION_STRING;

DisplayLCD(strLine1,strLine2);

delay(2000);

}

无效循环()

{

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

/* */

/*模块:循环*/

/*版本:1.0 */

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

/*作者:Edward A Ranzenbach */

/*说明:*/

/*获取新的SetTemp(如果有)。然后,它调用SetTemp */

/*来选通加热元件以调整*/

/*温度。然后显示温度信息,延迟一秒*/

/*秒,然后返回。该延迟可防止*/

/*固态继电器连续打开和关闭*/

/*。 */

/*历史记录:*/

/* */

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

/*说明:*/

/*读取键盘以查看是否正在对当前设定温度进行*/

/*调节。默认值为*/

/*,不按下任何键。这将从ReadKeypad返回*/

/* btnNone,并导致*/

/*立即返回给调用者。否则,将适当调整*/

/*设定温度和*/

/*新的调整温度。 */

/* */

/*此模块还允许用户进入*/

/*子菜单,该子菜单中可以执行诸如更改*/

/*操作等操作从华氏温度到摄氏温度的模式。 */

/* */

/*如果用户按下任何键进行温度*/

/*调整,他们必须按下选择键*/

/*进行调整永久并将*/

/*返回给调用方。 */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */点击/************ *******/

int iKeyIn;

int iNewSetTemp;

int iTempDelta;//增加。减小或选择。..

char cSetTemp [4];

布尔值bSelected = false;

char cTempMode =‘S’;

iNewSetTemp = iSetTemp;//从当前温度开始。..

iKeyIn = ReadKeypad();

if(iKeyIn!= btnNONE)//btnNONE =无需执行任何操作,只需返回到调用方…

{

do//直到bSelected…

{

switch(iKeyIn)

{

case btnUP://调高温度…

iNewSetTemp + = 1;

cTempMode =‘A’;//通知用户正在进行调整。..

中断;

案例btnDOWN://向下调整温度…

iNewSetTemp-= 1;

cTempMode =‘A’;//通知用户正在进行调整。..

中断;

案例btnLEFT:

iNewSetTemp = Menu();//选项菜单。..

bSelected = true;//一旦菜单选项完成就退出。..

break;

case btnSELECT://调整完成…

bSelected = true;

break;

默认值://忽略其他键。 。.

break;

}

DisplayTemps(iNewSetTemp,GetCurrentTemp(),cTempMode);//显示每次调整的时间。..

delay(KEY_BOUNCE_DELAY);//平滑按键弹跳。..

iKeyIn = ReadKeypad();//内部读取循环。..

} while(!bSelected);

}

return(iNewSetTemp);

}

void SetTemp(int iSetTemp)

{

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

/* */

/*模块:SetTemp */

/*版本:1.0 */

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

/*作者:Edward A Ranzenbach */

/*说明:*/

/*此模块将iSetTemp参数与*/

/*当前温度进行比较。如果*/

/*度的差异大于1,则会根据需要打开或关闭加热元件*/

/*。 */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */点击/************ *******/

int iCurrentTemp; iCurrentTemp = GetCurrentTemp();//检查当前温度…

if(abs(iSetTemp-iCurrentTemp)》 = 1)//如果温度变化超过1度

{

if(iCurrentTemp》 iSetTemp)//如果温度过高,关闭加热元件

{

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

/*说明:*/

/*此模块从*/

/*传感器读取当前温度并将其存储到信号平滑*/

/*数组。传感器的温度以*/

/*摄氏度为单位,并且根据当前操作模式,我们根据需要将温度转换为Farenheit */

/*。然后,用户*/

/*返回一个表示平滑的*/

/*(即数组中所有温度的平均值)*/

/*温度的整数。 */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */点击/************ *******/

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

if((iCurrentIndex)== TEMP_COUNT)//保持在数组范围内。 。

{

iCurrentIndex = 0;

}

fADCIn = AnalogRead(TEMP_PORT);//从传感器获取温度信号。..

if(iTempMode == CELSIUS)//转换为摄氏温度。..

{

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显示屏上显示两行温度*/

/*。第一个是设定温度*/

/*,并根据我们是在*/

/*进行调节还是设定温度进行标记。显示屏的*/

/*第二行始终为当前*/

/*温度。 */

/* */

/*如果连续调用此模块,则*/

/*将闪烁,因此调用方应在*/

/*调用之间延迟。 */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */点击/************ *******/

字符串strLine1;

字符串strLine2;

if(cTempMode ==‘A’)//调整模式。..

{

strLine1 =“调整:“;

}

else

{

strLine1 =”设置:“;//设置模式。..

}

strLine1 + = iSetTemp;

strLine2 = String(“ Current:”);

strLine2 + = iCurrentTemp;

lcd.clear();

lcd.setCursor(0,0);

lcd.print(strLine1);

lcd.write(byte(0));//度数符号。..

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

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

/*如果连续调用此模块,则*/

/*将闪烁,因此调用方应在*/

/*调用之间延迟。 */

/*历史记录:*/

/* */

/* 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键盘。如果用户*/

/*按下一个键,则返回一个值。 */

/*的值可能因设备而异。因此,我们*/

/*通过查看我们是否接近*/

/*读取值来确定该值。 */

/*历史记录:*/

/* */

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

/*初始编码*/

/* */点击/************ *******/

int iKeyIn = AnalogRead(KEYBOARD_PORT);

如果(iKeyIn》 1000)//这将是最常见的结果。..

{

return btnNONE;

}

否则(iKeyIn 《50)

{

delay(KEY_BOUNCE_DELAY);//处理按键弹跳。..

return btnRIGHT;

}

否则(iKeyIn 《195)

{

delay(KEY_BOUNCE_DELAY);//处理键反弹。..

return btnUP;

}

否则(iKeyIn 《380)

{

delay(KEY_BOUNCE_DELAY);到摄氏
      责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分