2013-12-26 18:38:42 [显示全部楼层]
6046浏览
查看: 6046|回复: 0

[求教]UNO 实现 Wiegend RFID读卡头时遇到的问题

[复制链接]
本帖最后由 windice 于 2013-12-26 18:46 编辑

先声明,虽然是程序员(虽然不是大牛,但自认有些水平,大大小小也建了几十个站点,处理过实时Lv2证券数据),但是电路也就一初中物理的小白水平
发生了什么请看我慢慢码来~~

主要需求是要由2个刷头头来控制同一个门锁,并且记录是进门时刷还是出门时刷
虽然某宝有现成的控制板,但是太贵了(1K+)而且还有些零零散散奇奇怪怪的需求无法满足,所以打算自己倒腾。
前言到此
=我=是=分=割=线==============================================
总之从最基础的来,买来板子和各种组件,Git去找读卡头的控制库,最终靠着传感器扩展版+Wiegand-Protocol-Library-for-Arduino-master.zip的库,实现了输出。
(随便画的接线,用了Nano的原件图能放的比较大,不浪费版面,其它还有开关门磁用的继电器和开关以及显示输出用的LCD,记录时间的时钟等模块就不画了)




我得意的笑~{:3_52:}意的笑~{:3_52:}

第二个读卡头不是收到擒来吗?打开wiegnd库文件,把D0(黄色)和D1(白色)的针脚定义从静态的2/3,改成可配置的动态变量,代码在初始化时分别设置 S1(2,3),S2(7,8);

update,上电,刷卡..........NO~~~二号头读不到东西啊~为什么~~
一定是代码问题,.......没错,看.cpp和.h去.........

  1.         attachInterrupt(0, ReadD0, FALLING);        // Hardware interrupt - high to low pulse
  2.         attachInterrupt(1, ReadD1, FALLING);        // Hardware interrupt - high to low pulse
复制代码


这是什么。。e文不好,看不懂,不过直觉告诉我,一定是这边有问题。万能的google~~~
什么什么。。。我看看我看看~~  外部中断?什么玩意?读数据用的?不管了,只要知道是干什么的就可以了,既然0,1能读,那么还2,3不就好了吗?。。。等等。。。为什么是0和1,明明让我接2和3的啊,这数字是怎么来的???万能的google~~~

http://arduino.cc/en/Reference/AttachInterrupt

我的天~~~Uno, Ethernet只有一组可以引起中断的针脚,只有2,3~摔那我玩什么啊~
=头=脑=冷=静=一=下===============================================
冷静了2天的我突然发现,既然我能从按钮那边读取到信号,那么我在加上一个标志位,在中断的时候读取标志不就好吗,于是又开始敲打代码



  1. int            WIEGAND::A1 = 4;
  2. int            WIEGAND::A2 = 5;
  3. int            WIEGAND::A1St = 0;
  4. int            WIEGAND::A2St = 0;
  5. void WIEGAND::ReadD1()
  6. {
  7.     A1St = digitalRead(A1);
  8.     A2St = digitalRead(A2);
  9. .......
复制代码


在中断时读取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读卡头的库的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail