色标传感器(arduino和python代码)

1、代码

1.1 arduino代码

一个传感器,绿色置高,白色置低,通过引脚判别这两种颜色

int num = 0;
int green_num=0;
void setup(){
 Serial.begin(9600); //Start serial communication boud rate at 9600
 pinMode(7,INPUT); //Pin 2 as signal input
}
void loop(){
 while(1){
   delay(500);
   if(digitalRead(7)==LOW){ 
    // If no signal print collision detected
     Serial.println("WHITE");
//     num++;
//     Serial.println(num);
   }
   else{
     // If signal detected print collision detected
     Serial.println("GREEN");
//     green_num++;
//     Serial.println(green_num);
   }
 }

1.2 python代码(K210,使用maixpy IDE)

四个传感器,绿色置高,白色置低,通过引脚判别这两种颜色

from fpioa_manager import fm, board_info
from board import board_info
from Maix import GPIO

#32 30 28 26
#class GPIO(ID,MODE,PULL,VALUE)
fm.register(board_info.SPI0_MISO,fm.fpioa.GPIO1)
fm.register(board_info.SPI0_MOSI,fm.fpioa.GPIO2)
fm.register(board_info.MIC0_WS,fm.fpioa.GPIO3)
fm.register(board_info.MIC0_BCK,fm.fpioa.GPIO4)
sensor1=GPIO(GPIO.GPIO1,GPIO.IN)
sensor2=GPIO(GPIO.GPIO2,GPIO.IN)
sensor3=GPIO(GPIO.GPIO3,GPIO.IN)
sensor4=GPIO(GPIO.GPIO4,GPIO.IN)

if sensor1.value()==1 :
        sensor_value &= 0b1110
    else :
        sensor_value |= 0b0001
    if sensor2.value()==1 :
        sensor_value &= 0b1101
    else :
        sensor_value |= 0b0010
    if sensor3.value()==1 :
        sensor_value &= 0b1011
    else :
        sensor_value |= 0b0100
    if sensor4.value()==1 :
        sensor_value &= 0b0111
    else :
        sensor_value |= 0b1000
    print(sensor_value)

2、原理与连线

E18-F10NK是一种集发射与接收于一体的色标传感器,类型为:NPN常开型输出。单色光源经过调制后发出,被检测物反射后,经接收头对进行解调输出。有效的避免了环境可见光的干扰。

双透镜的使用,延长了传感器的检测距离。另外在实际使用中,还可以通过传感器尾部的电位器旋钮改变传感器的探测范围。
本色标传感器,具有探测距离远、不受可见光干扰、易于装配、使用方便等特点,可以被应用于物品定位、颜色识别等用途,可以用作广告卷帘灯箱、包装机、切割机等多种生活化工产品上。

色标传感器就其原理来说并不是检测颜色,它是通过检测色标对光束的反射或吸收量与周围材料相比的不同而实现检测的。所以,颜色的识别要严格与照射在目标上的光谱成分相对应。

在单色光源中,绿光LED(565mm)和红光LED(660mm)各有所长。绿光在很宽的颜色范围内比红光源灵敏度高。红光LED对有限的颜色组合有响应,但它的检测距离比绿光LED远。通常红光源传感器的检测距离是绿光源传感器的6~8倍。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
Alt

3、拓展

利用继电器控制,需要时开启

from fpioa_manager import fm, board_info
from board import board_info
from Maix import GPIO

#控制sensor0的开关 12 LED_B
#sensor信号线 13 LED_G
fm.register(board_info.LED_B,fm.fpioa.GPIO5)
sensor_switch = GPIO(GPIO.GPIO5,GPIO.OUT)
fm.register(board_info.LED_G,fm.fpioa.GPIO0)
sensor0 = GPIO(GPIO.GPIO0,GPIO.IN)

def check_color():
    #0为开,1为关
    global num_timer
    global flag
    //开色标传感器
    sensor_switch.value(0)
    utime.sleep_ms(500)
    #红色
    if sensor0.value()==0:
    	//做一些事,然后关掉
        sensor_switch.value(1)
    #蓝色
    else :
    	//做一些事,然后关掉
        sensor_switch.value(1)

4、评价

4.1 优点

(1)色标传感器便宜,25块钱左右
(2)简单稳定,只有正负极和信号线,包装好,连线简单

4.2 缺点

(1)只能判别两种颜色,而且两种颜色有要求
(2)便宜质量参差不齐

5、对比

与颜色传感器TCS3200的对比:色标传感器更稳定,简单易用,但是不能区分多种颜色,只能区分对比度大的两种颜色。便宜的颜色传感器只适合静态,连线多易出故障难以排查。

颜色传感器相关信息:https://blog.csdn.net/chotin/article/details/103001186

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值