李英 趙書銳 姜欣欣


摘要:該文使用Arduino硬件開發平臺,以Arduino UNO電路板為中心,配合使用8乘8矩形點陣完成電路的設計。在完成的過程中,本文采納的Arduino UNO電路板,與此同時配合應用Arduino IDE軟件并利用Arduino語言進行編程以實現8乘8點陣上“心形”的顯示。本文提到的8乘8點陣,Arduino電路板以及使用的語言均可供讀者參考學習。
關鍵詞:Arduino;8乘8“心形”顯示;Arduino語言
中圖分類號:TP311 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2019)13-0247-02
1 引言
當今社會,電子技術行業在不斷的發展,在不斷的學習過程中,硬件開發不僅可以增加學習者的開拓思維能力,還可以提高開發者的創新能力。Arduino以其簡單的開發方式和容易操作的特點成了目前流行的開源硬件和硬件開發平臺,更是硬件開發的趨向[1]。這使得使用Arduino的開發者們不再需要大量的時間學習類似于單片機等硬件的復雜機理,從而可以節約學習成本,也讓開發者們更加關注開發本身的創意性和可行性,大大減少了開發需要的時間周期,從而更快地完成項目的開發。
總之由于Arduino的多種優勢,越來越多的人開始使用Arduino,其中包括專業的硬件開發者,甚至包括一些軟件開發者通過使用Arduino來進入硬件等開發的領域[2]。
本文所提到的8乘8點陣的“心形”顯示實驗就是應用Arduino開發板對8乘8點陣進行的控制的一個實驗。
2 Arduino簡介
Arduino是一個在可以不需花費過多時間學習就能使用的硬件和軟件的基礎上的一個開源電子平臺。它是為任何做互動項目的人設計的。它包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。 它構建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發環境[3]。Arduino包括兩個主要的部分:一是硬件部分,就是我們在電路連接過程中使用到的Arduino電路板;二是軟件部分,即Arduino IDE,就是我們在計算機中編寫程序時使用到的程序開發環境。 Arduino能通過各種各樣的傳感器來感知環境,也能通過許多其他的裝置來影響環境。Arduino板能夠讀取輸入-傳感器上的燈,按鈕上的手指,或者推特上的信息-并將其轉換成輸出-激活馬達,打開LED,在線發布一些信息。通過Arduino的編程語言來編寫程序后,編譯生成二進制文件,可以燒錄進Arduino板子上的微控制器,從而達到程序控制的目的[4]。基于Arduino的一些項目,也可以通過Arduino和其他一些在PC上運行的軟件之間進行通信來實現。
總之,Arduino以其靈活性和操作簡單的特點越來越受到我們的歡迎,也越來越受到對硬件開發有興趣的人的青睞。
3 硬件電路設計
3.1硬件介紹
本文使用的硬件主要包括Arduino開發板、面包板兩塊、USB數據線、8乘8矩形點陣一個、連接線若干、220歐姆電阻若干。
本文使用的Arduino開發板類型為Arduino Uno;面包板的作用為使8乘8點陣的引腳可以與Arduino開發板之間可以用導線進行連接;USB數據線的作用為將Arduino開發板與電腦進行連接,從而使得Arduino IDE可以對Arduino開發板的各個引腳進行控制;8乘8點陣共由64個發光二極管組成,并且每個發光二極管位于行線和列線的交叉點處,如果要點亮其中一個發光二極管則將此二極管對應的行置高電平,對應的列置低電平即可;如要將最后一個發光二極管點亮,則5腳接高電平16腳接低電平,則最后一個發光二極管就被點亮了[5]。
3.2電路設計
首先對8乘8點陣各個引腳進行識別,點陣共有四個邊,其中一個邊上有絲印并且在中間有塑料向下突出,將點陣正向放置,帶有絲印的一邊朝向自己,左側第一個引腳為一號引腳,依次逆時針排序增加,共有16個引腳。
然后將各個引腳與Arduino開發板進行相應的連接。連接示意圖如圖1所示,實際連接情況如圖2所示。電阻主要起到限流作用。
3.3實現功能
在程序驗證完成顯示編譯完成后,即可上傳到相應的Arduino開發板上,實現的功能應為每隔1秒鐘循環顯示“心形”。
4 軟件設計
4.1軟件設計流程
首先需要對8乘8點陣的各個與Arduino開發板連接的引腳進行行列號的定義,來實現Arduino各個引腳對點陣行列的控制,然后將Arduino引腳設置為輸出模式以控制點陣,并且全部都初始化為低電平,隨后定義了一個顯示函數,其作用是將點陣的各列依次選通,等待信號燈被點亮(利用人眼的視覺暫停作用,選通時間足夠短的話,會造成多列同時點亮的效果),同時設置了一個清除函數目的是為了減輕信號燈點亮時產生的余暉,給出“心形”的數據后利用loop()函數對“心形”數據進行顯示。程序流程圖如圖3所示。
4.2 Arduino語言程序
const int row1 = 2; // Arduino Pin2 連接點陣 行號9
const int row2 = 3; // Arduino Pin3 連接點陣 行號 14
const int row3 = 4; // Arduino Pin4 連接點陣 行號8
const int row4 = 5; // Arduino Pin5 連接點陣 行號 12
const int row5 = 17; // Arduino Pin17 (A3)連接點陣 行號1
const int row6 = 16; // Arduino Pin16 (A2)連接點陣 行號7
const int row7 = 15; //Arduino Pin15 (A1)連接點陣 行號 2
const int row8 = 14; // Arduino Pin14 (A0)連接點陣 行號 5
const int col1 = 6; //Arduino Pin6 連接點陣 列號13 ? ?//the pin to control COl
const int col2 = 7; // Arduino Pin7 連接點陣 列號3
const int col3 = 8; //Arduino Pin8 連接點陣 列號4
const int col4 = 9; // Arduino Pin9 連接點陣 列號 10
const int col5 = 10; //Arduino Pin10 連接點陣 列號6
const int col6 = 11; //Arduino Pin11 連接點陣 列號11
const int col7 = 12; // Arduino Pin12 連接點陣 列號15
const int col8 = 13; // Arduino Pin13 連接點陣 列號16
unsigned char table[8][8] = ? //“心型”的數據
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,1,0,0,1,0,0,
0,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,0,
0,0,1,1,1,1,0,0,
0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,
};
void setup()
{
int i = 0 ;
for(i=2;i<18;i++)
{
pinMode(i, OUTPUT); //設置為輸出(包括模擬口,也設置為數字輸出方式)
}
for(i=2;i<18;i++) {
digitalWrite(i, LOW); //拉低
} }
5 實驗結果
程序寫完后,將其驗證,驗證無誤后下載到Arduino的微控制器中后,就會看到8乘8點陣發生相應的變化,即8乘8點陣每隔1秒鐘循環顯示“心形”。實驗結果表明8乘8點陣能夠很好地穩定的按照我們設計的程序進行“心形”的顯示。實驗結果如圖4所示。
參考文獻:
[1] 陳呂洲.Arduino程序設計基礎[M]. 2版.北京:北京航空航天大學出版社,2015:3
[2] 付久強.基于Arduino平臺的智能硬件設計研究[J].包裝工程,2015(10).
[3] 卞云松.基于Arduino單片機的避障小車機器人[J].自動化技術與應用,2014 (1).
【通聯編輯:朱寶貴】