0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个基于Arduino的货币计数器

科技观察员 来源:circuitdigest 作者:Debasis Parida 2022-08-22 15:51 次阅读

在这个项目中,我们将研究一个创新的Arduino项目创意,在这里我们可以通过使用颜色传感器和Arduino感知纸币来计算纸币笔记并计算其数量。TCS230颜色传感器将用于检测货币音符,并将Arduino Uno用于处理数据并显示16x2 LCD上的剩余余额。

所需组件:

Arduino UNO

TCS230颜色传感器

红外传感器

面包板

16*2 字母数字液晶屏

连接电线

TCS3200 颜色传感器工作

pYYBAGMDNNKAEkr2AAOYYl1tvgA110.png

TCS3200颜色传感器用于感知各种颜色。我们以前将TCS3200颜色传感器与Arduino和Raspberry Pi联系起来,还构建了一些有用的项目,例如颜色分类机。

TCS230传感器具有内置的红外LED,用于点亮要检测到的颜色的物体。这样可以确保外部光不会对物体产生影响。该传感器读取8*8阵列的光电二极管,该光电二极管由16个带有红色过滤器的光二极管,带有蓝色过滤器的16个,带有16个带有绿色过滤器的光电二极管,没有任何过滤器。根据要求,分别选择了这三个阵列中的每个传感器阵列。因此,它被称为 可编程传感器。该模块可以以感知特定的颜色并留下其他模块。它包含用于选择目的的过滤器。有第四模式称为“无滤波器模式” ,其中传感器检测到白光。

TCS230颜色传感器的输出信号是一个方波,其占空比为50%,其频率与所选滤波器的光强度成正比。

poYBAGMDNM6AZ0DPAACAl9p-1TU707.png

TCS3200颜色传感器的引脚:

pYYBAGMDNMqAACRlAADRpIDoD2M596.png

传感器的VDD-电压电源引脚。它提供了5V DC

GND-颜色传感器的地面参考引脚

S0,S1-输出频率缩放选择输入

S2,S3-照片二极管类型选择输入

颜色传感器的输出销

OE-启用PIN的输出频率

我们还在该项目中使用了红外传感器,该项目可以通过以下链接来理解其工作。

电路原理

以下是Arduino货币计数器的电路图:

poYBAGMDNMaANiTLAAKKgoXyQ4s438.png

在这里,我制作了一个小型结构,例如使用卡板的POS货币刷卡机。在该结构中,颜色传感器和IR传感器用纸板固定,如下图所示。

poYBAGMDNMGASewPAAIaB7Bhl9A939.png

在这里,IR 传感器用于感应插槽内是否存在货币,如果有纸币,则颜色传感器将检测纸币的颜色并将颜色值发送到 Arduino。并且 Arduino 进一步根据纸币的颜色计算货币价值。

代码说明

在文章的末尾给出了完整的代码以及演示视频。在这里,下面给出了完整代码的逐步说明。

首先,包括程序中的所有库。在这里,我们只需要在程序中包含LCD库即可。然后声明代码中使用的所有变量。

#include 
整数输出 = 13;
unsigned int频率= 0;
液晶液晶(4、6、7、8、9、10);
int blue1;
int red1;
int green1;
int a = 0,b = 0;
int total = 1000;

在setup() 中,在 LCD 上打印欢迎信息并定义此项目中使用的数字引脚的所有数据方向。接下来,设置颜色传感器的输出频率缩放,在我的例子中,它设置为 20%,可以通过给 S0 给高脉冲和给 S1 给低脉冲来设置。

