在这个项目中,我们将研究一个创新的arduino项目创意,通过使用Color Sensor和Arduino感应纸币,我们可以计算纸币并计算其金额。TCS230颜色传感器将用于检测纸币,而Arduino UNO将用于处理数据并在16x2 LCD上显示剩余余额。
所需组件:
- Arduino UNO
- TCS230颜色传感器
- 红外传感器
- 面包板
- 16 * 2字母数字LCD
- 连接线
TCS3200颜色传感器工作
TCS3200颜色传感器用于感应多种颜色。我们之前将TCS3200颜色传感器与Arduino和Raspberry pi进行了接口,还建立了一些有用的项目,例如颜色分选机。
TCS230传感器具有内置的红外LED,用于照亮要检测颜色的物体。这确保了外部环境光不会对物体产生影响。该传感器读取一个8 * 8阵列的光电二极管,该光电二极管包括16个带红色滤光片的光电二极管,16个带蓝色滤光片的16个带绿色滤光片的16个不带任何滤光片的光电二极管。根据需要分别选择这三个阵列中的每个传感器阵列。因此,它被称为 可编程传感器。该模块可以具有检测特定颜色并保留其他颜色的功能。它包含用于该选择目的的过滤器。第四种模式称为“无滤镜模式” ,其中传感器检测白光。
TCS230颜色传感器的输出信号是占空比为50%的方波,其频率与所选滤光器的光强度成正比。
TCS3200颜色传感器的引脚排列:
VDD-传感器的电源引脚。它配有5V DC。
GND-颜色传感器的接地参考引脚
S0,S1-输出频率缩放选择输入
S2,S3-光电二极管类型选择输入
OUT-色彩传感器的输出引脚
OE-输出频率使能引脚
我们还在该项目中使用了红外传感器,可以通过以下链接了解其工作原理。
电路原理图
下面是Arduino Money Counter的电路图:
在这里,我做了一个小结构,例如使用纸板的POS货币刷卡机。在这种结构中,颜色传感器和红外传感器固定在纸板上,如下图所示。
此处,IR传感器用于检测插槽内是否存在货币,如果有钞票,则颜色传感器将检测钞票的颜色并将颜色值发送给Arduino。然后Arduino会根据票据的颜色进一步计算货币价值。
代码说明
本文结尾给出了完整的代码以及演示视频。完整代码的逐步说明如下。
首先,在程序中包含所有库。在这里,我们只需要将LCD库包含在程序中即可。然后声明代码中使用的所有变量。
#包括
在 设置()中, 在LCD上打印欢迎消息,并定义此项目中使用的数字引脚的所有数据方向。接下来,设置颜色传感器的输出频率缩放比例,在本例中,将其设置为20%,可以通过将HIGH脉冲设置为S0并将LOW脉冲设置为S1来设置。
void setup(){Serial.begin(9600); lcd.begin(16,2); lcd.setCursor(0,0); lcd.print(“ Smart Wallet”); lcd.setCursor(0,1); lcd.print(“ Circuit Digest”); delay(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,HIGH); digitalWrite(3,LOW); }
在无限 循环()中, 读取传感器的所有数据输出。可以通过读取A0引脚来找到IR传感器的输出,并且可以通过调用分别写为红色(),蓝色()和绿色()的各个函数来找到输出颜色频率。然后将它们全部打印在串行监视器上。当我们需要向项目中添加新货币时,这是必需的。
内部传感器= digitalRead(A0); int red1 = red(); int blue1 = blue(); int green1 = green(); Serial.println(red1); Serial.println(blue1); Serial.println(green1); Serial.println(“ -----------------------------”);
接下来,写下所有条件,以我们之前设置的参考频率检查色彩传感器的输出频率。如果匹配,则从钱包余额中扣除指定的金额。
如果(red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 && sensor == HIGH){a = 1; }否则,如果(sensor == LOW && a == 1){a = 0; if(total> = 10){lcd.setCursor(0,1); lcd.print(“ 10卢比!!!”); 总数=总计10; 延迟(1500); lcd.clear(); }}
在这里,我们仅设置了10卢比和50卢比注释颜色的条件,您可以设置更多条件以检测更多否。纸币。
注意:根据您的情况,频率输出可能会有所不同,具体取决于外部照明和传感器设置。因此,建议检查货币的输出频率并相应地设置参考值。
以下代码将在16x2 LCD上显示钱包中的可用余额。
lcd.setCursor(0,0); lcd.print(“ Total Bal:”); lcd.setCursor(11,0); lcd.print(总计); 延迟(1000);
以下函数将获取货币中红色内容的输出颜色频率。同样,我们可以编写其他函数来获取蓝色和绿色内容的值。
int red(){digitalWrite(11,LOW); digitalWrite(12,LOW); 频率= pulseIn(OutPut,LOW); 返回频率 }
因此,这就是使用少量组件即可轻松构建基于Arduino的Money计数器的方式。我们可以通过集成一些图像处理和相机来进一步修改它,以使用图像检测货币,这样它将更加准确,并且能够检测任何货币。