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

    文章

    2111

    浏览量

    92719
  • 颜色传感器
    +关注

    关注

    2

    文章

    83

    浏览量

    18008
  • Arduino
    +关注

    关注

    184

    文章

    6422

    浏览量

    184628
收藏 人收藏

    评论

    相关推荐

    构建一个4位二进制计数器

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

    如何构建具有同步复位端的CMOS四进制计数器

    如何构建具有同步复位端的CMOS四进制计数器?输入端 复位控制信号RESET 时钟信号clk输出端 Q3 Q2 Q1 Q0 carry
    发表于 12-10 17:56

    如何设计实际可用的计数器

    我需要设计计数器,时钟变化几十计数次。我先用了
    发表于 03-14 16:49

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

    一个电路,计算有多少人走过一扇门或一个对象通过一个点的次数可能非常重要。在这个Maker Pro项目中,我们将构建一个使用IR光束的对象计数器,当它被破坏时,会增加一个计数器
    的头像 发表于 07-30 11:15 1896次阅读

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

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

    使用计数器作为原型构建电路

    电子发烧友网站提供《使用计数器作为原型构建电路.zip》资料免费下载
    发表于 11-30 11:12 0次下载
    使用<b class='flag-5'>计数器</b>作为原型<b class='flag-5'>构建</b>电路

    基于Arduino UNO的细丝计数器

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

    使用Arduino的简单计数器

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

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

    电子发烧友网站提供《使用Arduino制作双向访客计数器.zip》资料免费下载
    发表于 02-01 11:35 8次下载
    使用<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>

    构建LED二进制计数器

    电子发烧友网站提供《构建LED二进制计数器.zip》资料免费下载
    发表于 06-12 09:54 0次下载
    <b class='flag-5'>构建</b>LED二进制<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 4次下载
    使用<b class='flag-5'>Arduino</b>制作简单的频率<b class='flag-5'>计数器</b>