當(dāng)前位置:
首頁(yè) >
基于arduino uno 开发板制作的 智能书包项目
發(fā)布時(shí)間:2023/12/20
51
豆豆
生活随笔
收集整理的這篇文章主要介紹了
基于arduino uno 开发板制作的 智能书包项目
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
基于arduino uno 開發(fā)板制作的智能書包,當(dāng)時(shí)收短視頻啟發(fā),集合自動(dòng)售貨機(jī)的代碼和RC522 讀卡模塊代碼結(jié)合制作,現(xiàn)基本功能可以實(shí)現(xiàn) ,目前代碼部分尚不穩(wěn)定需要繼續(xù)改進(jìn)
//一個(gè)智能書包小發(fā)明 //用干簧管檢測(cè)書包開合 //用MFRC522檢測(cè)每一本數(shù)的定義,用一張IC卡設(shè)置為課程表 //1打開書包刷卡程序運(yùn)行 //2刷課程表,如果沒(méi)有刷課表則語(yǔ)音提醒 //3放入課本每張課本貼一個(gè)IC卡用作識(shí)別,根據(jù)課表放入相對(duì)應(yīng)課本如果課本不全,關(guān)閉書包出發(fā)干簧管則報(bào)警 //本次發(fā)明使用 arduion uno 8900語(yǔ)音模塊一個(gè) 干簧管開關(guān)一個(gè) #include <SPI.h> #include <MFRC522.h> #include <Servo.h>#define SS_PIN 10 #define RST_PIN 9 //#define button_delay 5 //單按鈕消除抖動(dòng)延時(shí) //#define button_every_delay 50 //多按鈕操作間隔//io高低點(diǎn)吧狀態(tài)標(biāo)志位,0代表低電平,1代表高電平 //bool io_flag[3]={0,0,0};//按鈕變化標(biāo)志位,0代表無(wú)變化,1代表有變化 //bool button_flag[3]={0,0,0};int i; int audo1= 2 ; //語(yǔ)音模塊 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 ; //干簧管開關(guān) int master; int reed_status; //干簧管開關(guān) MFRC522 rfid(SS_PIN, RST_PIN); //實(shí)例化類 Servo myservo; //實(shí)例化舵機(jī)// 初始化數(shù)組用于存儲(chǔ)讀取到的NUID byte nuidPICC[4]; String DB[4] = ""; byte firstNum1[4] = {0,0,0,0}; //數(shù)據(jù)存儲(chǔ)器 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(){//語(yǔ)音模塊陣列 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(){ //讀卡檢測(cè) 感謝互聯(lián)網(wǎng)平臺(tái),感謝原作者 if ( ! rfid.PICC_IsNewCardPresent())return;// 驗(yàn)證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數(shù)組for (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];} Serial.print("十六進(jìn)制UID:");printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();Serial.print("十進(jìn)制UID:");printDec(rfid.uid.uidByte, rfid.uid.size);Serial.println();// 使放置在讀卡區(qū)的IC卡進(jìn)入休眠狀態(tài),不再重復(fù)讀卡rfid.PICC_HaltA();// 停止讀卡模塊編碼rfid.PCD_StopCrypto1();}bool kebiao_jiance(){//檢測(cè)課表 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("請(qǐng)放作業(yè)"); //主要程序//digitalRead(audo2)==LOW;//digitalWrite(audo2,LOW);two();delay(2000);//gaodianping();//delay(2000);} }void shuxue_jiance(){//檢測(cè)數(shù)學(xué)if (nuidPICC[0]==0x53&&nuidPICC[1]==0x2F&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("數(shù)學(xué)作業(yè)");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(){//檢測(cè)科學(xué)if (nuidPICC[0]==0x00&&nuidPICC[1]==0x27&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("科學(xué)作業(yè)");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(){//檢測(cè)語(yǔ)文if (nuidPICC[0]==0x7F&&nuidPICC[1]==0x59&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("語(yǔ)文作業(yè)");//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(){//檢測(cè)英語(yǔ) if (nuidPICC[0]==0xE5&&nuidPICC[1]==0x6A&&nuidPICC[2]==0xBD&&nuidPICC[3]==0x3C){Serial.println("英語(yǔ)作業(yè)");//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個(gè)按鈕*/ }void loop() { //gaodianping();// put your main code here, to run repeatedly://anjian_jiance();//if(io_flag[0]||io_flag[1]||io_flag[2]) //|| 或(or)邏輯運(yùn)算 特點(diǎn):兩個(gè)條件有一個(gè)是假時(shí),輸出為假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("請(qǐng)關(guān)閉書包");master=10;delay(5000);while(digitalRead(7)==0){if((millis()-time_last)>5000){Serial.println("5秒倒計(jì)時(shí)!");}}}elseSerial.println("BUG1");//目前運(yùn)行不穩(wěn)定 ,標(biāo)記一個(gè)測(cè)試點(diǎn)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("請(qǐng)刷課表");return;}return ;}}Serial.println(master);if(master!=10;master>0){nine();delay(2000);Serial.println("有書本未裝入");return ;}}總結(jié)
以上是生活随笔為你收集整理的基于arduino uno 开发板制作的 智能书包项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MSB/LSB(big endian/l
- 下一篇: 操盘手如何在牛市中基于MACD进行选股