陳世鷗
在組織高中通用技術(shù)課程中的電子控制技術(shù)模塊教學(xué)時(shí),由于該課程的實(shí)踐性很強(qiáng),需要理論聯(lián)系實(shí)際,傳統(tǒng)的“灌輸式”教學(xué)方法顯然已無法滿足學(xué)生學(xué)習(xí)的需求,這就需要教師結(jié)合現(xiàn)代電子、電氣技術(shù)的發(fā)展,適當(dāng)充實(shí)教學(xué)內(nèi)容、變革教學(xué)手段。
一、Arduino平臺簡介
眾所周知,Arduino是一款便捷靈活、方便上手的開源平臺,包含硬件(各種型號的Arduino板)和軟件(ArduinoIDE),常用于電子電路的開發(fā)。開發(fā)者使用ArduinoIDE編寫出的程序簡明高效,可讀性與兼容性俱佳。且由于開源平臺的開放性,有數(shù)以萬計(jì)的專業(yè)工程師或電子愛好者都在Arduino平臺上開發(fā)電子產(chǎn)品,使得Arduino開發(fā)逐漸成為當(dāng)今互聯(lián)網(wǎng)、物聯(lián)網(wǎng)時(shí)代的一種趨勢。
Arduino使用類似Java、C語言的Processing/Wiring搭建開發(fā)環(huán)境,在IDE中將編寫好的程序編譯成二進(jìn)制文件,上傳寫入微控制器以告訴電路板接下來要做什么。在前端使用各類傳感器采樣感知外部環(huán)境,經(jīng)過一系列判斷、控制后,最終輸出至LED燈、馬達(dá)或其他裝置,控制其狀態(tài)發(fā)生變化。簡單的數(shù)行代碼加上必要的擴(kuò)展元件,就能夠?qū)崿F(xiàn)各種各樣的電子設(shè)備(比如循跡機(jī)器人、智能澆花裝置、無人機(jī)等)。
二、在高中階段嘗試應(yīng)用Arduino平臺進(jìn)行初步開發(fā)
高中生已經(jīng)具備了基本的邏輯推理能力,經(jīng)過信息技術(shù)學(xué)科相應(yīng)模塊的學(xué)習(xí),也有了初步的編程能力,在經(jīng)過必要的學(xué)習(xí)后就可以編寫出Arduino程序。在具體的任務(wù)情境中,可以先用Arduino軟件進(jìn)行邏輯實(shí)現(xiàn),調(diào)試并模擬仿真,再結(jié)合面包板快速搭接電路實(shí)現(xiàn)控制目的。在這個(gè)過程中,學(xué)生變身為工程師,通過軟、硬件知識的相互印證,體驗(yàn)到了現(xiàn)代電子開發(fā)的完整流程。
例如,設(shè)計(jì)一個(gè)能安裝到機(jī)器人上的火焰報(bào)警器,當(dāng)檢測到火焰后通過蜂鳴器報(bào)警。其設(shè)計(jì)思路是:軟件下達(dá)開始指令后,傳感器采集紅外信號并將其轉(zhuǎn)化為變化的電流信號。當(dāng)檢測到的數(shù)據(jù)低于設(shè)定的閾值,控制器判定為附近有火焰,蜂鳴器開始報(bào)警。
將硬件部分連接好(蜂鳴器模塊和火焰?zhèn)鞲衅鞣謩e連接到UNO板上的數(shù)字口8和模擬口0),并用螺釘固定到機(jī)器人擴(kuò)展支架上,然后在ArduinoIDE中寫入并調(diào)試以下代碼:
//項(xiàng)目-火焰報(bào)警器
float sinVal;
int toneVal;
void setup(){
pinMode(8, OUTPUT); //蜂鳴器引腳設(shè)置
Serial.begin(9600); //設(shè)置波特率為9600 bps
}
void loop(){
int sensorValue = analogRead(0);//火焰?zhèn)鞲衅鬟B到模擬口,并從模擬口讀值
Serial.println(sensorValue);
delay(1);
if(sensorValue<1023){// 如果數(shù)據(jù)小于1023,說明有火源,蜂鳴器響
for(int x=0; x<180; x++){
//將sin函數(shù)角度轉(zhuǎn)化為弧度
sinVal=(sin(x*(3.1412/180)));
//用sin函數(shù)值產(chǎn)生聲音的頻率
toneVal=2000+(int(sinVal*1000));
//給引腳8一個(gè)
tone(8,toneVal);
delay(2);
}
}
else{// 如果數(shù)據(jù)大于等于1023,沒有火源,關(guān)閉蜂鳴器
noTone(8); //關(guān)閉蜂鳴器
}
}
編輯 李建軍