[求教]UNO 实现 Wiegend RFID读卡头时遇到的问题
本帖最后由 windice 于 2013-12-26 18:46 编辑先声明,虽然是程序员(虽然不是大牛,但自认有些水平,大大小小也建了几十个站点,处理过实时Lv2证券数据),但是电路也就一初中物理的小白水平
发生了什么请看我慢慢码来~~
主要需求是要由2个刷头头来控制同一个门锁,并且记录是进门时刷还是出门时刷
虽然某宝有现成的控制板,但是太贵了(1K+)而且还有些零零散散奇奇怪怪的需求无法满足,所以打算自己倒腾。
前言到此
=我=是=分=割=线==============================================
总之从最基础的来,买来板子和各种组件,Git去找读卡头的控制库,最终靠着传感器扩展版+Wiegand-Protocol-Library-for-Arduino-master.zip的库,实现了输出。
(随便画的接线,用了Nano的原件图能放的比较大,不浪费版面,其它还有开关门磁用的继电器和开关以及显示输出用的LCD,记录时间的时钟等模块就不画了)
http://for-bbs.u.qiniudn.com/1.jpg
我得意的笑~{:3_52:}意的笑~{:3_52:}
第二个读卡头不是收到擒来吗?打开wiegnd库文件,把D0(黄色)和D1(白色)的针脚定义从静态的2/3,改成可配置的动态变量,代码在初始化时分别设置 S1(2,3),S2(7,8);
http://for-bbs.u.qiniudn.com/2.jpg
update,上电,刷卡..........NO~~~二号头读不到东西啊~为什么~~
一定是代码问题,.......没错,看.cpp和.h去.........
attachInterrupt(0, ReadD0, FALLING); // Hardware interrupt - high to low pulse
attachInterrupt(1, ReadD1, FALLING); // Hardware interrupt - high to low pulse
这是什么。。e文不好,看不懂,不过直觉告诉我,一定是这边有问题。万能的google~~~
什么什么。。。我看看我看看~~外部中断?什么玩意?读数据用的?不管了,只要知道是干什么的就可以了,既然0,1能读,那么还2,3不就好了吗?。。。等等。。。为什么是0和1,明明让我接2和3的啊,这数字是怎么来的???万能的google~~~
http://for-bbs.u.qiniudn.com/06112315-d90c620a5f8a483c8b950f710d61a1ab.png
http://arduino.cc/en/Reference/AttachInterrupt
我的天~~~Uno, Ethernet只有一组可以引起中断的针脚,只有2,3~摔那我玩什么啊~
=头=脑=冷=静=一=下===============================================
冷静了2天的我突然发现,既然我能从按钮那边读取到信号,那么我在加上一个标志位,在中断的时候读取标志不就好吗,于是又开始敲打代码
int WIEGAND::A1 = 4;
int WIEGAND::A2 = 5;
int WIEGAND::A1St = 0;
int WIEGAND::A2St = 0;
void WIEGAND::ReadD1()
{
A1St = digitalRead(A1);
A2St = digitalRead(A2);
.......
http://for-bbs.u.qiniudn.com/3.jpg
在中断时读取2个针脚的电平信号
然后update,上电,刷2号头~输出A1st=0,A2St=1 ,哈哈哈哈~~~成功了~~成功啦~~~哈哈哈哈 ~~~让爷多玩几次,
刷1#~A1st=1,A2St=0
刷2#~A1st=0,A2St=1
刷1#~A1st=1,A2St=0
刷2#~A1st=0,A2St=1
刷1#~A1st=1,A2St=0
刷2#~A1st=0,A2St=1
刷1#~A1st=1,A2St=0
刷2#~A1st=0,A2St=1
刷1#~A1st=1,A2St=1
刷2#~A1st=1,A2St=1
刷1#~A1st=1,A2St=1
刷2#~A1st=1,A2St=1
怎么回事,怎么2个识别针脚都有电了。。。
我抓耳朵啊~~~我挠腮帮子啊~~~我看着电路想破头啊。。。
啊,用D1(白色线)做识别的 1St(紫色)和2St(棕色) 是在一个回路里,估计是逆流之类的了。。。知道问题以后就。。。。就没办法啦~~
==========================================================================
重点来啦。实现目标的原理我是懂啦,但是怎么去实现他,知识量有些捉急啊~~~,我想想法整理如下
1.1#,2# 的D1分出一条信号到4,5针脚,用来区分设备
2..由于D1共用 3号针脚,任意D1有信号后都影响到了用来做标记的4,5针脚。
3.怎么让 某D1有信号时切断另外一条D1的链路
4.数字针脚AX怎么用,能实现这种需求吗?或者有没有基于数字针脚来实现Wiegend26读卡头的库的
页:
[1]