上回書說到,通過修改PWM的輸出值可以調節LED的亮度。PWM的輸出值共有0、50、100、150、200、255這5個值,我們把燈由暗到亮比作呼吸,但顯然這呼吸實在"急促"了點。那麼能不能讓呼吸「順暢」一點呢?
聰明如你已經想到了,我們可以每次只增長1呀,於是乎我們只需要把按照如下操作即可。
這程序是很簡單的,但這要是寫全了怎的也有500多行吧,就是長了點……雖說指令長也不是什麼大問題,畢竟當年塞班指令也有2000萬行的,但仔細看一下這500多行指令除了PWM輸出的參數不同外其他指令是完全重複的,所以我們就要對這段指令進行優化。
我們已經發現這段指令是重複的,所以我們需要使用重複執行指令,這次我們使用的重複指令和之前不同。
在Scratch中有限重複執行指令有3種,今天我們學的就是重複執行……次,因為我們在一開始就知道要重複執行多次了,在以後我們會學習另外兩種有限重複執行指令。
在上面的程序中我們重複了兩個指令——PWM輸出和等待。每次我們都等待0.2秒,所以等待指令參數0.2秒久可以了,但是PWM輸出指令每次的輸出都不一樣這就尷尬啦。這時候我們就要需要學習新知識——變數,在「數據和指令」一欄下面有一個「新建變數」,點擊一下出現了一個對話框就是對變數起個名字,基本就是大家中學學代數時的x,y,z,α,β,γ……
當然,在編程中變數命名也有一些規範,譬如不能出現純數字,不能出現漢語字元之類的,總之變數命名盡量以英文並且以英文字母開頭總是不會錯的。在這裡我以i命名,這種只在重複執行里用的變數我們稱為循環變數,通常以i、j、k來命名。
那接下來我們來分析一下,第一次PWM輸出0,再等待0.2秒,然後下一次輸出增加1,再等待0.2秒,最後一次輸出255。整個過程包括256次PWM輸出(每次輸出值不同,但比前一次增大1)和256次等待0.2秒,所以每次重複包括1次PWM輸出和等待0.2秒。那麼我們先把相應的指令放進去:
但是PWM輸出每次不同,所以我們需要用上變數啦,很明顯我們要把變數作為PWM的輸出值啦。怎麼操作?新建的變數是不是很圓,那麼就能往比較圓的框里放。
點擊一下,發現怎麼燈一直滅的呢?首先我們要清楚我們是把變數i的值作為PWM的輸出值輸出了,那麼i值是多少呢?它一直都在舞台左上角上,居然一直都是0!
雖說是變數,但還是按基本法啊,Scratch提供了兩個指令修改變數的值,設定變數值和增加變數值。
因為在每次執行中,PWM輸出增加1,那麼每次變數i的值都應該增加1,當然第一次執行PWM輸出必須為0所以在重複執行之前變數值必須先變為0,然後在再加一個綠帽子結構就完美了。
今天只是解決了從0增加到255,那麼從255減少到0該怎麼辦呢?
魔導師公子:Arduino圖形化學習 一:準備工作?zhuanlan.zhihu.com魔導師公子:Arduino圖形化學習 二:認識編程軟體?zhuanlan.zhihu.com魔導師公子:Arduino圖形化學習三:點亮LED?zhuanlan.zhihu.com魔導師公子:Arduino圖形化學習四:調節LED的亮度?zhuanlan.zhihu.com人工智障研究所?zhuanlan.zhihu.com