Ⅰ 什麼是arino
Arino是一款便捷靈活、方便上手的開源電子原型平台,包含硬體(各種型號的Arino板)和軟體(Arino IDE)。它適用於愛好者、藝術家、設計師和對於「互動」有興趣的朋友們。
Arino是一個基於開放原始碼的軟硬體平台,構建於開放原始碼simple I/O介面版,並且具有使用類似Java、C語言的Processing/Wiring開發環境。
Arino包含兩個主要的部分:硬體部分是可以用來做電路連接的Arino電路板;另外一個則是Arino IDE,你的計算機中的程序開發環境。你只要在IDE中編寫程序代碼,將程序上傳到Arino電路板後,程序便會告訴Arino電路板要做些什麼了。
Arino能通過各種各樣的感測器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境。板子上的微控制器可以通過Arino的編程語言來編寫程序,編譯成二進制文件,收錄進微控制器。對Arino的編程是利用 Arino編程語言 (基於 Wiring)和Arino開發環境(基於 Processing)來實現的。基於Arino的項目,可以只包含Arino,也可以包含Arino和其他一些在PC上運行的軟體,他們之間進行通信 (比如 Flash, Processing, MaxMSP)來實現。
不知道是不是你想要的結果,希望對你有幫助吧!
Ⅱ Arino和51單片機,兩者有什麼關系或區別
區別:
1、arino用的是AVR單片機,AVR單片機跟51單片機內部結構不同(寄存器多少和名稱都 不一樣),編程工具燒寫軟體均不一樣。
2、arino編程將一些輸入輸出方法編成了子程序(庫函數),應用更加方便。
3、arino在軟體開發反面考慮的更多的是功能的實現,而單片機開發還需要考慮相應的外圍電路,和底層軟體。
關系:
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
拓展知識:
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8004單片機,後來隨著Flash rom技術的發展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。
很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
Arino是一款便捷靈活、方便上手的開源電子原型平台。包含硬體(各種型號的Arino板)和軟體(Arino IDE)。由一個歐洲開發團隊於2005年冬季開發。其成員包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它構建於開放原始碼simple I/O介面版,並且具有使用類似Java、C語言的Processing/Wiring開發環境。主要包含兩個主要的部分:硬體部分是可以用來做電路連接的Arino電路板;另外一個則是Arino IDE,你的計算機中的程序開發環境。你只要在IDE中編寫程序代碼,將程序上傳到Arino電路板後,程序便會告訴Arino電路板要做些什麼了。
Ⅲ arino的代碼中changeTime = millis()是什麼含義為啥要引入個milli
含義是:這個函數會返回一個值『該值代表當前cpu的時間』單位為微秒。
舉例如下:long begintime=mills();endtime=mills();然後用endtime—begintime算出時間差,這個函數可以用來定時,這樣可以不用佔用cpu時間,寫長的程序時,這個函數很有用。
Arino構建於開放原始碼simple I/O介面版,並且具有使用類似Java、C語言Processing/Wiring開發環境。
主要包含兩個的部分:硬體部分是可以用來做電路連接的Arino電路板;另外一個則是Arino IDE,計算機中的程序開發環境。只要在IDE中編寫程序代碼,將程序上傳到Arino電路板後,程序便會告訴Arino電路板要做什麼。
(3)arino動態存儲原始碼擴展閱讀
Arino能通過各種各樣的感測器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境。板子上的微控制器可以通過Arino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。
對Arino的編程是通過 Arino編程語言 (基於 Wiring)和Arino開發環境(基於 Processing)來實現的。基於Arino的項目,可以只包含Arino,也可以包含Arino和其他一些在PC上運行的軟體,他們之間進行通信 來實現。
Ⅳ 漫談Arino內置的通訊協議
如果按照網路裡面的定義,那麼通訊協議的解釋如下:
通信協議又稱通信規程,是指通信雙方對數據傳送控制的一種約定。約定中包括對數據格式, 同步方式,傳送速度,傳送步驟,檢糾錯方式以及控制字元定義等問題做出統一規定,通信雙方 必須共同遵守,它也叫做鏈路控制規程。 好吧,如果抄襲到這里,我肯定不會收到讀者的鮮花,而是板磚和臭雞蛋。文抄公誰不會做?
那麼,對於業余電子愛好者而言,如何來快速而又簡單地理解通訊協議?
其實,我們可以簡單地這么來理解,對於人類世界來說,在中國范圍內,那麼我們可以將普通話看成是一個通訊協議。
也就是說,當有一個人懂得漢語的人要對另外一個懂得漢語的人表達自己意見的時候,他可 以使用「普通話」這個通訊協議和另外一個懂得普通話的人進行溝通。
同樣的,我們也可以將英語看成人類世界的另外一個版本的通訊協議。
而在電子世界中,我們通常所謂的通訊協議都是數字通訊協議,在數字通訊協議中,小到 各種電子零件,大到電腦,它們之間互相溝通其實都是通過 0 或者 1 兩個電位水平來進行通訊的(當 然,還有別的表達方式,如差分電位,這里不細表,作為愛好者,我們將且這么認為罷)。
大家知道,當我們採用 0,1 來進行信息表達的時候,如果只表達一次,即每次只說 1 或者 0 。那麼這次表達只能夠蘊含兩個意思,或者你說了 0,這就表示「沒有」,或者你說了 1,這就表示「有」。
但是,我們總該知道,這個世界哪裡這么簡單?比如你女友問你現在溫度是多少度,你卻 回答說「沒有」或者「有」,我相信,你的女友少不得給你來一記九陰白骨抓。
幸好,我們並沒有走到絕路,其實,如果你有一個比較耐得住性子且願意陪你搞怪的女友。
那麼我們可以這樣來解決「問溫度」的問題:
我們這樣設想,如果你事先和女朋友約定如下:
好吧,恭喜你,盡管這個例子非常地無聊。但是,你和你的女友已經共同創造了一種全新的「通 訊協議」。
當然,我們不能想得這么簡單,這個世界非常復雜,所以,我們需要進行復雜的表達。
比如說,你女友正在問你溫度問題的時候,你忽然發現她老娘在背後看著你們倆發傻,我 相信,明智的你肯定不會繼續這樣傻幹下去了。這個時候,你肯定得想辦法打個哈哈矇混過關, 諸如「阿姨,您怎麼親自來了?」什麼的。
人類世界的溝通,可以用語言來進行復雜的表達,而語言由於其音節音調的多樣性。所以 可以進行復雜的表達。
普通話中的「你」「我」「他」三個字,有三種發音,聽者肯定可以區分三者的含義。
但是,在電子的數字通訊世界裡,只有 0 和1這兩個基本元素。就如前面提到的,它只能在一個時刻裡面只表達一次。怎麼辦?
解決的方法是,我們用一組 0 和 1 的組合來進行復雜意義的表達。
如,我們可以用 00001 表示現在溫度是 1 ,00010 表示現在是 2 ,00011 表示現在是 3 。 當然,這種表達的方法是二進制的(關於二進制,八進制,十進制等數學進制的概念和互相轉換, 請參考網上的文檔)。
所以,簡而言之,在電子的世界裡面,所謂的通訊協議,其實就是一個事先規定的規則, 我發送什麼樣的 0 和 1 的組合代表什麼意思。
你如果事先了解了這個規則,這就是所謂的你「兼容」這個通訊協議。如果不了解,那 就是所謂的「不兼容」。
一個通訊協議包含哪些要素呢?在此羅列如下:
處於一個通訊網路下的各個電子零件在進行通訊的時候,首先必須要採用共同的電壓 水平。因為,數字通訊的基本規則就是 LOW(通常是 0V,當然還有別的電壓水平,如果是 0V,這個電壓並非指確定的 0V,而是大約在 0V 左右)表示 0,表示「沒有」。HIGH(事先 約定的高電平,如 3.3V,5V,12V 等。如果是 3.3V,那麼這個值並非是確定的 3.3V 等,而 是電壓高到大約 3.3V 左右)表示 1,表示「有」。
試想一下,如果兩個電子零件相互之間連基本的工作電壓都不一致,你還妄圖讓它們進 行通訊,那麼除了冒煙或者是通訊失敗,你幾乎得到什麼別的結果。
舉個例子,如你手頭的一個零件 A,輸出 0V 表示開關閉合,輸出 5V 表示開關打開。現 在另外一個零件 B,它認為 -12V 表示開關閉合,0V 代表開關打開。姑且不去討論會不會燒掉 電路的問題。那麼不管 A 發送什麼電壓給 B,B 會永遠都認為 A 是處於開關打開的狀態,因為 不管是 0V 還是 5V 都已經高於了 0V 這個限度。
繼續舉一個例子,如,你和你的女友約定,如果你拿手指頭點點她的額頭表示你現在很無奈(你的手指很溫暖,女友很幸福)。如果你拿著一把燒紅的烙鐵打算點點她的額頭,這還 會讓她認為你打算讓她認為你很無奈嗎?
不過,需要注意的一點是:通常情況下,我們在網上可以下載到的各種 IEEE 的通訊協議 標准規范裡面都不會對電壓進行直接的規定。
其實,這也很好理解,我們只需要保證處於通訊中的雙方採用同樣的電壓就行了。
這就好像,如果你和你的女友是超人和女超人,那麼你拿個烙鐵點她的額頭,她還是會理 解為你是在表達你的無奈。
實際上的例子則是:在實際應用中,如 canbus 匯流排,有的匯流排的通訊電壓是 3.3V,有的 在是 5V,甚至還有使用 12V。
而之所以在此提出這一點。是因為有很多的新人愛好者在使用數字感測器的時候,往往不 會去考察它的通訊電壓。而這往往會導致通訊失敗,甚至燒毀電路元器件。
所謂的幀長度就是:到底一個信息用了多少個 0 和 1 來組成。
這個好理解,因為是採用一串的 0 和 1 的組合來代表意義,那麼我們設想,信息的發送方 如果沒有預定多少個用 0-1 來表示一個完整的組合。那麼假設我們按照如下的方式發送信息呢:
一次性發送:0101001011100101001010100
如果拆分成 4 個一組呢?: 0101-0010-1100-1010-0101-0100
顯然,前者你根本就不知道是什麼意思。你哪裡知道是多少個數字代表一個信息?
而後者,你雖然不知道意思,但是好歹,知道發送了 6 個信息過來。
在幀長度的實際應用中,有些通訊協議採用了停止位的方法,而所謂的停止位,類似於上 面的 0101-0010 之間的「-」,通常的做法是使用一個較長的低電平或者高電平。而有些的通 訊協議則是,事先約定了多少個 0-1 組合就是表示一個信息。也就是發送方一旦開始發送,接 收方直接照著固定的個數,自行將一整個的 0-1 序列拆分。 無奈(你的手指很溫暖,女友很幸福)。如果你拿著一把燒紅的烙鐵打算點點她的額頭,這還 會讓她認為你打算讓她認為你很無奈嗎?
我們常見的序列長度有 8 個 0-1,16 個,32 個,64 個。看一下,正好是 2 的倍數。當然,前言 8 個的最常見,8 個 0-1 序列就可以排出 256 個可能。而我們必須要接觸到的 ASCII 編碼,其 基本的 0-1 序列長度就是 8 位。
關於這一點,我們可以使用一個簡單的實驗來得到體現。我們在 Arino 中輸入如下的 代碼:
如果在電腦中打開串口監視器,除非我們選擇的波特率是 9600,否則,我們在串口監視 器中將只能看到一堆的亂碼。
我們打一個比方:
好吧,你和你的女友郎情妾意,她在給你喂飯。如果你當時感到幸福,於是閉上了眼感覺 自己徜徉在幸福的海洋中,而女友也感到幸福,於是也閉眼享受和你一樣的幸福。如果她這個 時候還給你繼續喂飯呢?你知道她什麼時候會喂給你,而你恰好張開嘴?於是飯勺子很可能就 直接戳你嘴皮上了。
當然,如果你們兩個都具有大哲學家的冷靜,事先約定了:
那麼上面煞風景的事情就不會發生。 這是因為,你們約定了喂飯的頻率。
其實,處於通訊兩端的兩個電子零件也相當於這么一對閉眼享受幸福還要秀恩愛喂飯的男 女,一個在發送信息(喂飯)一個在接收信息(張嘴吃飯)。如果通訊雙方不事先約定好頻率, 那麼就會出現信息丟失的現象。
如果說,兩個人互相之間是在扯談,比如像我現在正在乾的事情。那麼說過了也就罷了, 沒啥大問題。但是,如果是在非常重要和嚴肅的場合呢?萬一聽的人聽錯了,那肯定會出大問 題。在軍事指揮中,有這么一種方法來防止出問題:命令復述。也就是指揮官下重要命令的時候, 聽從命令者必須復述指揮官的命令以做確認。
同樣的,在電子世界的通訊中,因為通信線路的干擾,信息發送方和接收方可能出偶爾的 問題,那麼也會面臨同樣的問題—信息發送出現了失誤(術語叫誤碼)。這個時候,我們就必 須想辦法來解決。
當然,如果接收方在接收到信息之後原封不動的反饋給發送方,發送方比對,如果對了就 回復確認;如果錯了就回復錯誤,然後重新發送,這種方法可以確保絕對的正確。但是,這種 方法顯然是相當無效率的,除非是非常重要的,一點錯都不能出的通訊場合,否則這種檢驗方 法很少會被採用。
幸好專家們想到了更有效率的方法,即所謂的校驗。通常的校驗方法有所謂的奇偶校驗, 和值校驗等等。
如奇偶校驗,則是在發送信息的同時在末尾再帶上這次發送信息的 0-1 中的 0 的個數或者 1 的個數的模值。
如前面的數據列
如果為了確保信息發送的完全。我們可以採用在每個4位數的後面再加上一個奇偶校驗位, 即一次性發送 5 個。
如果我們採用耦校驗位,那麼我們的上面的序列就變成了如下的串列:
括弧裡面的 0-1 就是所謂的校驗字(注:事實上,括弧是不存在的)
採用數學的方法。如第一串 0101(0) 我們可以根據校驗字來判斷,前面的 0101 是否正確。
如果發生了錯誤,我們原本打算發送 0101,但是因為通訊出了問題,結果只接收成了0001,那麼我們可以發現,這個時候的校驗位卻是 0 的話,顯然,0001 絕對是錯誤的值。那 么這個串列就可以簡單拋棄,然後要求重發了。 當然,在實際過程中。如 TTL 串口通訊。如果你要求不是那麼高,那大可以不搞什麼校驗。 而如果你對奇偶校驗有跟多的興趣,可以參考維基網路。
這個概念非常好理解。如果你在圖書館聚精會神地讀書,忽然坐你邊上的人開始說話,我 相信,你的第一反應肯定不會認為那個傢伙是在對你說話,並且你幾乎記不住那個傢伙剛剛在 說什麼。
但是,如果那個傢伙先用手肘碰碰你,然後說:「喂」。等你抬頭看著他,他再和你嘰里 呱啦的時候,你肯定可以聽到他對你說了什麼。
在電子通訊世界裡面也是如此,兩個或者多個需要進行互相通訊的電子零件可能正在執行 各自的工作。結果,接收方正在進行某個工作的處理,結果發送方忽然發送了一大段的信息過去。 很有可能的結果就是接收方沒法接受到這個信息。
解決這個問題的方法有幾種。
一種是採用所謂的握手信號,有的是一個專門的電路,如 Arino 中的 SPI 通訊,發送方 會使用 CS 引腳發送一個高電平,告訴接受方,我要開始和你通訊了。
還有一種類似於老師在課堂上點名回答問題,參與通訊的各個電子元件事先都規定好了各 自的 ID,當發送方發送信息的時候在開頭的時候發送這個 ID。那麼具有這個 ID 的接受者就會 根據 ID 判斷這個信息是否是發送給自己的。這類似於在信封上面寫地址一樣。
再有就是沒有握手信號。純粹雙方都具有專門的發送和接收的模塊。如 Arino 上的 RS232 中的 RX 埠,它是相對獨立於 Arino 的 CPU 的,一旦 Arino 上電,它就會隨時 監聽來自於電線上的信號。一旦收到就立即存儲起來供 CPU 調用。這就好像一個老闆給自己配 了一個電話秘書,隨時替老闆接收電話,然後把電話內容記錄下來供老闆隨時瀏覽。
關於這個,其實很好理解,如果只有一根導線,那麼我們一次只能發送 0 或者 1。如果我 們要發送 0101,那麼我們就需要按照先後順序連續發送四次。這就是所謂的串列通訊。但是, 如果我們在通訊的雙方連接 4 條導線呢?那麼一次性我們就可以把 0101 中的第一位的 0 通過 第一根導線,第一位的 1 通過第二根,第三位的 0 通過第三根,第四位的 1 通過第四根一次性 地發送出去。 串列通訊的速度相對較慢,但是這節省連接電路,也就是說省錢。並行通訊速度相對較快, 但是這相對來說非常不省錢。並且,隨著連接電路的數量增多,它的可靠性也成級數往下降。所以, 選擇哪種通訊方式,這在於速度 VS 可靠和經濟的權衡。 通常情況下,遠距離、低速的通訊通常都是串列的。而近距離、高速的通訊通常都是並行的。
這三個概念也比較簡單。
單工就是發送方只能發送,接收方只能接受。這種方式在現實的世界中比如說廣播、電視。 這些就是單工。
半雙工則是,雙方都能夠發送和接收,但是如果是發送信息,那麼它在同一個時刻下只能 發送或者接收。無法在同一個時刻下同時干兩件事情。如 Arino 上的 IIC 匯流排(TWI)就是 半雙工通訊。比較形象的就是步話機。
全雙工則是,雙方不僅能夠發送和接收,而且發送和接收可以同時進行。在 Arino 上 的 SPI 匯流排和 TTL RS232 都屬於全雙工。而現實中的例子如電話,互聯網連接等。
1、了解了關於電平的概念,那麼我們在未來連接電路的時候就不會出現隨便拿一個數字 感測器就往 Arino 上接的低級錯誤。好歹我們得注意看一下,它的通訊電壓是多少的。當然, 還有一些特例,如 CMOS 電平和 TTL 電平兼容,這些是後來的升級概念。我們這兒不做延伸說明。
2、了解了關於通訊速率的概念,那麼我們就明白了,為什麼需要設定 Serial.begin()。
3、了解了奇偶校驗,那麼我們在未來讀取數字感測器的發來的數字的時候就會應用這 個位來判定讀數值正確與否。
4、了解串列和並行通訊,其實,是為了讓我們理解 shiftout() 函數。
5、了解握手的概念,這樣我們才會理解為何 IIC 需要設定一個 ID 去發送或者接收,而 TTL RS232 和 SPI 則不需要。
6、了解了單工,半雙工,全雙工。好吧,這個概念貌似對於 Arino 的初級應用的確沒啥用。 只是純粹為了補齊概念和湊字數。
很多的時候,很多的愛好者往往不清楚這些概念,所以總是會犯一些讓業內人士嘲笑的 低級錯誤。但是,這些錯誤正是因為缺乏基礎知識才會發生的錯誤。如何避免?難道要像那些 業內人士一樣老老實實地抱著專業書開啃?
但是,我們真的只是愛好者,我們只需要搞清楚大概的理論框架就行了。所以,才 有了這個水煮通訊協議的扯談篇。
希望能夠給有需要的讀者以幫助
Ⅳ arino門禁系統卡uid默認多少
1、序言
先說下簡單門禁系統的原理:
(1)IC卡激活:門禁卡管理員將卡片放到讀卡器、這時軟體讀取到IC卡的UID序列號信息(相當於身份證號碼),將這個UID錄入資料庫激活IC卡。
(2)刷卡:刷卡時讀卡器讀取到UID,查詢資料庫,如果資料庫中存在這個UID則表示有效用戶,繼而控制繼電器斷電,此時電磁鎖開門。
不亦買的RC522模塊採用SPI通信、據說也有串口通信的不過成本較高。大家可以看看這個模塊的主要配件:卡和讀卡器。
2、載入RC522庫文件
Arino本身有個操作RC5200的庫,如下圖所示,打開Arino開發工具中管理庫
搜索"RC522",選擇"MFRC522"安裝即可
點擊"More info"可以跳轉到github地址https://github.com/miguelbalboa/rfid ,下文會有提及。
安裝完畢後,可以看到關於MFRC522的庫示例,有讀取UID、獲取區塊信息、修改UID、卡片信息復制等
註:一般而言IC卡是不能修改0扇區0區塊的UID和廠商信息數據,這些是生產時就確定下來的的(關於IC卡的存儲結構有空再發文介紹,小夥伴們可以去網上查閱這方面資料也挺多的),能夠全扇區修改的俗稱UID卡才支持修改UID,一些不負責的門禁系統廠家僅根據UID來判斷用戶身份是不可靠的,一個簡單的方法是在讀之前先寫UID操作,如果可寫那麼這張卡就是UID卡即復制卡,判斷無效,系統也可記錄是哪張IC卡被復制了用於追溯非法行為,僅供交流與學習,請勿用於非法用途哦
3、模塊引腳接線
此處是網路上大部分相關文章沒有提及的,只告訴了如何接線,卻不告訴我們為什麼這樣接,甚至連Arino版本都不說清楚。
我們打開ReadNUID的示例裡面有各種版本Arino與RC522的引腳連接圖,我們按照這個接線即可。在上文提及的github項目主頁也有介紹。
RC522一共8個引腳,如圖所示:
3.3V供電、GND接地不用多說,IRQ是中斷才用到的此處沒有用到可以不接,其餘5個引腳接法如下表所示:
/* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arino Arino Arino Arino Arino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
4、程序代碼
此處測試的Arino型號是Arino Nano V3.0,其他型號請結合上表修改引腳號。
示例代碼讀取UID,並將其分別以十進制和十六進制輸出到串口,簡化版如下:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); //實例化類
// 初始化數組用於存儲讀取到的NUID
byte nuidPICC[4];
void setup() {
Serial.begin(9600);
SPI.begin(); // 初始化SPI匯流排
rfid.PCD_Init(); // 初始化 MFRC522
}
void loop() {
// 找卡
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();
}
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);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
5、運行結果
依次將卡A、卡B、卡A放到RC522讀卡區,串口列印信息如下
Ⅵ arino是什麼
Arino是一個基於易用硬體和軟體的原型平台(開源)。
它包由可編程的電路板(簡稱微控制器)和稱為Arino IDE(集成開發環境)的現成軟體組成,用於將計算機代碼寫入並上傳到物理板。Arino提供將微控制器的功能打包成更易於使用的軟體包的標准外形。
Arino主要特點
1、Arino板卡能夠讀取來自不同感測器的模擬或數字輸入信號,並將其轉換為輸出,例如激活電機,打開/關閉LED,連接到雲端等多種操作。
2、可以通過Arino IDE(簡稱上傳軟體)向板上的微控制器發送一組指令來控制板功能。
3、Arino IDE使用C++的簡化版本,使其更容易學習編程。