风筝
发表于: 2020-3-11 22:32:48 | 显示全部楼层

在之前的帖子中,我们使用颜色传感器制作了一款基于Arduino开发板的自动点钞机。今天,我们将在本文中使用红外传感器制作一款Arduino计数机。该机器可以借助红外传感器对硬币进行计数和分类。本文红外传感器被放置到特定位置以感应不同的硬币,Arduino UNO用于处理数据并在1602 LCD上显示总计数值。


所需的组件

●    Arduino UNO开发板

●    红外传感器

●    面包板

●    1602 LCD显示屏模块

●    I2C模块

●    连接导线


Arduino硬币分拣机制作结构

第1步:拿一张纸板,并标记不同的硬币尺寸,如下图所示。然后小心地切下标记的部分。切掉这些部分必须准确;否则,该项目可能无法正常运行。

Structure-of-Coin-Sorter.jpg


第2步:按照下图所示,将上述布置放置在倾斜结构中。进行布置后,通过在斜坡上插入不同的硬币进行检查,以确保布置正常。如果硬币未正确插入,则根据硬币略微增加孔的大小,然后重新检查直到操作成功。

Arduino-Coin-Sorter-Structure.jpg


第3步:将红外传感器放置在各个硬币的输出路径附近。正确放置传感器并使用其电器进行校准非常重要。然后再次插入硬币以检查传感器的运行情况。

IR-Sensor-Coin-Sorter.jpg


电路原理图

下面是Arduino计数机的电路图:

Arduino-based-Coin-Sorting-Machine-Circuit-Diagram.png


红外传感器被放置在硬币分类机的不同输出路径上以感测硬币。将硬币插入此Arduino硬币计数器后,它会根据机械设计进入专用路径,并且相应的IR传感器会感测到硬币,并向Arduino提供HIGH输出值,该值可以由Arduino的模拟引脚读取。给出HIGH值的红外传感器决定硬币的面值,如2/5/10卢比。


使用I2C模块将1602 LCD模块与Arduino连接,以显示插入盒子的硬币数量。为了简化起见,I2C模块与LCD一起使用,LCD仅使用2个引脚(即SCL、DA)将LCD与Arduino连接。稍作修改后,基于Arduino的硬币分拣器的完整设置将如下所示:

Coin-Sorting-Machine-Working.jpg


编程Arduino开发板

成功建立硬件连接后,现在该对Arduino进行编程了。 Arduino的完整代码在本文的底部。该代码的逐步说明如下:


该程序要做的第一件事是包含所有必需的库。“ LiquidCrystal_I2C.h”库,用于使用LCD的I2C接口,以及“ Wire.h”库,用于在Arduino上使用I2C功能。

  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. LiquidCrystal_I2C lcd(0x27,16,2);
复制代码

setup()函数中,初始化LCD,然后在LCD上显示欢迎消息。

  1. lcd.init();
  2. lcd.backlight();
  3. lcd.setCursor(0,0);
  4. lcd.print("  ARDUINO BASED       ");
  5. lcd.setCursor(0,1);
  6. lcd.print("  COIN SORTING       ");
  7. delay(2000);
  8. lcd.clear();
复制代码

在loop()函数中,analogRead函数用于从Arduino的不同模拟通道读取红外传感器值,并将它们存储在不同的变量中。

  1. int s1=analogRead(A0);
  2. int s2=analogRead(A1);
  3. int s3=analogRead(A2);
复制代码

然后,编写以下代码以感应硬币并增加硬币计数器值。在此,标记值f1用于避免硬币的多次计数。

  1. if(s1>=200 && f1==0)
  2. {
  3.   f1=1;
  4. }
  5. else if(s1<200 && f1==1)
  6. {
  7.   f1=0;
  8.   c1++;
  9. }
复制代码

最后,使用以下命令在LCD上显示计数值。

  1. lcd.setCursor(0,0);
  2. lcd.print("RS10   RS2   RS5");
  3. lcd.setCursor(1,1);
  4. lcd.print(c1);
  5. lcd.setCursor(7,1);
  6. lcd.print(c2);
  7. lcd.setCursor(14,1);
  8. lcd.print(c3);
复制代码

Arduino硬币计数器的实际工作过程

完成设置并上传代码后,打开12V直流电源。首先,液晶显示屏上将显示欢迎消息,几秒钟后,液晶显示屏上将显示一个界面,其中包含所有可用硬币的数量。一开始它会显示为零,因为我们还没有插入任何硬币。


接下来,将硬币插入写有“ Insert Coin”的机器顶部。现在,您将看到在LCD上更新硬币计数的值。然后插入多个不同值的硬币并在LCD上检查各个硬币的计数。

Coin-Sorting-Machine-using-Arduino.jpg


代码

本文使用的完整代码如下: main.rar (436 Bytes, 下载次数: 76)

跳转到指定楼层
xiaoyu
发表于: 2020-3-19 21:34:40 | 显示全部楼层

好厉害,楼主大大我想学更多的知识
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 13:28 , Processed in 0.109689 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表