我想大家猜得到或許猜不到,
又多少人知道每種課程當中想教的精神,
我想甚至有些老師也忘了其中最重要的涵義...
對不起久久一次新增竟然是嚴肅的開頭..
這幾天C語言老師要我們做紅綠燈,
基本上一開始我聽不懂他所表達的意思,
我很少聽不懂,我只是想表達他的遣詞用字該練練,
過一星期再叫他重新表達一次之後我才瞭解,
他要我們模擬路上的紅綠燈動作寫個程式用LED閃給他看。
我瞭解他想要的是什麼,可是這比較重於設計,
不是隨便複製貼貼改個語法只要邏輯想一下就可以改出來,
在這個去綠島回來落差很大的夜晚,
我無聊得不是先打綠島遊記而是先打作業心得?
我想我越來越往工程師宅宅的路走了...嘖嘖....
================思路分隔線================
平常我都是直接貼上程式碼,
甚至連說明都沒打上去,我猜這樣一定沒人去看過那些程式的想法,
反正大家都是覺得:阿反正有過老師那關就好了,原理或過程關我屁事。
更雞掰的會想:阿都去找他燒就好了,這學期我穩過的了,科科。
算了,再講要離題了。
首先我畫出一個十字路口的情形
│LED1 │
────┘ └────
LED2
────┐ ┌────
│ │
LED1與LED2正面圖
┌───────┐
│○ ○ ○ ○│
└───────┘
從左到又分別構想為
左轉燈、紅燈、黃燈、綠燈 並以
Left、Red、Yellow、Green代表
再來翻出IC的port腳圖,決定要讓LED1與2從哪輸出,
忘記沒關係,因為我也沒記過,隨時都有資訊 何必記?
為了思考與配線方便,我把LED1與LED2分別從port0與port3輸出
以下我又雞婆的把LED縮寫跟接腳重新排列了一次
LED1.
代碼 port腳位 第X腳
L P0.0 1
R P0.1 2
Y P0.2 3
G P0.3 4
LED2.
代碼 port腳位 第X腳
L P3.0 10
R P3.1 11
Y P3.2 12
G P3.3 13
接著是流程方面的設計:
首先可以先不管兩個燈的差距,
想完LED1的流程加個幾秒就是LED1與LED2程式的差距時間,
因為考慮現實面,直角路口的紅綠燈有兩個都紅燈讓車道淨空的時間。
LED1:G---------->Y--->R.L----->R.Y--->R.....
LED2:R------------------------------------->G....
LED1:
綠燈過了10個單位時間變黃燈,(此時LED2為紅燈狀態)
黃燈過了3個單位時間變紅燈與左轉燈,
紅燈左轉燈過了5個單位時間變紅黃燈,
紅黃燈過了3個單位時間變紅燈。
加入一個車道淨空延遲,(直到延遲結束LED2開始同LED1的流程)
然後另一方向車道開始重複第一個流程。
就這樣,後面的配線以及接線圖我不用說也會,
那程式碼呢?
很抱歉,沒有程式碼,我已經把程式碼翻成中文了
只需要翻回程式語言就可以了,很簡單的。
================思路分隔線================
另外有一點要注意的,
是關於延遲時間的拿捏,
才能夠慢得剛好,不會讓人來不及看,
又可以快得剛好,不會讓人看得不耐煩,
由於IC時脈是12MHZ,相當於每秒12萬次,
延遲函數部份改為12,000後,delay(x)就相當於0.x秒,
不能直接用120,000是因為IC好像不能接受這樣,會卡住=_=...
不過實際測試delay(35),默數大約是兩秒,
就這樣。
多自己想有益身體健康,腦袋發展,
別像某些學長只會在網誌上嘴砲,
國文造詣不夠又愛亂用詞打文章自以為文豪。
一個人最可悲就是看不透自己,
國文不好就乖乖拿焊槍,很難?
以上做夢 晚安。
文章標籤
全站熱搜
