2018年2月1日 星期四

Arduino (16) B10K可變電阻類比控制排列LED燈與無源蜂鳴器。



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);
   }
//類比值愈大,燈亮的越多。

}


這是上班的時候想到的,就回來試一下。


3 則留言:

  1. 建議可以在寫一個指標版本的或一個PORT版本的,這兩種會比較精簡
    https://www.tutorialspoint.com/cprogramming/c_array_of_pointers.htm

    回覆刪除
    回覆
    1. 謝謝您的建議,我馬上來試試看^^

      刪除
  2. 作者已經移除這則留言。

    回覆刪除

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...