基于arduino uno 开发板制作的智能书包,当时收短视频启发,集合自动售货机的代码和RC522 读卡模块代码结合制作,现基本功能可以实现 ,目前代码部分尚不稳定需要继续改进

//一个智能书包小发明
//用干簧管检测书包开合
//用MFRC522检测每一本数的定义,用一张IC卡设置为课程表
//1打开书包刷卡程序运行
//2刷课程表,如果没有刷课表则语音提醒
//3放入课本每张课本贴一个IC卡用作识别,根据课表放入相对应课本如果课本不全,关闭书包出发干簧管则报警
//本次发明使用 arduion uno  8900语音模块一个 干簧管开关一个
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>#define SS_PIN 10
#define RST_PIN 9
//#define button_delay 5            //单按钮消除抖动延时
//#define button_every_delay 50      //多按钮操作间隔//io高低点吧状态标志位,0代表低电平,1代表高电平
//bool io_flag[3]={0,0,0};//按钮变化标志位,0代表无变化,1代表有变化
//bool button_flag[3]={0,0,0};int i;
int audo1= 2 ;  //语音模块
int audo2= 3 ;
int audo3= 4 ;
int audo4= 5 ;
int audo5= 6 ;
int audo6= 8 ;
int audo7= 9 ;
int LED=8;
int reed_switch= 7 ; //干簧管开关
int master;
int reed_status; //干簧管开关
MFRC522 rfid(SS_PIN, RST_PIN); //实例化类
Servo myservo; //实例化舵机// 初始化数组用于存储读取到的NUID
byte nuidPICC[4];
String DB[4] = "";
byte firstNum1[4] = {0,0,0,0}; //数据存储器
byte firstNum2[4]= {0,0,0,0};
byte firstNum3[4]= {0,0,0,0};
byte firstNum4[4] = {0,0,0,0};long time_last=0;void printHex(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : "");Serial.print(buffer[i], HEX);}
}void printDec(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : "");Serial.print(buffer[i], DEC);}
}void gaodianping(){//语音模块阵列
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}void one(){
digitalWrite(audo1,LOW);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void two(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,LOW);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void three(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,LOW);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void  four(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,LOW);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void five(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,LOW);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void six(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,LOW);
digitalWrite(audo7,HIGH);
delay(1000);}
void seven(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,LOW);
delay(1000);}
void eight(){
digitalWrite(audo1,LOW);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,LOW);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(1000);}
void nine(){
digitalWrite(audo1,HIGH);
digitalWrite(audo2,LOW);
digitalWrite(audo3,LOW);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);
delay(3000);
digitalWrite(audo1,HIGH);
digitalWrite(audo2,HIGH);
digitalWrite(audo3,HIGH);
digitalWrite(audo4,HIGH);
digitalWrite(audo5,HIGH);
digitalWrite(audo6,HIGH);
digitalWrite(audo7,HIGH);}void duka_jiance(){  //读卡检测 感谢互联网平台,感谢原作者
if ( ! rfid.PICC_IsNewCardPresent())return;// 验证NUID是否可读if ( ! rfid.PICC_ReadCardSerial())return;MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);// 检查是否MIFARE卡类型if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  piccType != MFRC522::PICC_TYPE_MIFARE_1K &&piccType != MFRC522::PICC_TYPE_MIFARE_4K) {Serial.println("不支持读取此卡类型");return;}// 将NUID保存到nuidPICC数组for (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];}   Serial.print("十六进制UID:");printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();Serial.print("十进制UID:");printDec(rfid.uid.uidByte, rfid.uid.size);Serial.println();// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡rfid.PICC_HaltA();// 停止读卡模块编码rfid.PCD_StopCrypto1();}bool kebiao_jiance(){//检测课表
if (nuidPICC[0]==0x15&&nuidPICC[1]==0x52&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){for (byte i = 0; i < 4; i++) {DB[i] = nuidPICC[i];}   Serial.println("周一课表");master=5;one(); //digitalWrite(audo1,LOW);delay(2000);// gaodianping();//delay(2000);Serial.println("请放作业"); //主要程序//digitalRead(audo2)==LOW;//digitalWrite(audo2,LOW);two();delay(2000);//gaodianping();//delay(2000);}
}void shuxue_jiance(){//检测数学if (nuidPICC[0]==0x53&&nuidPICC[1]==0x2F&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("数学作业");for (byte i = 0; i < 4; i++) {firstNum1[i] = rfid.uid.uidByte[i];}//gaodianping();//digitalWrite(audo3,LOW);  //3//  delay(2000);// gaodianping();three();delay(2000);}
}
void kexue_jiance(){//检测科学if (nuidPICC[0]==0x00&&nuidPICC[1]==0x27&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("科学作业");for (byte i = 0; i < 4; i++) {firstNum4[i] = rfid.uid.uidByte[i];}//digitalWrite(audo1,LOW);//digitalWrite(audo4,LOW);  //4four();delay(2000);// gaodianping();//}
}
void chines_jiance(){//检测语文if (nuidPICC[0]==0x7F&&nuidPICC[1]==0x59&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("语文作业");//digitalWrite(audo2,HIGH);for (byte i = 0; i < 4; i++) {firstNum2[i] = rfid.uid.uidByte[i];}//digitalWrite(audo2,LOW);//delay(2000);five();//digitalWrite(audo5,LOW);//5delay(2000);//gaodianping(); }
}
void english_jiance(){//检测英语
if (nuidPICC[0]==0xE5&&nuidPICC[1]==0x6A&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("英语作业");//digitalWrite(audo3,HIGH);for (byte i = 0; i < 4; i++) {firstNum3[i] = rfid.uid.uidByte[i];}//digitalWrite(audo1,LOW);//delay(2000);six();//digitalWrite(audo6,LOW);//6delay(2000);//gaodianping();}
}void setup() {Serial.begin(9600);SPI.begin(); // 初始化SPI总线rfid.PCD_Init(); // 初始化 MFRC522//pinMode(reed_switch,INPUT);// pinMode(LED,OUTPUT);pinMode(audo1,OUTPUT);pinMode(audo2,OUTPUT);pinMode(audo3,OUTPUT);pinMode(audo4,OUTPUT);pinMode(audo5,OUTPUT);pinMode(audo6,OUTPUT);pinMode(audo7,OUTPUT);master=0;// put your setup code here, to run once:/*Serial.begin(9600);//2到4为3个按钮*/
}void loop() {
//gaodianping();// put your main code here, to run repeatedly://anjian_jiance();//if(io_flag[0]||io_flag[1]||io_flag[2])    //|| 或(or)逻辑运算 特点:两个条件有一个是假时,输出为假if(digitalRead(7)==1){Serial.println("书包打开");/**/delay(1000);duka_jiance();delay(1000);while(!kebiao_jiance()){Serial.println("BUG");//master=10;if(firstNum1[1]>=01&&firstNum2[1]>=01&&firstNum3[1]>=01&&firstNum4[1]>=01)  //if (nuidPICC[0]==0xE5&&nuidPICC[1]==0x6A&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){seven();delay(2000);Serial.println("请关闭书包");master=10;delay(5000);while(digitalRead(7)==0){if((millis()-time_last)>5000){Serial.println("5秒倒计时!");}}}elseSerial.println("BUG1");//目前运行不稳定 ,标记一个测试点duka_jiance();english_jiance();gaodianping();duka_jiance();chines_jiance();gaodianping();duka_jiance();kexue_jiance();gaodianping();duka_jiance();shuxue_jiance();gaodianping();
if(master<1){eight();delay(3000);Serial.println("请刷课表");return;}return ;}}Serial.println(master);if(master!=10;master>0){nine();delay(2000);Serial.println("有书本未装入");return ;}}

