B10K可變電阻,
左右PIN接5VDC+-,中間PIN判斷電阻值。
這種配置就是音響的音量調節旋鈕,旋鈕右轉,聲音愈大,LED燈也會亮愈多顆。
利用可變電阻的類比訊號去控制聲音和LED燈。
主要是處理類比資料的章節。
程式如下 :
const int LED1=2;
const int LED2=3;
const int LED3=4;
const int LED4=5;
const int LED5=6;
const int analogPin=A0;
const int buzzer=A1;
void setup(){
for(int i=2;i<=6;i++){
pinMode(i,OUTPUT);
}
pinMode(A0, INPUT);
pinMode(buzzer, OUTPUT);
}
void loop(){
int val = analogRead(analogPin);
//類比值宣告且定義。
tone(buzzer,val*3,1);
//類比資料控制聲音,乘三是因為想讓聲音高一點。
if(val<=50){
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
}
else if(val<=100){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
}else if(val<=250){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
}else if(val<=400){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
}else if(val<=650){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,LOW);
}else if(val<=800){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);
}
//類比值愈大,燈亮的越多。
}
這是上班的時候想到的,就回來試一下。
建議可以在寫一個指標版本的或一個PORT版本的,這兩種會比較精簡
回覆刪除https://www.tutorialspoint.com/cprogramming/c_array_of_pointers.htm
謝謝您的建議,我馬上來試試看^^
刪除作者已經移除這則留言。
回覆刪除