ESP-12F 電子鼓

學習如何學習!

設備與材料

個人電腦 × 1
ESP-12F × 1
MAX98357A 模組 × 1
按鈕 × 5
麵包板 × 1
連接線 若干

實體接線圖

開發環境

使用 Arduino IDE 安裝 ESP8266開發板,如果不知道如何安裝ESP8266開發板,可以參考 “準備你的 ESP12E/F 開發工具” ,安裝開發板之後,記得開發板選擇 “NodeMCU 1.0(ESP-12E Module)” ,安裝ESPDrum 程式庫,請在本站下載,選擇 Arduino IDE 中的 “草稿碼” ->”匯入程式庫” ->”加入.Zip程式庫” ,選擇你下載的程式庫,按 “開啟” 即可(可以參考 匯入 zip 程式庫 )。

示範影片

範例程式

/*
 *  ESP12F I2S 電子鼓
 *  開發工具 Arduino IDE 必需自行加入ESP12F 開發板
 *  開發板 ESP12F(ESP8266)+MAX98357A   
 *  5個按鈕可以發出5種音軌的電子鼓聲
 *  MAX98357A   ESP12F
 *  Vin         5V  
 *  GND         G
 *  SD          空腳
 *  GAIN        G 
 *  DIN         RX
 *  BCLK        D8
 *  LRC         D4
 *  https://www.block.tw/blog/download/espdrum/
 */

//按鍵接腳
#define KEY0 13   //D7
#define KEY1 12   //D6
#define KEY2 14   //D5
#define KEY3 0    //D3
#define KEY4 4    //D2
#include <ESPDrum.h>

ESPDrum drum;                 //宣告電子鼓物件

//按鍵狀態
boolean key0Push=false;
boolean key1Push=false;
boolean key2Push=false;
boolean key3Push=false;
boolean key4Push=false;

void setup() {
  Serial.begin(115200);
  Serial.println("Edrum");
  //輸入設定
  pinMode(KEY0,INPUT_PULLUP);
  pinMode(KEY1,INPUT_PULLUP);
  pinMode(KEY2,INPUT_PULLUP);
  pinMode(KEY3,INPUT_PULLUP);
  pinMode(KEY4,INPUT_PULLUP);
  
  drum.begin();   //啟用電子鼓

}

void loop() {
    static int lastms;  
  //防彈跳 30ms 處理一次按鍵
  if (millis() - lastms > 30) {
      //KEY0
      if(!digitalRead(KEY0)){
        if(!key0Push){
          key0Push=true;
          drum.playTrack(0);  //音軌0發音                
        }  
      }else{
        //按鍵一直按只算1次
        key0Push=false;  
      }
      
      //KEY1 按鍵處理
      if(!digitalRead(KEY1)){
        if(!key1Push){
          key1Push=true;
          drum.playTrack(1);  //音軌1發音    
        }  
      }else{
        //按鍵一直按只算1次
        key1Push=false;  
      }
      //KEY2 按鍵處理
      if(!digitalRead(KEY2)){
        if(!key2Push){
          key2Push=true;
          drum.playTrack(2);   //音軌2發音           
        }  
      }else{
        //按鍵一直按只算1次
        key2Push=false;  
      }
      //KEY3 按鍵處理
      if(!digitalRead(KEY3)){
        if(!key3Push){
          key3Push=true;
          drum.playTrack(3);   //音軌3發音            
        }  
      }else{
        key3Push=false;  
      }      
      //KEY4 按鍵處理
      if(!digitalRead(KEY4)){
        if(!key4Push){
          key4Push=true;
          drum.playTrack(4);  //音軌4發音              
        }  
      }else{
        key4Push=false;  
      }            
      lastms = millis();
  }  
  
  drum.play();    //電子鼓演奏
}

入門
知識
語法
流程
函式
實習

發佈留言