****注意 LinkIt 7688 Duo 在 Arduino IDE 1.6.9 有問題 ,Arduino IDE 要用1.6.7*****
小雪幼兒園都使用Grove 套件 + LinkIt Smart 7688 Duo。
使用材料
Grove TouchSensor X 1LinkIt Smart 7688 Duo X 1
LinkIt Smart 7688 Duo 底版 X 1
配線
TouchSensor 接在 LinkIt Smart 7688 Duo 底版 的 "D5"。程式一
這程式手觸摸TouchSensor,D13 LED會亮手離開時LED就熄滅。//********************程式一***************
const int TouchPin=5; // 設定 Pin5 名稱為 "TouchPin"
const int ledPin=13; // 設定 Pin13 名稱為 "ledPin"
void setup(){
pinMode(TouchPin, INPUT); // 設定"TouchPin"為輸入
pinMode(ledPin,OUTPUT); // 設定 "ledPin" 為輸出
}
void loop() {
int sensorValue = digitalRead(TouchPin); //讀取TouchSensor 的狀態
if(sensorValue==HIGH) //如果sensorValue =HIGH
{
digitalWrite(ledPin,HIGH); // ledPin 輸出高電位
}
else {
digitalWrite(ledPin,LOW); // ledPin 輸出低電位
}
delay(100); //延遲0.1秒
}
程式二
這程式是 ON-OFF 模式,觸摸TouchSensor一次LED會亮,觸摸第二次LED會熄滅。//****************程式二*************************
const int TouchPin=5; // 設定 Pin5 名稱為 "TouchPin"
const int ledPin=13; // 設定 Pin13 名稱為 "ledPin"
int sensorValue = 0; // 存放TouchSensor狀態
int ledState = 0; // 存放LED狀態
void setup(){
pinMode(ledPin, OUTPUT); //設定ledPin為輸出
pinMode(TouchPin, INPUT); //設定TouchPin為輸入
}
void loop(){
sensorValue = digitalRead(TouchPin); //讀取TouchSensor 的狀態
if (sensorValue == HIGH) { /如果sensorValue =HIGH
ledState = !ledState; //反轉 LED 狀態
}
while(1) { //進入無窮迴圈
sensorValue = digitalRead(TouchPin);
if(sensorValue == LOW)break; //等待sensorValue =LOW
}
if (ledState == 1) { //如果LED狀態=1
digitalWrite(ledPin, HIGH); //ledPin 輸出高電位
}
else {
digitalWrite(ledPin, LOW); //ledPin 輸出低電位
}
delay(100); //延遲0.1秒
}
程式三
程式是透過 PWM控制LED的明亮度,每次觸摸TouchSensor 會增加約2%的電流,直到最亮時再按一次會關閉。手沒放開會一直循環。//****************程式三***********************
const int TouchPin=5; // 設定 Pin5 名稱為 "TouchPin"
const int ledPin=13; // 設定 Pin13 名稱為 "ledPin"
int n=0; //變數 n 預設值為0
void setup(){
pinMode(ledPin,OUTPUT); // 設定ledPin為輸出
pinMode(TouchPin, INPUT); //設定TouchPin為輸入
}
void loop(){
int sensorValue= digitalRead(TouchPin); //讀取TouchSensor 的狀態
if (sensorValue==HIGH){ //如果sensorValue =HIGH
analogWrite(ledPin,n); // ledPin 輸出PWM
n=n+5; // n+5
if (n>=255){ //如果n>=255
n=0; //
}
}
delay (200); //延遲0.2秒
}
函數
while()
參考資料 : 聯發科創意實驗室 http://home.labs.mediatek.com/?lang=zh-hans
Arduino LLC https://www.arduino.cc/
沒有留言:
張貼留言