一、回顧

上回書說到,通過修改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,α,β,γ……

1.命名規範

當然,在編程中變數命名也有一些規範,譬如不能出現純數字,不能出現漢語字元之類的,總之變數命名盡量以英文並且以英文字母開頭總是不會錯的。在這裡我以i命名,這種只在重複執行里用的變數我們稱為循環變數,通常以i、j、k來命名。

那接下來我們來分析一下,第一次PWM輸出0,再等待0.2秒,然後下一次輸出增加1,再等待0.2秒,最後一次輸出255。整個過程包括256次PWM輸出(每次輸出值不同,但比前一次增大1)和256次等待0.2秒,所以每次重複包括1次PWM輸出和等待0.2秒。那麼我們先把相應的指令放進去:

2.循環變數

但是PWM輸出每次不同,所以我們需要用上變數啦,很明顯我們要把變數作為PWM的輸出值啦。怎麼操作?新建的變數是不是很圓,那麼就能往比較圓的框里放。

直接拖過來就是如此簡單粗暴

點擊一下,發現怎麼燈一直滅的呢?首先我們要清楚我們是把變數i的值作為PWM的輸出值輸出了,那麼i值是多少呢?它一直都在舞台左上角上,居然一直都是0!

變數被建立之後默認值是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
圖標


推薦閱讀:
相关文章