无效设置()
{
  序列号.开始(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print(“智能钱包”);
  lcd.setCursor(0, 1);
  lcd.print(“电路摘要”);
  延迟(2000);
  lcd.clear();
  pinmode(2,输出); // S0
  pinmode(3,输出); // S1
  Pinmode(11,输出); // S2
  Pinmode(12,输出); // S3
  pinmode(13,输入); // out
  数字写入(2,高);
  DigitalWrite(3,低);
}

在无限循环()内部,读取传感器中的所有数据输出。可以通过读取A0引脚和输出颜色频率来找到IR传感器的输出,可以通过称为Red(),blue()和green()的单个函数来找到。然后在串行显示器上打印所有它们。当我们需要在项目中添加新货币时,这是需要的。

int传感器= DigitalRead(A0);
  int red1 = red();
  int blue1 = blue();
  int green1 = green();
  serial.println(red1);
  serial.println(blue1);
  serial.println(green1);
  serial.println(“ ----------------------------------------”);

接下来,写所有条件,以使用我们之前设置的参考频率检查颜色传感器的输出频率。如果匹配,则从钱包余额中扣除指定的金额。

  if(red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 && sensor == high)
  {
    a = 1;
  }
  否则if(传感器==低&& a == 1)
  {
    a = 0;
    如果(总计>=10)
    {
    lcd.setCursor(0, 1);
    lcd.print(“ 10卢比!!!”);
    总计=总数10;
    延迟(1500);
    lcd.clear();
    }
  }

在这里,我们只设置了10卢比和50卢比颜色的条件,您可以设置更多条件以检测更多否。货币笔记。

pYYBAGMDNLiADhElAAPvNKQJ7j8958.png

注意:在您的情况下,频率输出可能会有所不同,具体取决于外部照明和传感器设置。因此,建议检查货币的输出频率并相应地设置参考值。

poYBAGMDNLWASfBYAAnVwJW8OkA452.png

以下代码将显示16x2 LCD钱包中的可用余额。

  lcd.setCursor(0, 0);
  lcd.print(“总BAL:”);
  lcd.setcursor(11,0);
  lcd.print(总计);
  延迟(1000);

以下功能将获得货币中红色内容的输出颜色频率。同样,我们可以编写其他功能以获得蓝色和绿色内容的价值。

int red()

{

  DigitalWrite(11,低);
  DigitalWrite(12,低);
  频率=脉搏蛋白(输出,低);
  返回频率;
}

因此,这就是可以使用几个组件轻松构建基于Arduino的货币计数器的方式。

int输出= 13;

unsigned int频率= 0;

#include

LiquidCrystal LCD(4、6、7、8、9、10);

int blue1;

int red1;

int green1;


int a = 0,b = 0;

int total = 1000;

无效设置()

{

序列.开始(9600);

lcd.Begin(16,2);

lcd.setcursor(0,0);

lcd.print(“智能钱包”);

lcd.setcursor(0,1);

lcd.print(“电路摘要”);

延迟(2000);


lcd.clear();


pinMode(2, OUTPUT);//S0

pinMode(3, OUTPUT);//S1

pinMode(11, OUTPUT);//S2

pinMode(12, OUTPUT);//S3

pinMode(13, INPUT);//OUT


DigitalWrite(2,高);

DigitalWrite(3,低);

}


void loop()

{

int sensor = digitalread(a0);

int red1 = red();

int blue1 = blue();

int green1 = green();


serial.println(red1);

序列号.println(blue1);

serial.println(green1);

Serial.println("-----------------");



if(red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 && sensor == high)

{

a = 1;

}

else if(sensor == low && a == 1)

{

a = 0;

if(total>=10)

{

lcd.setCursor(0, 1);

lcd.print("10 卢比!!!");

总计=总计-10;

延迟(1500);

lcd.clear();

}

}

if (red1 >= 25 && red1 <= 30 &&

{

b = 1;

}

else if (sensor == LOW && b == 1)

{

b = 0;

if(total>=50)

{

lcd.setCursor(0, 1);

lcd.print("50 卢比!!!");

总计=总50;

延迟(1500);

lcd.clear();

}

}

lcd.setCursor(0, 0);

lcd.print(“总BAL:”);

lcd.setcursor(11,0);

lcd.print(总计);

延迟(1000);

}


int red()

{

digitalWrite(11, LOW);

数字写入(12,低);

频率=脉冲输入(输出,低);

返回频率;

}

int blue()

{

digitalWrite(11, HIGH);

数字写入(12,高);

频率=脉冲输入(输出,低);

返回频率;

}

int green()

{

digitalWrite(11, LOW);

数字写入(12,高);

频率=脉冲输入(输出,低);

返回频率;

}

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

    关注

    32

    文章

    2254

    浏览量

    94376
  • 颜色传感器
    +关注

    关注

    2

    文章

    95

    浏览量

    18173
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186699
收藏 人收藏

    评论

    相关推荐

    构建4位二进制计数器

    构建4位二进制计数器计数范围从0到15(包括0和15),计数周期为16。同步复位输入时,将
    的头像 发表于 12-02 09:20 4944次阅读

    如何构建使用IR光束的对象计数器

    电路,计算有多少人走过扇门或对象通过
    的头像 发表于 07-30 11:15 2110次阅读

    使用红外传感构建Arduino计数

    在这个项目中,我们正在使用红外传感构建Arduino 计数机。这台机器在红外传感
    的头像 发表于 08-17 15:59 4326次阅读
    使用红外传感<b class='flag-5'>器</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>Arduino</b><b class='flag-5'>计数</b>机

    基于Arduino的RPM计数器 具有更快的新算法

    电子发烧友网站提供《基于Arduino的RPM计数器 具有更快的新算法.zip》资料免费下载
    发表于 11-15 11:33 0次下载
    基于<b class='flag-5'>Arduino</b>的RPM<b class='flag-5'>计数器</b> 具有更快的新算法

    使用Arduino Nano或Uno的Android频率计数器

    电子发烧友网站提供《使用Arduino Nano或Uno的Android频率计数器.zip》资料免费下载
    发表于 11-22 10:43 2次下载
    使用<b class='flag-5'>Arduino</b> Nano或Uno的Android频率<b class='flag-5'>计数器</b>

    基于Arduino UNO的细丝计数器

    基于Arduino UNO的细丝计数器
    发表于 12-08 11:47 0次下载

    用于桌上足球/足球的自动Arduino目标计数器

    电子发烧友网站提供《用于桌上足球/足球的自动Arduino目标计数器.zip》资料免费下载
    发表于 12-13 10:29 0次下载
    用于桌上足球/足球的自动<b class='flag-5'>Arduino</b>目标<b class='flag-5'>计数器</b>

    使用Arduino的简单计数器

    方案介绍在本教程中,我们将学习如何制作简单的步骤计数器。该项目在机器人技术中或需要计数些东西(例如电动机执行多少步或传感
    发表于 12-30 14:42 2次下载

    使用Arduino制作双向访客计数器

    电子发烧友网站提供《使用Arduino制作双向访客计数器.zip》资料免费下载
    发表于 02-01 11:35 10次下载
    使用<b class='flag-5'>Arduino</b>制作双向访客<b class='flag-5'>计数器</b>

    Arduino七段计数器

    电子发烧友网站提供《Arduino七段计数器.zip》资料免费下载
    发表于 02-09 09:51 0次下载
    <b class='flag-5'>Arduino</b>七段<b class='flag-5'>计数器</b>

    如何使用Arduino制作频率计数器

    吗?本文涉及频率计数器,测量频率的测试设备。在本文结束时,您还将了解如何使用ARDUINO为自己制作。那么让我们开始吧,好吗?
    的头像 发表于 04-02 14:34 6650次阅读
    如何使用<b class='flag-5'>Arduino</b>制作<b class='flag-5'>一</b><b class='flag-5'>个</b>频率<b class='flag-5'>计数器</b>?

    基于Arduino Nano 33 BLE Sense的深蹲计数器

    电子发烧友网站提供《基于Arduino Nano 33 BLE Sense的深蹲计数器.zip》资料免费下载
    发表于 06-15 10:52 0次下载
    基于<b class='flag-5'>Arduino</b> Nano 33 BLE Sense的深蹲<b class='flag-5'>计数器</b>

    使用Arduino UNO构建4位二进制计数器

    电子发烧友网站提供《使用Arduino UNO构建4位二进制计数器.zip》资料免费下载
    发表于 06-25 11:38 0次下载
    使用<b class='flag-5'>Arduino</b> UNO<b class='flag-5'>构建</b>4位二进制<b class='flag-5'>计数器</b>

    计数器构建

    电子发烧友网站提供《计数器构建.zip》资料免费下载
    发表于 07-05 09:11 0次下载
    <b class='flag-5'>计数器</b>的<b class='flag-5'>构建</b>

    使用Arduino制作简单的频率计数器

    电子发烧友网站提供《使用Arduino制作简单的频率计数器.zip》资料免费下载
    发表于 07-12 10:40 5次下载
    使用<b class='flag-5'>Arduino</b>制作简单的频率<b class='flag-5'>计数器</b>