久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1353|回復: 2
收起左側

想做一個Arduino蜂鳴器按鍵唱歌的,但是出現了問題,求各位大佬解答

[復制鏈接]
ID:1081419 發表于 2023-6-7 22:11 | 顯示全部樓層 |閱讀模式
想做一個arduino連接蜂鳴器,總共四個按鍵,前面三個按鍵按下發do,re,mi,后面一個按鍵按下放一首歌,但是現在寫完實現不了前面三個按鍵的功能了,希望得到解答
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556

#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278

#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 112/* 以上部分是定義是把每個音符和頻率值對應起來 */
/********** 這部分是用英文對應了拍子 **********/
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
/* 這部分就是整首曲子的音符部分,用了一個序列定義為tune,整數 */
int tune[] = {  
NOTE_D0,NOTE_D0,NOTE_D0,NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,
NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D3,NOTE_D4,NOTE_D3,NOTE_D4,NOTE_DH1,
NOTE_D3,NOTE_D3,NOTE_D0,NOTE_DH1,NOTE_DH1,NOTE_DH1,NOTE_D7,NOTE_D4,NOTE_D4,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D0,NOTE_D6,NOTE_D7,
NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,
NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D2,NOTE_D3,NOTE_D4,NOTE_DH1,NOTE_D7,NOTE_D7,NOTE_DH1,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH3,NOTE_DH1,NOTE_DH1,NOTE_DH1,
NOTE_DH1,NOTE_D7,NOTE_D6,NOTE_D6,NOTE_D7,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D6,NOTE_DH1,NOTE_DH2,NOTE_DH3,NOTE_DH2,NOTE_DH3,NOTE_DH5,
NOTE_DH2,NOTE_DH2,NOTE_DH2,NOTE_D5,NOTE_D5,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,
NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH2,NOTE_DH2,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_DH4,NOTE_DH3,NOTE_DH2,NOTE_DH1,
NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0,NOTE_DH1,
NOTE_DH2,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH5,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,
NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0,……



/* 這部分是整首曲子的接拍部分,也定義個序列duration,浮點(數組的個數和前面音符的個數是一樣的) */
float durt[]= {  
  1,1,1,0.5,0.5,     1+0.5,0.5,1,1,     1,1,1,0.5,0.5,
  1+0.5,0.5,1,1,     1,1,1,1,          1+0.5,0.5,1,1,
  1,1,0.5,0.5,0.5,0.5,    1+0.5,0.5,1,1,     1,1,1,0.5,0.5,
  1+0.5,0.5,1,1,    1,1,1,0.5,0.5,     1+0.5,0.5,1,1,
  1,1,1,0.5,0.5,    1,0.5,0.25,0.25,0.25,0.5,    0.5,0.5,0.5,0.25,0.5,1,
  0.5,0.5,0.5,0.5,1,1,    1,1,1,0.5,0.5,    1+0.5,0.5,1,1,
  1,1,1,0.5,0.5,    1.5,0.5,1,1,    1,1,1,1,
  0.5,0.5,1,1,0.5,0.5,    1.5,0.25,0.5,1,    1,1,1,1,
  1,1,1,1,    1,1,1,1,    0.5,0.5,1,1,0.5,0.5,
  1,0.5,0.5,1,1,    1,1,1,1,    1,1,1,1,
  0.5,0.5,1,1,0.5,0.5,    1,0.5,0.25,0.5,1,    1,1,1,0.5,0.5
};
/**********************************************************************************/
int length;     /* 這里定義一個變量,后面用來表示共有多少個音符 */
int buttonPin = 5;//按鍵
boolean ledState = false;
LiquidCrystal lcd(0, 1, 8, 6, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN

void setup()

{
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  pinMode(2,INPUT);//do
  pinMode(3,INPUT);//re
  pinMode(4,INPUT);//mi
  pinMode(9,OUTPUT);
  /* 這里用了一個sizeof函數, 可以查出tone序列里有多少個音符 */
  length = sizeof(tune)/sizeof(tune[0]);
  pinMode(buttonPin, INPUT_PULLUP);
lcd.clear();  
}
int p;
void loop()
{
  // set the cursor to column 0, line 1
  lcd.setCursor(0, 0);
  lcd.print("MUSIC PLAYER");//print name
  //print name
  delay(750);//delay of 0.75sec
  // set the cursor to column 0, line1
   noTone(9);
   if(digitalRead(2)==HIGH)
   {
     tone(9,523);
     lcd.setCursor(0, 1);
     lcd.print("DO");
   }
   else if(digitalRead(3)==HIGH)
   {
      tone(9,587);
      lcd.setCursor(0, 1);
      lcd.print("RE");
   }
   else if(digitalRead(4)==HIGH)
   {
      tone(9,659);
      lcd.setCursor(0, 1);
      lcd.print("MI");
   }
   delay(5);
   for (int x = 0; x < length; x++)
  {
    if (digitalRead(buttonPin) == HIGH) {//如果讀取到按鍵被按壓改變ledStart
      ledState = !ledState ;
      delay(500);//這個延遲是你按壓按鍵的大概時間
      p = x;//記錄當前播放的音樂的位置
    }

回復

使用道具 舉報

ID:1078332 發表于 2023-6-8 16:44 | 顯示全部樓層
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556

#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278

#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 112

#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.125
#define SIXTEENTH 0.0625

int tune[] = {  
  NOTE_D0,NOTE_D0,NOTE_D0,NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,
  NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D3,NOTE_D4,NOTE_D3,NOTE_D4,NOTE_DH1,
  NOTE_D3,NOTE_D3,NOTE_D0,NOTE_DH1,NOTE_DH1,NOTE_DH1,NOTE_D7,NOTE_D4,NOTE_D4,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D0,NOTE_D6,NOTE_D7,
  NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,
  NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D2,NOTE_D3,NOTE_D4,NOTE_DH1,NOTE_D7,NOTE_D7,NOTE_DH1,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH3,NOTE_DH1,NOTE_DH1,NOTE_DH1,
  NOTE_DH1,NOTE_D7,NOTE_D6,NOTE_D6,NOTE_D7,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D6,NOTE_DH1,NOTE_DH2,NOTE_DH3,NOTE_DH2,NOTE_DH3,NOTE_DH5,
  NOTE_DH2,NOTE_DH2,NOTE_DH2,NOTE_D5,NOTE_D5,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,
  NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH2,NOTE_DH2,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_DH4,NOTE_DH3,NOTE_DH2,NOTE_DH1,
  NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0,NOTE_DH1,
  NOTE_DH2,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH5,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,
  NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0
};

float dur[] = {  
  1, 1, 1, 0.5, 0.5,
  1 + 0.5, 0.5, 1, 1,
  1, 1, 1, 0.5, 0.5,
  1 + 0.5, 0.5, 1, 1,
  1, 1, 1, 1,
  1 + 0.5, 0.5, 1, 1,
  1, 1, 0.5, 0.5,
  0.5, 0.5, 1 + 0.5, 0.5,
  1, 1, 0.5, 0.5,
  1 + 0.5, 0.5, 1, 1,
  1, 1, 1, 0.5, 0.5,
  1 + 0.5, 0.5, 1, 1,
  1, 1, 1, 0.5, 0.5,
  1.5, 0.5, 1, 1,
  1, 1, 1, 1,
  0.5, 0.5, 1, 1,
  0.5, 0.5, 0.25, 0.25,
  0.25, 0.5, 0.5, 0.5, 0.25,
  0.5, 1, 0.5, 0.5,
  0.5, 0.5, 0.5, 0.5,
  1, 0.5, 0.25, 0.5, 1,
  1, 1, 1, 0.5, 0.5
};

const int buzzerPin = 9;
const int doPin = 2;
const int rePin = 3;
const int miPin = 4;
const int playPin = 5;

int length;
boolean isPlaying = false;
LiquidCrystal lcd(0, 1, 8, 6, 10, 11);

void setup() {
  lcd.begin(16, 2);
  pinMode(doPin, INPUT_PULLUP);
  pinMode(rePin, INPUT_PULLUP);
  pinMode(miPin, INPUT_PULLUP);
  pinMode(playPin, INPUT_PULLUP);
  pinMode(buzzerPin, OUTPUT);
  length = sizeof(tune) / sizeof(tune[0]);
  lcd.setCursor(0, 0);
  lcd.print("MUSIC PLAYER");
}

int currentNote = 0;

void loop() {
  if (digitalRead(doPin) == LOW) {
    tone(buzzerPin, NOTE_D1);
    lcd.setCursor(0, 1);
    lcd.print("DO          ");
  } else if (digitalRead(rePin) == LOW) {
    tone(buzzerPin, NOTE_D2);
    lcd.setCursor(0, 1);
    lcd.print("RE          ");
  } else if (digitalRead(miPin) == LOW) {
    tone(buzzerPin, NOTE_D3);
    lcd.setCursor(0, 1);
    lcd.print("MI          ");
  } else if (digitalRead(playPin) == LOW && !isPlaying) {
    lcd.setCursor(0, 1);
    lcd.print("Playing...  ");
    isPlaying = true;
    currentNote = 0;
  } else if (currentNote < length && isPlaying) {
    int note = tune[currentNote];
    float duration = dur[currentNote];
    if (note == NOTE_D0) {
      noTone(buzzerPin);
    } else {
      tone(buzzerPin, note, duration * 1000);
    }
    delay(duration * 1000 * 0.8);
    noTone(buzzerPin);
    delay(duration * 1000 * 0.2);
    currentNote++;
  } else if (currentNote >= length && isPlaying) {
    isPlaying = false;
    lcd.setCursor(0, 1);
    lcd.print("             ");
  }
}
回復

使用道具 舉報

ID:1098105 發表于 2023-11-1 16:23 | 顯示全部樓層
不行啊,報錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线视频观看 | 欧美一区在线视频 | 一本一道久久a久久精品蜜桃 | 日韩av手机在线 | 97操碰 | 亚洲美女视频 | 黄色免费片 | 黄色裸体视频 | 狠狠干天天 | 欧美日韩一区二区三区 | 亚洲精品少妇 | 美女无遮挡网站 | 色婷婷影院 | 麻豆影音 | 国产免费一级片 | 欧美成人一区二区 | 国产网站在线 | 夜间福利视频 | 国产不卡在线视频 | 国产免费一区 | 国产高清视频在线观看 | 国产6区| 91污视频在线观看 | 日韩网站免费观看 | 亚洲二区视频 | 精品一区二区免费视频 | 91亚洲精品在线 | 午夜精品视频在线观看 | 美女视频福利 | 欧美一区二区视频在线观看 | 日本免费视频 | 国产精品第一 | 中文字幕在线视频播放 | 伊人网在线播放 | 欧美黄色片网站 | 久久手机视频 | 亚洲精品1区2区 | 亚洲午夜在线观看 | 成人影| 四虎黄色网址 | 伊人天堂网 |