|
在之前的帖子中,我们使用颜色传感器制作了一款基于Arduino开发板的自动点钞机。今天,我们将在本文中使用红外传感器制作一款Arduino计数机。该机器可以借助红外传感器对硬币进行计数和分类。本文红外传感器被放置到特定位置以感应不同的硬币,Arduino UNO用于处理数据并在1602 LCD上显示总计数值。
所需的组件 ● Arduino UNO开发板 ● 红外传感器 ● 面包板 ● 1602 LCD显示屏模块 ● I2C模块 ● 连接导线
Arduino硬币分拣机制作结构 第1步:拿一张纸板,并标记不同的硬币尺寸,如下图所示。然后小心地切下标记的部分。切掉这些部分必须准确;否则,该项目可能无法正常运行。
第2步:按照下图所示,将上述布置放置在倾斜结构中。进行布置后,通过在斜坡上插入不同的硬币进行检查,以确保布置正常。如果硬币未正确插入,则根据硬币略微增加孔的大小,然后重新检查直到操作成功。
第3步:将红外传感器放置在各个硬币的输出路径附近。正确放置传感器并使用其电器进行校准非常重要。然后再次插入硬币以检查传感器的运行情况。
电路原理图 下面是Arduino计数机的电路图:
红外传感器被放置在硬币分类机的不同输出路径上以感测硬币。将硬币插入此Arduino硬币计数器后,它会根据机械设计进入专用路径,并且相应的IR传感器会感测到硬币,并向Arduino提供HIGH输出值,该值可以由Arduino的模拟引脚读取。给出HIGH值的红外传感器决定硬币的面值,如2/5/10卢比。
使用I2C模块将1602 LCD模块与Arduino连接,以显示插入盒子的硬币数量。为了简化起见,I2C模块与LCD一起使用,LCD仅使用2个引脚(即SCL、DA)将LCD与Arduino连接。稍作修改后,基于Arduino的硬币分拣器的完整设置将如下所示:
编程Arduino开发板 成功建立硬件连接后,现在该对Arduino进行编程了。 Arduino的完整代码在本文的底部。该代码的逐步说明如下:
该程序要做的第一件事是包含所有必需的库。“ LiquidCrystal_I2C.h”库,用于使用LCD的I2C接口,以及“ Wire.h”库,用于在Arduino上使用I2C功能。 - #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27,16,2);
复制代码
在setup()函数中,初始化LCD,然后在LCD上显示欢迎消息。 - lcd.init();
- lcd.backlight();
- lcd.setCursor(0,0);
- lcd.print(" ARDUINO BASED ");
- lcd.setCursor(0,1);
- lcd.print(" COIN SORTING ");
- delay(2000);
- lcd.clear();
复制代码
在loop()函数中,analogRead函数用于从Arduino的不同模拟通道读取红外传感器值,并将它们存储在不同的变量中。 - int s1=analogRead(A0);
- int s2=analogRead(A1);
- int s3=analogRead(A2);
复制代码然后,编写以下代码以感应硬币并增加硬币计数器值。在此,标记值f1用于避免硬币的多次计数。 - if(s1>=200 && f1==0)
- {
- f1=1;
- }
- else if(s1<200 && f1==1)
- {
- f1=0;
- c1++;
- }
复制代码
最后,使用以下命令在LCD上显示计数值。 - lcd.setCursor(0,0);
- lcd.print("RS10 RS2 RS5");
- lcd.setCursor(1,1);
- lcd.print(c1);
- lcd.setCursor(7,1);
- lcd.print(c2);
- lcd.setCursor(14,1);
- lcd.print(c3);
复制代码
Arduino硬币计数器的实际工作过程 完成设置并上传代码后,打开12V直流电源。首先,液晶显示屏上将显示欢迎消息,几秒钟后,液晶显示屏上将显示一个界面,其中包含所有可用硬币的数量。一开始它会显示为零,因为我们还没有插入任何硬币。
接下来,将硬币插入写有“ Insert Coin”的机器顶部。现在,您将看到在LCD上更新硬币计数的值。然后插入多个不同值的硬币并在LCD上检查各个硬币的计数。
代码 本文使用的完整代码如下:
main.rar
(436 Bytes, 下载次数: 79)
|