复制并粘贴到您的代码
/ ******************************************
#定义中2 / /这是Arduino引脚,我们使用激活1-4步进电机线圈的定义# PIN2 3 #定义引脚定义4 # 4 5
#定义延迟时间5 / /延迟在毫秒的时间来控制步进电机的延迟时间。/我们的试验表明,8是最快的,可以得到可靠的W / O遗漏的步骤
#定义按钮6 / /确定按钮关闭锁
#传动比64定义const int stepsperrevolution = 2048;const int mysteps = 255;
#包括/包括图书馆的RC522 #包括“fastled。H /包括图书馆的fastled #包括/用于通信的模块通过SPI
#定义sdapin 10 / / RFID模块SDA引脚连接到该引脚定义10 # resetpin 8 / / RFID模块RST引脚连接到Uno 8针
/ / 3 / / #定义蜂鸣器引脚3连接到引脚的Buzzer
字节foundtag;//变量用来检查标签发现字节readtag;//变量用来存储读取标签信息的字节防撞价值tagdata [ max_len ];//变量用来存储完整的标签数据字节tagserialnumber [ 5 ];//变量用来存储唯一标识编号字节goodtagserialnumber [ 5 ] = { 0xe4,0xd2,0x51,0xeb };//标签序列号我们正在寻找
MFRC522 NFC(sdapin,resetpin);//初始化的图书馆使用UNO引脚以上的声明
无效setup() { //初始化8引脚作为输出:pinmode(PIN1,输出);pinMode(PIN2码,输出);pinMode(PIN3输出);pinMode(4、输出);
pinmode(按钮、输入);//设置pinmode的按钮(按钮,digitalwrite高);//定义按钮高/串口。开始(9600);
SPI。begin();串行。开始(9600);//串口监控
/ /开始寻找RFID模块串口out.println(“寻找RFID读写器”);NFC。begin();字节版本= NFC。getfirmwareversion();//变量存储模块的固件版本
/如果找不到一个RFID模块如果(!版){串行打印(“没有找到RC522板。”);而(1);//等到RFID模块发现}
//如果发现打印RFID模块的串口信息,打印(“发现芯片RC522”);串口打印(“固件版本:0x”);串行。println(版本,HEX);串行。println();}
loop() { void
字符串goodtag =“假”;//变量用来确认好标签检测
/ /查看检测/如果是一个标签,然后变foundtag将包含“mi_ok”foundtag = NFC。requesttag(mf1_reqidl,tagdata);
如果(foundtag = = mi_ok){延迟(200);
//得到正确的标签防碰撞的价值readtag = NFC读取信息。防撞(tagdata memcpy();tagserialnumber,tagdata,4);/ /写标签信息的tagserialnumber变量
串行out.println(“标签检测。”);串口打印(“编号:”);为(int i = 0;i < 4;i++){ //循环打印序列号的串口监视串口打印(tagserialnumber [我],HEX);串口打印(。“,”);}串行out.println(“”);println()系列;
/ /检查如果发现标签有正确的序号,我们正在寻找(int i = 0;i < 4;i++){ if(goodtagserialnumber [我]!= tagserialnumber [我]){突破;//如果不相等,则打破““环}如果(我= = 3){ //如果我们能打到4环然后标签序列号匹配goodtag =“true”;} }如果goodtag = =“真(”){串行out.println(“成功!!!!!!!”);//如果好的标签,启动电机系列。println();int numberofsteps = mysteps;step_off();//将所有线圈脱落而(numberofsteps > 0){ forward();/ /前进numberofsteps --;/倒计数步骤}数延迟(100);} fastled。show();为(int Y = 0;Y<3;Y + +){
延迟(50);//延迟1ms
延迟(50);} //延迟1ms延时(1500);}否则{串行out.println(“标签不接受......:(“);println()系列;
}
如果(//读出数字接口的值(按钮)= =低){ //如果按钮按下时,启动电机step_off();//将所有线圈从int numberofsteps = mysteps;而(numberofsteps > 0){ backward();/ /后退numberofsteps --;/ /倒计数步骤串行数。println(“低”);}延迟(100);} }
复制并粘贴到这一功能选项卡
/ /这些功能设置引脚的设置的四个步骤,每个电机的旋转(keepp记住在盒电机减速,
/ /即有许多必要的步骤每旋转
无效step_a() { digitalwrite(中,高);/ /打开线圈1 digitalwrite(PIN2、低);digitalwrite(引脚,低);digitalwrite(4、低);}无效step_b() { digitalwrite(PIN1,低);digitalwrite(PIN2码,高);/ /打开线圈digitalwrite(引脚2、低);digitalwrite(4、低);}无效step_c() { digitalwrite(PIN1,低);digitalwrite(PIN2、低);digitalwrite(引脚,高);/ /打开线圈3 digitalwrite(4、低);}无效step_d() { digitalwrite(PIN1,PIN2码,digitalwrite(低);低);digitalwrite(引脚,低);digitalwrite(4、高);/ /打开线圈4 }无效step_off() { digitalwrite(PIN1,低);/ /电源线圈下digitalwrite(PIN2、低);digitalwrite(引脚,低);digitalwrite(4、低);}#p#分页标题#e#
/ /这些功能运行以上配置在正向和反向顺序/步进电机的方向取决于线圈接通顺序。无效forward() { //一颗牙了step_a();延迟(延迟时间);step_b();延迟(延迟时间);step_c();延迟(延迟时间);step_d();延迟(延迟时间);}
无效backward() { //一齿落后step_d();延迟(延迟时间);step_c();延迟(延迟时间);step_b();延迟(延迟时间);step_a();延迟(延迟时间);}
启动串口监控和运行代码。
按你的卡到传感器和写标签信息。
你的标签信息代替接受标签信息