本帖最后由 艰苦奋斗 于 2015-7-25 19:23 编辑
- //参考:极客工坊bg1lsy ([email][email protected][/email])
- //修改: chenrj 通过键盘接口输出RFID的卡号,可用于刷卡考勤等。
- #include <SPI.h>
- #include <RFID.h>
- #define bee 3 //蜂鸣器接口
- /*
- RFID -> Arduino UNO
- -------------------
- 3.3V -> 3.3V
- RST -> D5
- GND -> GND
- IRQ -> NC
- MISI -> D12
- MOSI -> D11
- SCK -> D13
- SDA -> D10
- 注意:上面接线方法只适用UNO或跟UNO兼容的硬件SPI接口的板卡,
- 对LEONARDO这种板,因为SPI接口没接到IO口,上面的接线方法不适用
- Leonardo板接法如下:
- RFID leonado ICSP接口
- -------------------
- 3.3V -> 3.3V
- RST -> D5
- GND -> ICSP 6脚
- IRQ -> NC
- MISI -> ICSP 1脚
- MOSI -> ICSP 4脚
- SCK -> ICSP 3脚
- SDA -> D10
- */
- RFID rfid(10,5); //RFID(int chipSelectPin, int NRSTPD); D10 应接RFID读卡器的片选(SDA),D5接复位(RST)脚
- void setup()
- {
- pinMode(bee,OUTPUT);
- Serial.begin(9600);
- SPI.begin();
- rfid.init();
- beep();
- beep();
- beep();
- Keyboard.begin();
- }
- void beep()
- { tone(bee,2000,100); //无源蜂鸣器,2KHz, 100毫秒
- }
- void loop()
- {
- //找卡
- if (rfid.isCard()) {
- Serial.println("Find the card!");
- //读取卡序列号
- beep();
- if (rfid.readCardSerial()) {
- Serial.print("The card's number is : ");
- Serial.print(rfid.serNum[0],HEX);
- Serial.print(rfid.serNum[1],HEX);
- Serial.print(rfid.serNum[2],HEX);
- Serial.print(rfid.serNum[3],HEX);
- Serial.print(rfid.serNum[4],HEX);
- Serial.println(" ");
- Keyboard.print(rfid.serNum[0],HEX);
- Keyboard.print(rfid.serNum[1],HEX);
- Keyboard.print(rfid.serNum[2],HEX);
- Keyboard.print(rfid.serNum[3],HEX);
- Keyboard.print(rfid.serNum[4],HEX);
- Keyboard.print("\n");
- }
- //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
- rfid.selectTag(rfid.serNum);
- }
- rfid.halt();
- }
复制代码 库文件参考下面的贴子:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=4719&highlight=rfid |