Arduino版本 DFrobot mind+图形化模块自定义添加库–rc522(RFID)
一、软件准备
名称 | 版本 |
---|---|
Mind+ | 最新 |
VS code(这个没硬性要求) | 最新 |
二、硬件准备
名称 | 数量 |
---|---|
Arduino uno | 一块 |
MFRC522 | 一块 |
IC卡 | 一块 |
杜邦线 | 若干 |
三、项目开始
1、相关参考文章
DF官方参考链接:https://mindplus.dfrobot.com.cn/ext-api#target_10
DF官方学习视频参考:https://www.bilibili.com/video/BV1yE411V7zf?p=2
oled12864样例库: https://gitee.com/dfrobot/ext-oled12864.git
PS:希望读者认真看完官方的相关参考文献,在里面会介绍相关的block的定义和相关函数的用法,在这里不做过多的解释。
2、config.json文件修改
(1)demo:
RC522:
{
"name": {
"zh-cn": "rc522读卡器",
"en": "rc522"
},
"description": {
"zh-cn": "rc522读卡器",
"en": "rc522"
},
"author": "litp",
"email": "2505145537@qq.com",
"license": "MIT",
"isBoard": false,
"id": "rc522",
"version": "0.0.1",
"platform": [
"win"
],
"asset": {
"arduinoC": {
"dir": "arduinoC/",
"version": "0.0.1",
"board": [
"microbit",
"esp32",
"arduino"
],
"main": "main.ts"
}
}
}
3、添加相关库
这里需要注意你的主控是什么版型,这里使用arduino UNO,掌控板一般用python,ESP32一般和arduino一样,注意库的兼容性
PS:注意要放在一个文件夹里面。
3、相关引脚定义和使用
4、编写mian.ts
这里的相关细节请看官方的文档和相关视频,在上面有相关的链接。
arduino版RC522相关代码:
enum SIZE {
//% block="29*29"
1,
//% block="58*58"
2
}
enum LINE {
//% block="1"
1,
//% block="2"
2,
//% block="3"
3,
//% block="4"
4
}
enum BTN {
//% block="A"
A,
//% block="B"
B,
//% block="A+B"
AB
}
//% color="#AA278D" iconWidth=50 iconHeight=40
namespace rc522 {
//% block="rc522init" blockType="command"
export function rc522_init(parameter: any, block: any) {
Generator.addInclude('rc522_initinclude', '#include<rfid1.h>');
Generator.addObject(`rc522_initobject`, `RFID1`, `rfid;`);
Generator.addObject(`rc522_initobject1`, `uchar`, `serNum[5];`);
}
//% block="rc522setup" blockType="command"
export function rc522_setup(parameter: any, block: any) {
Generator.addSetup(`rfid.begin`, `rfid.begin(7, 5, 4, 3, 6, 2);`);
Generator.addSetup(`delay`, `delay(100);`);
Generator.addSetup(`rfid.init`, `rfid.init();`);
}
//% block="rc522_readfail" blockType="command"
export function rc522_readfail(parameter: any, block: any) {
Generator.addCode(`
uchar status;
uchar str[MAX_LEN];
// Search card, return card types
status = rfid.request(PICC_REQIDL, str);
if (status != MI_OK){
return;
}
// Show card type
rfid.showCardType(str);
//Prevent conflict, return the 4 bytes Serial number of the card
status = rfid.anticoll(str);`);
}
//% block="rc522_readsuccess" blockType="command"
export function rc522_readsuccess(parameter: any, block: any) {
Generator.addCode(`
if (status == MI_OK){
Serial.print("The card's number is: ");
memcpy(serNum, str, 5);
rfid.showCardID(serNum);//show the card ID
Serial.println();
Serial.println();
}
delay(500);
rfid.halt(); //command the card into sleep mode`);
}
}
5、相关block的中文添加
6、第三方自定义用户库添加
本项目相关的代码下载链接: