|
|
本帖最后由 jasonqoo0622 于 2013-8-12 11:23 编辑
各位大家好
小弟最近在網路上面買了F100 RFID讀寫卡模組MFRC522(如下圖)
小弟使用的是Arduino Uno
並且想要試著使用這個讀寫卡模組讀取RFID的資料
我嘗試使用賣家給的程式碼並且依照網路上的資料去對腳位
可是在serial print卻都沒有反應
不知道是不是小弟腳位對應上有問題 或是賣家提供的程式碼有問題
想上來請教大家 謝謝~
http://wenku.baidu.com/view/64c10a10a300a6c30c229fb0?fr=prin
這是賣家提供的資訊
小弟連接腳位的方式是
F100 Arduino Uno
VCC3V3 <=> 3.3V
UART_RX <=> Digital Pin 1(TX)
UART_TX <=> Digital Pin 0(RX)
GND <=> GND
中間Pin1 Pin0相對應的TX RX我有交替換過去嘗試
以下是程式碼:
int led = 13;
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
}
char gBuffer[128];
int gIndex=0;
void readLine(){
gIndex=0;
while(true){
int iAvailable = Serial.available();
if(iAvailable > 0){
for(int i=0; i<iAvailable; i++){
gBuffer[gIndex] = Serial.read();
gIndex++;
}
if(gBuffer[gIndex-1] == '\r'){
return;
}
}
}
}
void printBuffer(){
for(int i=0; i<gIndex; i++){
Serial.print(gBuffer);
}
//parse data here
}
boolean atPrint(){
Serial.print("at+print\r");
readLine();
String response = gBuffer;
if(response.indexOf("+print") != -1){
printBuffer();
return true;
}
return false;
}
boolean atSet(){
Serial.print("at+set block=04 number=01\r");
readLine();
String response = gBuffer;
if(response.indexOf("+set") != -1){
printBuffer();
return true;
}
return false;
}
boolean atQuery(){
Serial.print("AT+QUERY\r");
readLine();
String response = gBuffer;
if(response.indexOf("FAIL") != -1){
return false;
}
if(response.indexOf("+query") != -1){
printBuffer();
return true;
}
return false;
}
boolean atRead(){
int iNumber = 1;
Serial.print("AT+READ number=01\r");
readLine();
String response = gBuffer;
if(response.indexOf("FAIL") != -1){
return false;
}
if(response.indexOf("+read") == -1){
return false;
}
printBuffer();
//the read times depends on the read block number
for(int i=0; i<iNumber; i++){
readLine();
response = gBuffer;
if(response.indexOf("FAIL") != -1){
return false;
}
if(response.indexOf("+read") == -1){
return false;
}
printBuffer();
}
return true;
}
boolean atWrite(){
Serial.print("AT+WRITE data=12345678901234567890123456789012\r");
readLine();
String response = gBuffer;
if(response.indexOf("FAIL") != -1){
return false;
}
if(response.indexOf("+write") == -1){
return false;
}
printBuffer();
//read result
readLine();
response = gBuffer;
if(response.indexOf("FAIL") != -1){
return false;
}
if(response.indexOf("+write") == -1){
return false;
}
printBuffer();
return true;
}
void blink(int num){
for(int i=0; i<num; i++){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
}
}
void loop(){
blink(2);
if(atPrint() == true){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
}else{
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
delay(2000);
blink(4);
if(atSet() == true){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
}else{
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
delay(4000);
blink(8);
if(atQuery() == true){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
}else{
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
delay(4000);
blink(3);
if(atRead() == true){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
}else{
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
delay(4000);
blink(6);
if(atWrite() == true)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
}else{
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
delay(2000);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|