--- title: 0612 Arduino01 Preview tags: Arduino 回家作業 --- # 0612 Arduino01 回家作業 ## [計數器](https://www.tinkercad.com/things/4tP9KugQtfr-grand-robo/editel?sharecode=bWZeQGBNTpSfKcdObW2S9JRnhd9MSh2oy1gfdE1kEcE) ![](https://i.imgur.com/4GNDaqF.png) ```// C++ code // #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 9, 8, 3); void setup() { pinMode(13, OUTPUT); pinMode(7, INPUT); pinMode(6, INPUT); pinMode(5, INPUT); pinMode(4, INPUT); Serial.begin(9600); digitalWrite(13, HIGH); } int oneMinute = 60; int fiveMinute = 300; int tenMinute = 600; int countDown = -1; int pause = 0; int tmp = 0; void loop() { if(digitalRead(5)) { countDown = oneMinute; return delay(10); } if(digitalRead(6)) { countDown = fiveMinute; return delay(10); } if(digitalRead(7)) { countDown = tenMinute; return delay(10); } if(digitalRead(4)) { if(pause) { pause = 0; countDown = tmp; lcd.setCursor(0, 1); lcd.print(""); } else { pause = 1; tmp = countDown; countDown = -1; lcd.setCursor(0, 1); lcd.print("pasue"); delay(1000); } } if(countDown >= 0) { // 設定 LCD 陣列的 Columns 及 rows lcd.begin(16, 2); // 輸出訊息至 LCD lcd.print(countDown/60); lcd.print(":"); lcd.print(countDown%60); --countDown; delay(1000); } } ``` ## [實作有四種聲音的鋼琴鋼琴](https://www.tinkercad.com/things/33eOxkVTgZJ-stunning-jaiks-leelo/editel?sharecode=4BiRCtDn4pv_GBv5DYdvyMr2GH-u56ygvMVzmKlpqPY) ![](https://i.imgur.com/HlBEQ3I.jpg) ```C++ // C++ code // /* Keyboard Plays a pitch that changes based on a changing input circuit: * 3 pushbuttons from +5V to analog in 0 through * 3 10K resistors from analog in 0 through 3 to ground * 8-ohm speaker on digital pin 8 */ void setup() { pinMode(8, OUTPUT); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); } void loop() { // if button press on A0 is detected if (digitalRead(A0) == HIGH) { tone(8, 440, 100); // play tone 57 (A4 = 440 Hz) } // if button press on A1 is detected if (digitalRead(A1) == HIGH) { tone(8, 494, 100); // play tone 59 (B4 = 494 Hz) } // if button press on A2 is detected if (digitalRead(A2) == HIGH) { tone(8, 523, 100); // play tone 60 (C5 = 523 Hz) } // if button press on A3 is detected if (digitalRead(A3) == HIGH) { tone(8, 587, 100); // play tone 62 (D5 = 587 Hz) } delay(10); // Delay a little bit to improve simulation performance } ``` ## [倒車雷達](https://www.tinkercad.com/things/g26QRqYMIQq-incredible-luulia-fulffy/editel?sharecode=N28sKkzYv-pNaaKb-tApmfwKdUusub1fRGwjMGk43L0) ![](https://i.imgur.com/TTTSVdo.png) ```c++ const int SENSOR_PIN=A0; const int BUZZER_PIN=A1; const int BUZZER_FREQUENCE=200; const int DANGER_DISTANCE=200; int duration=0; int counter=0; int cm=0; void setup() { Serial.begin(9600); pinMode(BUZZER_PIN,OUTPUT); } long microsecondsToCentimeters(long microseconds) // get distance from duration { return microseconds / 29 / 2; } void loop() { // send a signal pinMode(SENSOR_PIN, OUTPUT); digitalWrite(SENSOR_PIN, LOW); delayMicroseconds(2); digitalWrite(SENSOR_PIN, HIGH); delayMicroseconds(5); digitalWrite(SENSOR_PIN, LOW); // receive signal pinMode(SENSOR_PIN, INPUT); duration = pulseIn(SENSOR_PIN, HIGH); // compute distance from signal duration cm = microsecondsToCentimeters(duration); if(cm<(DANGER_DISTANCE/100))// extreme dangerous { tone(BUZZER_PIN, BUZZER_FREQUENCE, 1000); delay(1000); } else if(cm<DANGER_DISTANCE)// dager, higher frquence when closer distance { for(int i=0;i<DANGER_DISTANCE/cm;i++){ tone(BUZZER_PIN, BUZZER_FREQUENCE, 100); delay(1000/DANGER_DISTANCE*cm); } } } ``` ## 問答題 ### 伺服馬達運作原理 ![](https://i.imgur.com/P8UN2JI.png) 伺服馬達的基本原理是接受 PWM 訊號,經由內部電路計算出馬達的轉動角度,大多數伺服馬達旋轉角度是 0 到 180 度,PWM 訊號的頻率必須是 50 Hz,控制馬達角度的脈衝持續時間約是 1.0 ms 到 2.0 ms,脈衝持續時間若為 1.0 ms 時角度為 0 度,1.2 ms 時角度為 45 度,1.5 ms 時角度為 90 度,2.0 ms 時角度為 180 度。 伺服電機分為交流和直流兩種 直流伺服電機機體較細長,轉子慣性較小,且具有線性反應佳與簡單易於控制特性.直流伺服電機操作容易,旋轉方向由電流決定,旋轉速度由改變電壓來控制 交流伺服電機使用在感應電機與交流無刷電機。為了讓感應電機變化旋轉速度,必須改變電源頻率.無刷伺服馬達的控制原理是將鐵製核心置於外部。當轉子成為暫時性的磁鐵,定子則成為繞鐵線圈。外部電路的電流將會在既定的轉子位置進行反轉。所以,此款伺服馬達是由交流電所驅動的。 ### LCD螢幕運作說明 主要是利用前後偏光片與前後導電玻璃(透明電極)之間的液晶分子改變極化光的極化方向,造成每一個畫素亮(白)與暗(黑)的變化,再利用彩色濾光片產生紅(R)、綠(G)、藍(B)三種不同顏色排列組合成我們所看到的影像 #### 流程:LED發出白光,經過導光板照亮整個畫面>穿過擴散膜讓光更柔和>稜鏡膜把光集中到一定角度,確保光往正確的方向走>後偏光片讓光極化,只讓特定特定方向的光通過>後透明電極,通電影響液晶分子排列>薄膜電晶體(TFT)控制電壓大小>前透明電極>穿過彩色濾光片>前偏光片>產生畫面 ![](https://i.imgur.com/akRLWpK.png) ## 「如何把文組的同學教會寫程式」微講座心得 至少 150 字 > 這次浩文老師的課程我很喜歡,互動性十足。從 slido 到問卷填答、統計資料,還有線上的背景調查,整堂課程沒有無聊想睡的環節。 > 與不同背景的人溝通合作也幾乎是每個人的必修課,因為現在這個時代已經無法單打獨鬥樣樣來,由不同背景的人組成團隊已成必然。 > 「用他的語言講給他聽」整堂課的重點濃縮大概就是這句話了。至於要如何知道對方的背景,知道對方的語言,那也是必須要練習的了。 > [name=楊傑安] 這次演講的內容真的很活潑,也很有趣,透過很多互動跟活動讓我們一直專注在演講上面。從做問卷到分析問卷後的每個意義,告訴我們要去了解不同行業的人怎麼想。在告訴不是同行業的人時,也要站在他的角度告訴他你的專業,也透過看影片的方式,讓大家了解到其實一個團隊裡面大家不能只會自己領域方面的事,各方面的了解會讓整個團隊行動起來更流暢。 > [name=陳靖潍] >浩文老師從一開場就給人一種強烈開朗風趣的感覺,不管是對於希望大家一起放開心胸感受遠距教學,到後來一起填的一份多元領域問卷,老師用很輕鬆寫意的方式帶領大家探討跨領域合作的嚴肅議題。 >從在學校的同儕之間到未來出社會之後更為緊湊的跨領域合作,如何理解並有效的和背景完全不同的成員進行溝通,完成彼此的責任和共同目標,是最重要的能力。 > [name=洪宇辰] >這次浩文老師的課程我最印象深刻的就是問卷填答的部分,浩文老師捨棄以往演講都是單方面的給予,改成利用問卷調查的方式,造成非常多的互動,整個演講都很有趣。浩文老師利用問券的方式,讓這個來自很多很多科系的新科技、新媒體的的人對彼此有更深的了解。甚至在進一步的給我們未來進入職場非常重要的團隊合作的啟發。 >[name=李智宇] > >上周可以有幸參與張老師的演講,我個人覺得真的收穫了很多的。在課程中講師有給我們做一下小測驗,讓我們簡單了解一下針對不同背景的人,會有怎樣的想法。我覺得這個測驗真的還滿有趣的。後來講師開始分享給我們知道業界目前比較喜歡那類型的人才。其中教會我們最重要的一點就是溝通,如果我們不懂得溝通,真的很難和其他人合作。特別是和一位比較喜歡刁難我們的外國人,懂得用別人的語言讓人家覺得我們真心想了解和解決問題。這一點真的很重要的。 >[name=顏偉勝]