邱娟
摘要:本文使用了基于ATmega328的Arduino UNO開發板編程實現的招財貓電路,具有人體感應、眼睛漸變、前后招手、液晶顯示節日賀語或者廣告詞的功能。電路主要包括四部分內容:1 小貓的眼睛用的是RGB三基色LED,可以綻放七彩的光芒;2 小貓的鼻子用的是人體傳感器,可以檢測有人進入感應范圍;3小貓的爪子用舵機正反轉60度,實現招手效果;4 通過液晶顯示設定的中英文字符。
關鍵詞:Arduino 招財貓 智能電子
中圖分類號: TM383 文獻標識碼:A 文章編號:1672-3791(2018)05(b)-0000-00
0 引言
2014年9月,李克強總理發出“大眾創業、萬眾創新”的號召,全國范圍掀起一股創新、創業新浪潮,我們的創客校園也開展得如火如荼,學校本著培養“有創意、敢創新和會創造”的創新創意人才的目標,精選了具有基于開源系統、易于動手實踐、激發創新精神、實現創新制作這些特點的電子創意類課程作為創客教育的載體,有Arduino應用、激光切割、易企秀制作、3D打印等等,獲得同學們的一致認可,同學們創新意識高漲,學習后效果很好。其中,Arduino能通過各種各樣的傳感器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境,下面給大家一下基于Arduino的招財貓電路的設計過程。
1 硬件電路設計
招財貓的硬件電路見圖1,主要由四個部分構成,分別是PWM調光電路、人體傳感器電路、舵機電路和液晶顯示電路。
1.1 PWM調光電路
RGB三基色LED,是由紅(Red)綠(Green)藍(Blue)三種顏色的發光半導體材料封裝在同一燈管里組成的,它的燈管一般作半透明的霧狀處理,不同波長的光線在半透明燈管透射出來時,會產生疊加效應。將紅、綠、藍三原色的色光以不同的比例相加,可以產生多種多樣的色光。生活中彩色電視、舞臺燈光也是采用加法三原色混合的原理。這里向彩燈輸出不同占空比范圍的PWM波產生漸變的效果。
1.2 人體傳感器電路
人體模塊是基于紅外線技術的自動控制產品,具有靈敏度高,可靠性強,微功耗等特點,當被測物體進入感應模塊的有效檢測范圍時,模塊經判斷有效后輸出高電平信號,控制舵機開始轉動。
1.3 舵機電路
舵機是用來控制舵的,比如輪船的方向舵,飛機的方向舵、升降舵等,這些都需要控制一定的角度,但并非需要連續旋轉。所以一般舵機都是只能轉動一定的角度,我們這里說的舵機主要應用于航模、車模和監控等領域,一般是正負 90 度之間轉動。舵機的控制信號實際上是 PWM 信號,周期不變,高電平的時間決定舵機的轉動角度。
1.4 液晶顯示電路
使用Arduino控制LCD1602液晶顯示器這里用四線制接法,IDE開發環境提供了LCD控制庫LiquidCrystal,在初始化程序中直接調用庫函數,就可以實現開關顯示和滾動字幕,相對于單片機而言,接線和編程都比較簡單。
2 軟件程序編寫
Arduino語言提供了多種類型的系統函數,要使用的時候可以直接調用。在控制RGB三基色LED的程序中,用到指定針腳模式的函數原型:pinMode (pin, mode)
其中,pin為要設定的針腳,在Arduinno UNO中可以取值范圍為0-13,表示針腳編號; mode為針腳模式,它的值可以為INPUT(輸入)和OUTPUT(輸出)。例如pinMode(9, OUTPUT);功能是將9號針腳設置為輸出模式。
在將對應的針腳設置為輸出模式后,還需要設置對應針腳的輸出電壓。模擬針腳可以輸出0-5V之間的電壓,可以使用analogWrite()函數設置。該函數的原型如下:analogWrite(pin,value)
其中,pin表示要設置的針腳,可以是3、5、6、9、10和11號針腳(Arduino開發板上針腳標號前帶“~”的針腳),具有PWM輸出能力,可以產生0~255占空比范圍的PWM波(PWM的中文譯名是脈沖寬度調制,它是利用微處理器的數字輸出來控制模擬電路的一種技術)。Value 表示占空比,它的值可以是0~255,占空比越大,輸出的電壓越大。例如:analogWrite(9, 100);9號針腳接藍色光控制線,輸出占空比100的PWM波,藍燈點亮。
招財貓的主循環程序如下,如果A0State讀入是高電平,說明有人進入區域,LED亮度開始漸變,舵機開始轉動。
// 主循環
void loop()
{
A0State = digitalRead(inPin);
while(A0State == LOW);
for (int i = 60; i <= 90; i = i + (1))
{
brightness = (i-60)*4; // 下一個循環調整led亮度
analogWrite(led, brightness); // 設置了led的亮度
myservo.write(i);
delay(90);
}
for (int i = 90; i >= 60; i = i + (-1))
{
brightness = (i-60)*4;
analogWrite(led, brightness);
myservo.write(i);
delay(90);
}
}
3 總結
通過本文的介紹,希望大家認識基于Arduino的這款招財貓電路。Arduino是一款便捷靈活、方便上手的開源電子原型平臺,可簡單地與傳感器、各式各樣的電子組件連接,可以幫助你將各種創新想法變為現實,是非電子類和電子類專業讀者實現電子類創新制作的最好途徑。
4 參考文獻
[1] 楊佩璐、任昱衡.Arduino入門很簡單.第1版.清華大學出版社.2015年3月.90-93.
[2] [美] Michael.McRoberts著.Arduino從基礎到實踐.電子工業出版社.2013年3月.104-107.