基于arduino uno 开发板制作的 智能书包项目相关推荐

  1. 基于Arduino Uno开发板制作音乐播放器

    基于Arduino Uno开发板制作音乐播放器 本文将基于Arduino开发板实现一个音乐播放器. 利用Arduino Uno读取sd卡模块中内存卡的音乐,传输信号到扬声器进行播放. 一.项目软硬件简 ...

  2. 基于Arduino Uno开发板的红外遥控开发

    基于Arduino Uno开发板的红外遥控开发 1 准备 1.1 硬件与软件 1.2 走线 2 代码 2.1 ReceiveDump 2.2 SendRawDemo 1 准备 1.1 硬件与软件 单片 ...

  3. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法

    Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法 首先,我们来看一下Arduino UNO开发板的具体引脚排列,如下图所示, 再了解一下三色RGB LED模块,如下图所示 ...

  4. 基于Arduino UNO开发板,超声波模块,直流电机,实现电机驱动

    这:是我的手机,一台能无线充电的华为Mate 30Pro 4G 这:是我的的无线充电器,(虽然速度低,毕竟店家送的) 这是我维持一年多的充电样子,为什么这么做呢......因为无线充电会发烫,毕竟无线 ...

  5. 如何使用Arduino Uno开发板制作超声波测距仪

    测距仪是用于查找从点到最近障碍物的距离的设备.该装置使用超声波技术测量距离.您可以将它视为一种无障碍的电子卷尺,测量范围为2cm至400cm,精度为1cm. Arduino超声波测距仪的典型应用包括停 ...

  6. arduino超声波测距接线图详细_使用Arduino UNO开发板和超声波传感器测量距离

    超声波传感器不仅提供距离测量实用程序,而且没有任何物理接触,但需要我们在无噪音和光线的情况下进行测量,与基于激光的距离测量仪器不同.此外,即使在基于激光的仪器经常降低其效率的日光下,这些仪器也便宜且更 ...

  7. Arduino Uno开发板+电机驱动扩展版CNC Shield V3.0硬件说明

    陈拓 2023/03/24-2023/03/29 1. Arduino CNC Shield V3.00电机驱动扩展版 注意:板子左侧中间的玻璃管是玻封保险丝. Arduino CNC Shield可 ...

  8. 使用Arduino Leonardo开发板制作操纵杆游戏控制器

    在之前的文章中,我们将操纵杆模块与Arduino UNO开发板进行连接,以了解它是如何工作的,并通过左.右.上.下运动控制四个LED指示灯.在本篇文章中,我们将使用操纵杆模块作为游戏手柄或游戏控制器来 ...

  9. 【媒体控制器】开源项目学习笔记(基于Arduino Micro开发板)

    ☑️ 首先说明:本项目基于Arduino Micro 开发板开发的,外设只用到了EC11E1534408无定位旋转编码器. 项目来源:[DIY]自制PC外设-媒体控制器,在英国_哔哩哔哩_bilibi ...

