吳箏
學(xué)習(xí)背景
從古至今,交通運(yùn)輸都決定性地影響著經(jīng)濟(jì)的發(fā)展與社會水平的高低。隨著數(shù)字化城市建設(shè)進(jìn)程的不斷推進(jìn),智能交通信號燈作為城市交通的重要組成部分,必將發(fā)揮積極的作用。本案例以程小奔機(jī)器人為硬件載體,以mBlock5為軟件支撐,以實(shí)踐活動、問題解決帶動學(xué)習(xí)過程,通過參與、操作、體驗,從認(rèn)知、探究發(fā)現(xiàn)到創(chuàng)意創(chuàng)新,使學(xué)生的計算思維能力、邏輯思維能力、創(chuàng)新思維能力得以發(fā)展和強(qiáng)化。
教學(xué)目標(biāo)
知識與技能 1.描述紅外傳感器的作用;2.區(qū)分“重復(fù)執(zhí)行”與“重復(fù)執(zhí)行直到……”;3.解釋計數(shù)器的功能;4.識別Python中的循環(huán)語句。
過程與方法 1.能根據(jù)需要選擇合適的變量、運(yùn)算符及表達(dá)式設(shè)計程序;2.能運(yùn)用“觀察現(xiàn)象—發(fā)現(xiàn)問題—分析原因—嘗試解決”的程序調(diào)試方法,解決實(shí)際問題。
情感態(tài)度與價值觀 1.體驗人機(jī)交互的過程,培養(yǎng)計算思維,探索實(shí)踐精神;2.養(yǎng)成文明交通的意識。
教學(xué)重點(diǎn)與難點(diǎn)
教學(xué)重點(diǎn) 1.解釋計數(shù)器的功能;2.能根據(jù)需要選擇合適的變量、運(yùn)算符及表達(dá)式設(shè)計程序。
教學(xué)難點(diǎn) 1.能夠根據(jù)需要選擇合適的變量、運(yùn)算符及表達(dá)式來設(shè)計程序;2.能夠識別Python中的循環(huán)語句。
案例詳解
一、情境導(dǎo)入
教師播放城市交通車水馬龍的情景以及路口交通信號燈的變化畫面,引導(dǎo)學(xué)生在觀看中了解交通信號燈在城市交通中發(fā)揮的重要作用,吸引學(xué)生動手制作一個交通信號燈模型。
二、舊知鞏固
教師引導(dǎo)學(xué)生找出交通信號燈的變化規(guī)律,在mBlock5軟件平臺上完成一個路口紅綠黃燈切換的模塊代碼,并將代碼上傳到機(jī)器人設(shè)備,借助機(jī)器人的LED燈查看程序結(jié)果。
本案例交通信號燈的設(shè)定只有一組紅綠黃燈,不帶轉(zhuǎn)向及時間倒計時提示功能,因此變換規(guī)律比較簡單,就是綠燈亮10秒—黃燈亮3秒—紅燈亮10秒。
學(xué)生首先在mBlock5軟件平臺上完成一個路口紅綠黃燈單次切換的模塊代碼,在此基礎(chǔ)上添加重復(fù)執(zhí)行模塊,使得交通信號燈實(shí)現(xiàn)循環(huán)切換。(如圖1、圖2)
三、討論思辨
傳統(tǒng)的交通信號燈采用定時控制模式,但由于車流量不是固定的,因此可能出現(xiàn)少車路口綠燈時無車通行或多車路口綠燈通行時間短而堵車的情況。為解決這種資源浪費(fèi)問題,可以設(shè)計一個以車流量為核心的智能交通信號燈控制系統(tǒng),通過使用紅外傳感器檢測車流量,實(shí)現(xiàn)對路口交通信號燈的智能控制。
本案例重點(diǎn)討論如何控制一個方向上的紅燈顯示和切換,教師與學(xué)生討論制訂的規(guī)則是:默認(rèn)紅燈的顯示時間是10秒,但如果在10秒內(nèi)等待車輛已經(jīng)超過15輛,可立即切換成綠燈。為了實(shí)現(xiàn)以上規(guī)則設(shè)定,假定在路口100米處安設(shè)一個紅外傳感器,它可以感測經(jīng)過的車輛,同時需要在程序中設(shè)定兩個變量,分別統(tǒng)計經(jīng)過紅外傳感器的車輛數(shù)目以及紅燈持續(xù)的秒數(shù)。
四、算法探究
紅燈顯示和切換的算法設(shè)計:初始狀態(tài)為紅燈亮起,統(tǒng)計車輛數(shù)目為0,紅燈持續(xù)秒數(shù)為0;每過去0.5秒,紅燈持續(xù)時間+0.5;同時紅外傳感器感測是否有車輛經(jīng)過,如果有,車輛計數(shù)+1;如果車輛數(shù)目超過15輛或者紅燈持續(xù)時間達(dá)到10秒,則紅燈切換為綠燈,否則繼續(xù)車輛計數(shù)與紅燈持續(xù)秒數(shù)計數(shù)。
這部分算法的結(jié)構(gòu)是循環(huán)結(jié)構(gòu)嵌套分支結(jié)構(gòu),分支結(jié)構(gòu)使用“如果……那么……”模塊實(shí)現(xiàn)對經(jīng)過車輛的感知及計數(shù);循環(huán)結(jié)構(gòu)使用“重復(fù)執(zhí)行直到……”模塊實(shí)現(xiàn)對紅燈持續(xù)時間計數(shù)以及經(jīng)過車輛的判斷,利用混合邏輯運(yùn)算設(shè)定紅燈結(jié)束的條件,進(jìn)而自動調(diào)節(jié)紅燈的顯示與切換。具體程序如圖3。
五、代碼比較
借助mBlock5軟件的代碼轉(zhuǎn)換功能,分別將圖1、圖2定時控制的模塊代碼與圖3智能控制的模塊代碼轉(zhuǎn)換為相應(yīng)的Python語句代碼。
圖1對應(yīng)的Python代碼如下:
# generated by mBlock5 for codey & rocky
# codes make you happy
import codey, event
@event.start
def on_start(? ):
codey.led.show(0, 255, 46)
time.sleep(10)
codey.led.show(250, 255, 0)
time.sleep(3)
codey.led.show(255, 0, 0)
time.sleep(10)
圖2對應(yīng)的Python代碼如下:
# generated by mBlock5 for codey & rocky
# codes make you happy
import codey, event
@event.start
def on_start(? ):
while True:
codey.led.show(0, 255, 46)
time.sleep(10)
codey.led.show(250, 255, 0)
time.sleep(3)
codey.led.show(255, 0, 0)
time.sleep(10)
圖3對應(yīng)的Python代碼如下:
# generated by mBlock5 for codey & rocky
# codes make you happy
import codey, rocky, event
# initialize variables
cheliangshu = 0
red_time = 0
@event.start
def on_start():
global cheliangshu, red_time
while True:
codey.led.show(0, 255, 46)
time.sleep(10)
codey.led.show(250, 255, 0)
time.sleep(3)
codey.led.show(255, 0, 0)
cheliangshu = 0
red_time = 0
while not (cheliangshu > 15 or red_time > 10 or red_time == 10):
time.sleep(0.5)
red_time = red_time + 0.5
if rocky.color_ir_sensor. is_obstacle
_ahead(? ?):
cheliangshu = cheliangshu + 1
通過對比,學(xué)生可以識別Python中循環(huán)控制語句while的一般形式(如圖4)。
六、思維拓展
作品交流后,給學(xué)生一些時間梳理設(shè)計思路、完善提升作品。教師也可以提出一些拓展要求供學(xué)生挑戰(zhàn),比如對十字路口的交通情況通盤考慮,進(jìn)而智能控制四個方向的交通信號燈,還比如可以添加行人過馬路的因素,等等。
教師還可以引導(dǎo)學(xué)生思考將人工智能技術(shù)應(yīng)用到城市交通建設(shè)的可能性,比如利用攝像頭進(jìn)行視頻采集獲取路口各方向車輛的等待情況,實(shí)現(xiàn)對不同車型和行人的識別以及檢測控制、抓拍報警等,根據(jù)具體獲取的信息來選擇交通信號燈的控制方案,并通過網(wǎng)絡(luò)將最終方案反饋給控制中心。
教學(xué)反思
“智能交通信號燈”一課的問題設(shè)計貼近生活,學(xué)生能從已有經(jīng)驗入手發(fā)揮主觀能動性,為改善交通信號燈出謀劃策,容易激發(fā)學(xué)生的思維火花。任務(wù)設(shè)計由易到難,從常規(guī)定時控制到可根據(jù)車流量智能調(diào)整紅燈時長,給學(xué)生創(chuàng)造了“跳一跳”的機(jī)會。借助mBlock5平臺的代碼轉(zhuǎn)換功能,學(xué)生能夠?qū)Ρ饶K代碼與Python代碼,為了解Python語句做了一定的鋪墊。當(dāng)然,要將思路轉(zhuǎn)換成代碼是有一定難度的,所以實(shí)踐過程中教師需要進(jìn)一步思考如何更好地設(shè)計支架,引導(dǎo)學(xué)生實(shí)現(xiàn)算法。