|
本帖最后由 wukongxuetang 于 2015-7-31 14:08 编辑
在坊子里搜远红外接近开关,却没有搜到相关的内容,估计是大家都是高手,不懈于做这种低水准的硬件,再说在T宝上买一个也就10几元,对玩arduino的土豪们来说确实不算什么,可仔细想想就不对味道了,10几元就可以买个arduino nano或者mini pro了。
可成本才多少呢(不要跟我说什么放大电路,稳压电路,调节电阻,比较电路什么的),做项目开发很多时候就是够用就好,一个板子上弄几十个红外开关,T宝上的这模块就只能呵呵了。
一对940红外发射接收管,成本在0.6,22k电阻和200欧姆电阻各一个,成本估计不会超过0.4元,如果您是在孔孔板上测试,需要连接到arduino模拟口导线一根,连接5v导线一根,连接到gnd的导线一根。
为了做项目,在网上参考了不少的线路,简单的复杂的,能用的不能用的,敏感的不敏感的,最终选择的方案图片如下。
上面电阻33-200均可,另外一个理论上10k就可,用22k也没问题,在模拟口中读取到的数字在900-1022左右,当远红外接受管接收到红外信号时候,模拟口数字最低到7左右,测试中模拟口数字在800-900左右有灵敏感应变化。
利用上面变化,可以通过条件判断对RBG全彩灯以及机器人距离感应做出不同判断。
- // the setup function runs once when you press reset or power the board
- int chuv;
- #include "Tlc5940.h"
- int colorR;
- int colorG;
- int colorB;
- int dtime=2;
- void setup() {
- Tlc.init();
- pinMode(A4,INPUT);
- pinMode(2,OUTPUT);
- chuv=analogRead(A4);
- Serial.begin(115200);
- }
- // the loop function runs over and over again forever
- void loop() {
- Tlc.setAll(0);
- Tlc.update();
- digitalWrite(2,HIGH);
- int ledr=1;
- int ledg=2;
- int ledb=3;
- int ad=analogRead(A4);
- if (ad>chuv-100){
- setColor(ledr,ledg,ledb,255,0,1);
- }
- if (ad>chuv-200&&ad<=chuv-100){
- setColor(ledr,ledg,ledb,5,255,33);//绿
- }
- if (ad<=chuv-200){
- setColor(ledr,ledg,ledb,243,0,25);
- }
- }
- void setColor(int redPin,int greenPin,int bluePin,int red, int green, int blue)
- {
- int red1=map(red,0,255,0,4095) ;
- Tlc.set(redPin, red1);
- int green1=map(green,0,255,0,4095) ;
- Tlc.set(greenPin, green1);
- int blue1=map(blue,0,255,0,4095) ;
- Tlc.set(bluePin, blue1);
- Tlc.update();
- delay(dtime);
- }
复制代码
特殊说明,项目代码中用了TLC5940,在项目中用d2做电源正,a4做模拟口,tlc5940的1,2,3对应rgb灯的rbg脚,rgb各串一个200欧电阻。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|