# 4.互動式感測器(ArduinoDemo4) ###### tags: `ArduinoDemo` **分類:互動式感測器** **總覽:** 14-2使用Arduino 板讀取類比電壓值,並顯示於Serial Monitor 視窗。當類比電壓大於2.5V 則LED 亮,否則LED 不亮。 19-2使用Arduino 板讀取類比電壓值,控制LED 亮度。當類比電壓值愈小時,LED 較暗,當類比電壓值愈大時,LED 較亮。 30-2使用Arduino 板配合CDS 元件偵測光線的強弱,並以三個LED指示光線的強弱。當光線轉暗時,只有LED1 亮;當光線介於全暗與全亮之間時,只有LED2 亮;當光線轉強時,只有LED3 亮。 37-2配合移動偵測器設計自動小夜燈,當晚上有人靠近時,點亮LED 20秒後關閉,當無人靠近時,關閉LED。 45-2使用Arduino 板配合PING)))超音波距離感測器測量物體的距離(單位:公分),以Serial Monitor 視窗顯示距離,並控制一個LED 閃爍速度及一個蜂鳴器嗶聲,距離愈近,則LED 閃爍速度愈快且蜂鳴器嗶聲愈急促。 --- 14-2使用Arduino 板讀取類比電壓值,並顯示於Serial Monitor 視窗。當類比電壓大於2.5V 則LED 亮,否則LED 不亮。 --- ```Arduino= const int refVolts=5; const byte Led = 13; int val; float volts; void setup() { Serial.begin(9600); } void loop() { val=analogRead(0); volts=(float)val*refVolts/1024; Serial.print("voltage="); Serial.print(volts,2); Serial.println("V"); if (volts>=2.5) analogWrite(Led, 255); else analogWrite(Led, 0); delay(1000); } ``` --- 19-2使用Arduino 板讀取類比電壓值,控制LED 亮度。當類比電壓值愈小時,LED 較暗,當類比電壓值愈大時,LED 較亮。 --- ```Arduino= const int led=3; int val; float volts; void setup() { } void loop() { val=analogRead(0); val=map(val,0,1023,0,255); analogWrite(led,val); } ``` --- 30-2使用Arduino 板配合CDS 元件偵測光線的強弱,並以三個LED指示光線的強弱。當光線轉暗時,只有LED1 亮;當光線介於全暗與全亮之間時,只有LED2 亮;當光線轉強時,只有LED3 亮。 --- ```Arduino= const int cds=0; const int led[]={11,12,13}; int val; float volts; void setup() { pinMode(led,OUTPUT); digitalWrite(led,LOW); } void loop() { val=analogRead(cds); if(val>683) digitalWrite(led[2],HIGH); else if(val<=341) digitalWrite(led[0],HIGH); else digitalWrite(led[1],HIGH); } ``` --- 37-2配合移動偵測器設計自動小夜燈,當晚上有人靠近時,點亮LED 20秒後關閉,當無人靠近時,關閉LED。 --- ```Arduino= const int cds=0; const int led=13; const int PIRout=2; int val; float volts; void setup() { pinMode(led,OUTPUT); pinMode(PIRout,INPUT); digitalWrite(led,LOW); } void loop() { val=analogRead(cds); if(val>512) digitalWrite(led,LOW); else int val=digitalRead(PIRout); if(val==HIGH) { digitalWrite(led,HIGH); delay(20000); digitalWrite(led,LOW); } else { digitalWrite(led,LOW); } } ``` --- 45-2使用Arduino 板配合PING)))超音波距離感測器測量物體的距離(單位:公分),以Serial Monitor 視窗顯示距離,並控制一個LED 閃爍速度及一個蜂鳴器嗶聲,距離愈近,則LED 閃爍速度愈快且蜂鳴器嗶聲愈急促。 --- ```Arduino= #define TRIGPIN 2 #define ECHOPIN 3 #define LED 13 #define speaker 12 long ping() { digitalWrite(TRIGPIN, LOW); delayMicroseconds(2); digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGPIN, LOW); return pulseIn(ECHOPIN, HIGH)/58; } void setup() { Serial.begin(9600); pinMode(TRIGPIN, OUTPUT); pinMode(ECHOPIN, INPUT); pinMode(LED, OUTPUT); } void loop() { long cm = ping(); Serial.println(cm); if (cm <= 100) { digitalWrite(LED, HIGH); delay(cm*1.5 + 10); digitalWrite(LED, LOW); tone(speaker,1000); delay(cm*1.5 + 10); tone(speaker,500); delay(cm*1.5 + 10); } noTone(speaker); delay(100); } ```