2018年1月18日 星期四

Arduino (1) 觸控開關模組TTP223+無源蜂鳴器+IIC/I2C1602顯示器。

講到初級MCU開發,大部分的人先想到8051,

但我比較Perfer Arduino,

原因是前面有些複雜的程式都幫你建好了,你只要看得懂會改就OK了,

但是還是要有點C語言和電子硬體的基礎能力才行,

原理基本上都和8051類似。



開始玩Arduino囉!!!



觸控開關模組TTP223。

三個PIN分別是DC5V與數位輸出,觸動後就給1。




要八個,這一個很便宜掏寶不到20元。




無源蜂鳴器,

需要寫入頻率發出聲音。






拿了張以前工藝課的小椅子來用。

至於杜邦線怎麼接,這基礎的贅述我就不說了。

因為按鍵已經夠多了,所以LCD必須的去搭配IIC(I2C)轉接模組,來減少杜邦線。

沒錯!!!就是電子琴。





LCD顯示的資料為"按到的音階"。


程式如下:


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
//前面都LCD和轉換器的的定義設定。

int const buzzer=2;
int HZ;
char TONE[8][3]={"DO","RE","ME","FA","SO","LA","SI","DO"};
//用陣列字串宣告8個音階。

void setup(){
lcd.begin(16, 2);
Serial.begin(4800);
//序列阜監視。

pinMode(buzzer,OUTPUT);
for(int i=5;i<=12;i++){
pinMode(i,INPUT);
  }
}
void loop(){
for(int i=5;i<=12;i++){
if(digitalRead(i)==HIGH){
tone(buzzer,HZ=523+(i-5)*70,10);
//其實每個音階的頻率都不會只差70Hz,除了DO(523Hz)以外其他因都不太準,但是還是可以 
//分辨,因為我不想一個一個打,所以直接for迴圈套個差不多的頻率。

Serial.println(TONE[i-5]);
lcd.setCursor(0,5);
lcd.print(TONE[i-5]);
//LCD與序列阜顯示。

    }
  }
}




成果差不多是這樣,影片的LCD顯示因為背光太強,不管調背光還是手機錄影都看不清楚,

實際上是有音階顯示的。





2 則留言:

  1. 大神~請問蜂鳴器是要麼接呢?然後我看圖片裡面貌似有麵包板,是必要的嗎?然後還有顯示器也是必要品嗎?勞煩大神解答,謝謝~~
    (原諒我是個初學者...一竅不通>~<)

    回覆刪除
  2. 你好我是玉井工商電子科的看到你的作品很喜歡不知道可不可以麻煩你綁幫幫我給我接線圖 我們會再修改

    回覆刪除

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

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