此作業中,會運用前面學習到的光敏電阻光感應實作以及可變電阻搭配伺服馬達轉動的兩項實作來完成,在過程中若有疑問,可以參考前面學過的範例。
雲(STL) x 1
麵包板載台(STL) x 1
使照片中的黃色LED燈發光。
用光敏電阻讀取黃色LED燈的光強度。
使用可變電阻控制伺服馬達轉動。
當雲遮擋住黃色LED燈後,紅色LED燈要感應發光。
#include <Servo.h>
if (photocellVal < minLight && ledState == 0){
digitalWrite(ledPin, HIGH); // turn on LED
ledState = 1;
}
int photocellPin = A0; // 光敏電阻 (photocell) 接在 anallog pin 2
int potPin = A1; // select the input pin for the potentiometer
int photocellVal = 0; // photocell variable
int minLight = 200; // 最小光線門檻值
int ledPin = 7;
int ledState = 0;
int potpin_value = 0;
int val = 0;
int sensorValue = 0;
photocellVal = analogRead(photocellPin);
Serial.println(photocellVal);
potpin_value = analogRead(potPin);
val = potpin_value; // 讀取可變電阻(數值介於 0 到 1023)
val = map(val,0,1023,0,180); // 把 0 - 1023 的數值按比例縮放為 0 - 180 的數值
myservo.write(val); // 設定 Servo 旋轉角度
delay(15);
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
myservo.attach(9);
}
delay(100);
if (photocellVal > minLight && ledState == 1){
digitalWrite(ledPin, LOW); // turn off LED
ledState = 0;
}
Servo myservo;