創(chuàng)新互聯(lián)主營羅江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),羅江h(huán)5微信小程序開發(fā)搭建,羅江網(wǎng)站營銷推廣歡迎羅江等地區(qū)企業(yè)咨詢文章目錄
在學(xué)完C語言之后,在學(xué)校學(xué)長的建議之下開始了Arduino的學(xué)習(xí),其實(shí)本人剛開始對于硬件方面其實(shí)毫無興趣,但學(xué)長說我們學(xué)習(xí)需要得到及時(shí)的反饋,就像工作了需要拿到工資一樣,于是在學(xué)習(xí)了一周的Arduino之后抱著試一試的心態(tài)做出了這個(gè)指紋鎖。
一、需要的制作材料1:Arduino nano開發(fā)板一塊? 2:AS608指紋模塊? 3:SG90舵機(jī)若干(這個(gè)取決于到時(shí)連接門栓時(shí)的連接方式) 4:0.96寸OLED屏幕一塊? 5:DHT11溫濕度傳感器? 6 杜邦線若干、面包板一塊
二、代碼編寫邏輯(部分) 1.需要引入的庫及引腳定義//溫濕度傳感器模塊
#include"DHT.h"
#include#define DHTPIN ?2//將溫濕度傳感器連接到二號引腳
#define DHTTYPE ?DHT11
DHT dht(DHTPIN,DHTTYPE);
//OLED屏幕模塊
#include//屏幕大小為0.96的 才能用,驅(qū)動(dòng)芯片為SSD1306
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);
//電機(jī)模塊SG90
#includeServo myservo; ?//定義電機(jī)?
int pos = 0;?
//指紋鎖模塊AS608
#include
SoftwareSerial mySerial(11, 12);//將指紋連接到11,12號引腳
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
#else
#define mySerial Serial1
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
2.代碼主體部分代碼如下(示例):
void setup()
{
? dht.begin();
? u8g2.begin();
? myservo.attach(9); //將電機(jī)連到9號引腳上
? delay(100);
? Serial.begin(9600);
? while (!Serial);
? delay(100);
? Serial.println(F("\n\n準(zhǔn)備開始指紋錄入"));?
? finger.begin(57600);
? if (finger.verifyPassword()) {
? ? Serial.println(F("發(fā)現(xiàn)指紋鎖已連接!"));
? } else {
? ? Serial.println(F("發(fā)現(xiàn)指紋鎖沒有連接"));
? ? while (1) { delay(1); }
? }
? finger.getTemplateCount();
? if (finger.templateCount == 0) {
? ? Serial.print(F("該設(shè)備沒有錄入任何指紋,請錄入后再操作"));
? }
? else {
? ? Serial.println(F("正在等待已被錄入指紋"));
? ? ? Serial.print(F("該設(shè)備已包括:")); Serial.print(finger.templateCount); Serial.println(F("個(gè)指紋"));
? }
??
}
uint8_t readnumber(void) {
? uint8_t num = 0;
? while (num == 0) {
? ? while (! Serial.available());
? ? num = Serial.parseInt();//分析串口數(shù)據(jù)中的信息,并賦值給變量num
? }
? return num;
}
void loop() ? ? ? ? ? ? ? ? ??
{
MENNU();?
?while(Serial.available()>0)
? {
? Serial.println(F("準(zhǔn)備好錄入一個(gè)指紋!"));
? Serial.println(F("請輸入指紋編號(1到6)!"));
? id = readnumber();
? if (id == 0) {
? ? ?return;
? }
? Serial.print(F("指紋ID #"));
? Serial.println(id);
? if(id==1||id==2||id==3||id==4||id==5||id==6)
? {
? ? getFingerprintEnroll();
? ? delay(100);
? }
if(id==66)
{
Del_Finger();
}
? }?
?while(Serial.available()==0){
? finger.getTemplateCount();
? if (finger.templateCount == 0) {
? ? Serial.print(F("設(shè)備不包括任何指紋,請先錄入指紋"));
? }
? else {
? ? Serial.println(F("等待正確的指紋"));
? ? ? Serial.print(F("該設(shè)備包括")); Serial.print(finger.templateCount); Serial.println(F("個(gè)指紋"));
? }
?Detect_finger();?
}
}
上面的代碼主體部分中調(diào)被調(diào)用的函數(shù)代碼沒有詳細(xì)列出,對于getFingerprintEnroll()、Del_Finger()、Detect_finger()三個(gè)函數(shù)其實(shí)本人與Arduino中的示例庫函數(shù)是大體上相同的,本人花費(fèi)的最多時(shí)間就是去看懂“#include ”這個(gè)庫里面的兩個(gè)示例函數(shù)enroll(儲存指紋)和fingerprint(驗(yàn)證指紋)兩大部分,弄清楚每段代碼的含義,那么你就可以將兩者結(jié)合起來了。
完整代碼鏈接:
http://t.csdn.cn/3AwlM
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