第1步:零件和组件:
旧的dvd驱动镜头。
Arduino(任何uno,nano等)
光敏电阻(LDR)。
10K欧姆电阻。
1 -RGB led
面包板和跳线。
计算机和笔记本电脑(安装了arduino IDE)。
第二步:撕下电话DVD驱动器
打开DVD驱动器的所有螺丝并将其打开。镜头驱动系统安装在橡胶螺柱上,底部有螺钉。
撕裂后,您会看到DVD驱动器的镜头有两个激光器,但在CD驱动器中只有一个激光器。 DVD驱动器有一个用于CD的红外激光器和用于DVD的其他红色激光器。撕下镜头在其中插入RGB LED和在光电探测器上插入LDR。
步骤3:电路和编码:
我使用共同的共阴极RGB led,所以我将负极连接到COM,其他三个端子连接到数字引脚d2,d3,d4。
另一侧LDR和10K欧姆电阻执行电压驱动器并将光转换为电压
int R = 2;//红色连接到D2
int G = 3;//绿色连接到D3
int B = 4;//BLUE conect to D4
int ldr = 14//LDR连接到A0模拟引脚
void setup(){
int thresh_R,thresh_G, thresh_B;
Serial.begin(9600);
pinMode(R,OUTPUT);
pinMode(G,OUTPUT);
pinMode(B,OUTPUT);
////获取红色阈值
digitalWrite(R,HIGH);
延迟(500);
延迟(500);
/////获取绿色阈值
digitalWrite(R,LOW);
digitalWrite(G,HIGH);
延迟(500);
thresh_G = analogRead(ldr);
延迟(500);
/////获取蓝色阈值
digitalWrite(R,LOW);
digitalWrite(G ,LOW);
digitalWrite(B,HIGH);
延迟(500);
thresh_B = analogRead(ldr);
delay(500);
}
void loop(){
int real_R,real_G,real_B;
digitalWrite(R ,HIGH);
延迟(50);
real_R = analogRead(ldr);
延迟(50);
digitalWrite (R,LOW);
digitalWrite(G,HIGH);
延迟(50);
real_G = analogRead(ldr);
延迟(50);
digitalWrite(R,LOW);
digitalWrite(G,LOW);
digitalWrite(B,HIGH);
延迟(50);
real_B = analogRead(ldr);
延迟(50);
if((real_R》 thresh_R + 2)&&(real_G》 thresh_G + 2)&&(real_B》 thresh_B + 2)
{
Serial.println(“color is white”);
}
else if((real_R》 thresh_R + 2)&&(real_G》 thresh_G) )
{
Serial.println(“color is yellow”);
}
else if(real_R》 thresh_R + 2 )
{
Serial.println(“color is red”);
}
else if(real_G》 thresh_G + 2 )
{
Serial.println(“color is green”);
}
else if(real_B》 thresh_B + 2 )
{
Serial.println(“颜色为蓝色”);
}
}
第4步:工作原理:
LED的红色,绿色,蓝色光以固定间隔顺序发光。但是LDR值可以根据周围区域的光线而变化,因此当您打开arduino或重置时,它不会给出固定值,而是取值。
当对象光量的特定光线取决于对象的颜色时例如,当红色对红色物体输出的红色亮起最大时,绿色和蓝色最小。这些是三原色,所有颜色都是它的混合物。因此每个对象都有自己的反射属性组合,由LDR检测到的两种或更多颜色在串行监视器上显示响应
步骤5:注意事项:
DVD和CD驱动激光具有非常小的波长,因此对眼睛和皮肤有害。所以不要给它供电或专注于这样的区域。.
-
检测器
+关注
关注
1文章
863浏览量
47678 -
DVD
+关注
关注
3文章
134浏览量
61927
发布评论请先 登录
相关推荐
评论