Arduino版本 DFrobot mind+图形化模块自定义添加库--rc522(RFID)

2023-10-13 06:10

本文主要是介绍Arduino版本 DFrobot mind+图形化模块自定义添加库--rc522(RFID),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 IDSerial.println();Serial.println();}
delay(500);rfid.halt(); //command the card into sleep mode`);}
}
5、相关block的中文添加

在这里插入图片描述

6、第三方自定义用户库添加

在这里插入图片描述

本项目相关的代码下载链接:

四、效果展示

1、mind+ IDE图形效果

在这里插入图片描述

2、下载代码效果

在这里插入图片描述

3、测试效果

这篇关于Arduino版本 DFrobot mind+图形化模块自定义添加库--rc522(RFID)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201290

相关文章

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入