10/21
11/11
/*透過這個程式碼,讓我們來看看序列埠是怎麼運作的,同時也來看看你所設定的數位訊號被讀出來是什麼樣子吧*/
int buttonState = 0;
void setup()
{
pinMode(4, OUTPUT); // 4 pin是Arduino內建LED的顯示角位
pinMode(7, INPUT_PULLUP); // 設定7pin是讀取訊號的位置
}
void loop()
{
buttonState = digitalRead(7);
if (buttonState == LOW)
{
digitalWrite(4, HIGH);
}
else
{
digitalWrite(4, LOW);
}
}
心得:
我一開始對腳位的定義方式不是很清楚,原來是要與程式碼相呼應,定義哪一個是output,input。
我原本有在嘗試利用通路斷路的方式來控制燈泡的亮暗,後來就用in/*透過這個程式碼,讓我們來看看序列埠是怎麼運作的,同時也來看看你所設定的數位訊號被讀出來是什麼樣子吧*/s輸入輸出的方法來做,結果雖然能夠成功控制,但會不穩定,因此使用上拉電阻的方法來去使燈泡訊號變得穩定且能正常運作。
11/18 請假
11/25
//only for 360 motor
#include <Servo.h> //載入函式庫,這是內建的,不用安裝
Servo myservo; // 建立SERVO物件
int r = A0 ; //假設一個字母R代替A0的孔洞
int sensorValue;
void setup() {
Serial.begin(9600);
myservo.attach(9); // 設定要將伺服馬達接到哪一個PIN腳
// myservo.write(0); //歸零
// put your setup code here, to run once:
}
void loop() {
sensorValue = analogRead(r);
Serial.println(sensorValue);
if(sensorValue <= 80){ //如果光敏電阻的數值小於或大於某一數值時,則伺服馬達轉動。
myservo.write(10); //旋轉到30度
delay(200); //延遲0.5 秒
myservo.write(170); //旋轉到0度
delay(200); //延遲0.5秒 可自行更改
}
else{
myservo.write(90); //停止
delay(15);
}
}
心得:在偵測用光敏電阻黑白的時候需要給程式一個比較大的偵測區間,才不會因為每個仙人掌的亮度不一樣兒沒偵測到,使小恐龍撞樹。
我學到了如何用Arduino利用偵測亮暗來使馬達運轉。(後來越跑越快要手動把光敏電阻往前移)
12/2
#define m1 294 //頻率1
#define m5 440 //頻率2
#define h5 880 //頻率3
int red = 2;
int yellow = 3;
int green = 4;
int v=5; //蜂鳴器輸出
int trigPin = 12; //定義 觸發輸出腳位 Trig Pin
int echoPin = 11; //定義 回音接收腳位 Echo Pin
float duration, distance; //定義 時間長度duration 與 距離distance 格式為 浮點數
void setup(){
Serial.begin(9600); //設定 序列埠 鮑率
while (!Serial){ ;} //等待序列埠接通
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
pinMode(v, OUTPUT);
pinMode(trigPin, OUTPUT); //設定 觸發輸出腳位(trigPin)的功能為 輸出(OUTPUT)
pinMode(echoPin, INPUT); //設定 回音接收腳位(echoPin)的功能為 輸入(INPUT)
}
void loop(){
//於 觸發輸出腳位 Trig Pin 產生觸發脈衝(應大於 10微秒)
digitalWrite(trigPin, LOW); // 讓觸發腳位trigPin 確實降回低電位,持續 20微秒 (us)
delayMicroseconds(20);
digitalWrite(trigPin, HIGH); // 觸發腳位trigPin 變成高電位,持續 20微秒 (us)
delayMicroseconds(20);
digitalWrite(trigPin, LOW); // 觸發腳位trigPin 再降回低電位,完成脈衝,使HC-SR04產生聲音脈衝出去
duration = pulseIn(echoPin, HIGH); // 於回音接收腳位(Echo Pin) 收到高電位(High) 的時間 (微秒 us)
distance = duration*0.0170; // 將聲音 "來回" 時間(us) 換算成距離 (cm) [ 假設聲波速率為 340 m/s ]
if (distance >= 25 ){
digitalWrite(green, HIGH);
digitalWrite(yellow, LOW); digitalWrite(red, LOW);
tone(v, m1, 200);
delay(250);
}
else if (distance >= 5 and distance <= 25){
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW); digitalWrite(red, LOW);
tone(v, m5, 150);
delay(200);
}
else {
digitalWrite(red, HIGH);
digitalWrite(green, LOW); digitalWrite(yellow, LOW);
tone(v, h5, 100);
delay(150);
}
//Serial.println(distance); // 將 距離distance 傳送到序列埠暫存器
Serial.flush(); // 等待序列埠暫存器中的數據傳送至電腦完畢
delayMicroseconds(duration*1.5); //避免收到更早發出的聲音脈衝 回音
}
心得:我會做倒車雷達了喔!!真的太酷了居然能用Arduino做這個,希望以後能夠做出更多相關的東西。
113-2學期課程企劃書
主題:自動感應酒精噴霧
組員:411214308 李亞翰
啟發:因為常常因為打球手髒不方便吃零食,因此想做一台放在書桌上用。
所需材料:
Arduino板*1
麵包板
USB電纜
LED燈泡*2)
電阻器
杜棒線
伺服電機*1
超聲波感測器
專題製作的方法與進行步驟:
利用Arduino程式的應用來製作一個屬於自己的自動乾洗手機。
作法:利用雷達感應距離,再利用伺服馬達來向下拉扯下壓押頭,使消毒液擠出。
預定進度表:前五週思考程式及產品設計規劃,後五週做出成品。