我们之前使用颜色传感器构建了基于Arduino的纸币计数机。现在,在这个项目中,我们正在使用红外传感器构建一个Arduino计数机。本机借助红外传感器对硬币进行不同部分的计数和分类。在这里,进行了安排,其中放置了IR传感器以感应不同的硬币,而Arduino UNO用于处理数据并在16x2 LCD上显示总计数值。
所需组件
- Arduino UNO
- 红外传感器
- 面包板
- 16 * 2字母数字LCD
- 用于16x2(1602)字母数字LCD的I2C模块
- 连接线
为Arduino硬币分拣机制作结构
步骤1:拿一张纸板纸,并标记不同的硬币尺寸,如下图所示。然后小心地切下标记的部分。切掉这些部分必须准确;否则,该项目可能无法正常运行。
步骤2:按照下图所示,将上述布置放置在倾斜结构中。进行布置后,通过在斜坡上插入不同的硬币进行检查,以确保该布置工作正常。如果硬币未正确插入,则根据硬币略微增加孔的大小,然后重新检查直到操作成功。
步骤3:将IR传感器放置在各个硬币的输出路径附近。正确放置传感器并使用其电位计进行校准非常重要。然后再次插入硬币以检查传感器的运行情况。在此处了解有关IR传感器电路的更多信息。
电路原理图
下面是Arduino计数机的电路图:
在此,IR传感器被放置在硬币分类机的不同输出路径上以感测硬币。将硬币插入此Arduino硬币计数器后,它会按照机械设计进入专用路径,并且相应的IR传感器会感测到该硬币,并向Arduino提供HIGH输出值,该值可以由Arduino的模拟引脚读取。给出HIGH值的IR传感器决定硬币的价值,如2/5/10卢比。
在这里,使用I2C模块将16x2字母数字LCD与Arduino接口,以显示插入盒子的硬币数量。该LCD也可以不使用I2C模块直接连接到Arduino,但这需要更多的连接。因此,为了简化起见,I2C模块与LCD一起使用,LCD仅使用2个引脚(即SCL,SDA)将LCD与Arduino连接。为了给Arduino供电,使用了12VDC,1 AMP AC-DC适配器,该适配器可以直接连接到Arduino的电源插孔。
稍作修改后,基于Arduino的硬币分拣器的完整设置将如下所示:
编程Arduino
成功进行硬件连接后,现在该对Arduino进行编程了。Arduino的完整代码在本教程的底部。该代码的逐步说明如下:
该程序中要做的第一件事是包括所有必需的库。在这里,在我的情况,我已经包括了“ LiquidCrystal_I2C.h” 使用LCD和“的I2C接口库 Wire.h ”关于使用Arduino的I2C功能。
#包括
在 setup() 内部 , 编写了LCD命令以在LCD上显示欢迎消息。
lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print(“基于ARDUINO的”); 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 ”的机器顶部插入任何硬币(Rs。2/5/10)。现在,您将看到必须在LCD上更新硬币计数的值。然后插入多个不同值的硬币,并在LCD上检查各个硬币的计数。
以下是完整的代码以及视频。