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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1169|回復: 2
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:1081419 發(fā)表于 2023-6-7 22:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想做一個arduino連接蜂鳴器,總共四個按鍵,前面三個按鍵按下發(fā)do,re,mi,后面一個按鍵按下放一首歌,但是現(xiàn)在寫完實現(xiàn)不了前面三個按鍵的功能了,希望得到解答
#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,整數(shù) */
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,浮點(數(shù)組的個數(shù)和前面音符的個數(shù)是一樣的) */
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函數(shù), 可以查出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;//記錄當前播放的音樂的位置
    }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1078332 發(fā)表于 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 發(fā)表于 2023-11-1 16:23 | 只看該作者
不行啊,報錯
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 蜜臀久久99精品久久久久野外 | 日日夜夜精品视频 | 九九久久在线看 | 久久精品视频网站 | 久久日韩粉嫩一区二区三区 | 精品中文字幕在线 | 中文字幕在线观看一区 | 成人在线视频网 | 久久久久久亚洲精品 | 色婷婷一区 | 一区二区三区亚洲 | 日韩无 | 91视频网| 国内精品视频在线观看 | 国产传媒毛片精品视频第一次 | 精品香蕉一区二区三区 | www.久久 | 午夜免费视频 | 国产97人人超碰caoprom | 国产99久久精品一区二区永久免费 | 中文字幕日韩欧美 | 在线亚洲电影 | 久久69精品久久久久久久电影好 | 中文字幕一区二区三区在线乱码 | 国产一区二区精品 | 欧美成人不卡 | 欧美高清视频在线观看 | 欧美成人手机视频 | 伊人婷婷 | 婷婷亚洲综合 | 国产精品成人在线 | 中文字幕精| 一区二区三区在线免费 | 久久国产精品一区二区三区 | 国产精品福利久久久 | 一区二区在线 | 亚洲 欧美 日韩在线 | 91亚洲国产成人久久精品网站 | 日韩国产欧美一区 | 国外成人在线视频 | 欧美一级在线 |