最新文章

  1. 第九章 硬件抽象层:HAL 心得笔记
  2. 自学python该买几本书-自学Python一年,看了几十本书,我发现了这些捷径!
  3. layui对json数据的格式要求
  4. mybatis plus 链式编程查询
  5. 用不同的姿势求逆序对(复习篇)
  6. 前端学习(2454):用户登录
  7. 微信小程序-音频播放-wx.createInnerAudioContext() 每次都是重复播放同一条录音
  8. 推荐系统/计算广告相关资料整理
  9. [100124]红楼梦:林黛玉与北静王【硬盘版】[带全CG存档+攻略]
  10. 深度学习识别手写字体数字
  11. lfs库下载_lua使用lfs.dll库进行文件操作
  12. 使用easywechat调用微信支付
  13. 计算机毕设存档袋子,关于做好2018届毕业论文(设计)材料整理存档的通知
  14. 中国最大规模线下亲子嘉年华举行 350余萌娃遭遇“十万个为什么”
  15. 一个点的经度和纬度,以这个点为圆心,1000米为半径,最大的经度和纬度,最小的经度和纬度...
  16. Windows操作系统安全加固基线检测脚本
  17. 基于ZigBee的家居控制系统的设计与应用
  18. python数组冒号取值(清晰图解)
  19. AIX服务器上设置IIB连接oracle
  20. 入门CG板绘须知:学插画需要学好素描吗?

热门文章

  1. 时间触发嵌入式系统设计模式 读书笔记
  2. 健翔语录——意大利对澳大利亚
  3. 前端机器学习——线性回归
  4. 关于MapStruct使用expression表达式的小坑
  5. free Code Camp Slasher Flick(截断数组)
  6. 腾讯入股山东福瑞达生物,投前估值36亿元,再次加码医美赛道
  7. 联手友盟+打造数据融合“样板间”, 好兔视频成功逆势突围
  8. “裕同集团易普优APS项目启动大会”顺利召开
  9. 对话姚期智:中国人工智能界是怎么被我教出来的?
  10. 如何在github上上传文件