Skip to content
This repository was archived by the owner on Dec 20, 2024. It is now read-only.

Commit 8cc6dd4

Browse files
Criar biblioteca MusicPlayer para tocar sons
1 parent 796ec38 commit 8cc6dd4

3 files changed

Lines changed: 98 additions & 74 deletions

File tree

lib/MusicPlayer/MusicPlayer.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include <Arduino.h>
2+
#include <Tone.h>
3+
4+
#include "MusicPlayer.h"
5+
6+
MusicPlayer::MusicPlayer(Tone *tone)
7+
{
8+
this->buzzer = tone;
9+
}
10+
11+
void MusicPlayer::playNote(uint16_t frequency, uint32_t duration)
12+
{
13+
this->buzzer->play(frequency, duration * 0.85);
14+
delay(duration);
15+
}
16+
17+
void MusicPlayer::pause(uint32_t duration)
18+
{
19+
delay(duration);
20+
}
21+
22+
void MusicPlayer::cMajorScale()
23+
{
24+
int i;
25+
int notes[] = { NOTE_C6, NOTE_D6, NOTE_E6, NOTE_F6, NOTE_G6, NOTE_A6, NOTE_B6, NOTE_C7 };
26+
27+
for (i = 0; i < 8; ++i) {
28+
this->playNote(notes[i], 35 + (i * 5));
29+
}
30+
}
31+
32+
void MusicPlayer::superMarioTheme()
33+
{
34+
this->playNote(NOTE_E6, 140);
35+
this->playNote(NOTE_E6, 140);
36+
this->pause(140);
37+
this->playNote(NOTE_E6, 140);
38+
this->pause(140);
39+
this->playNote(NOTE_C6, 140);
40+
this->playNote(NOTE_E6, 260);
41+
this->playNote(NOTE_G6, 260);
42+
this->pause(260);
43+
this->playNote(NOTE_G5, 260);
44+
}
45+
46+
void MusicPlayer::sweetChildOMine()
47+
{
48+
int i, j;
49+
int firstNote[] = { NOTE_CS5, NOTE_DS5, NOTE_FS5 };
50+
51+
for (i = 0; i < 3; ++i) {
52+
for (j = 0; j < 2; ++j) {
53+
this->playNote(firstNote[i], 260);
54+
this->playNote(NOTE_CS6, 260);
55+
this->playNote(NOTE_GS5, 260);
56+
this->playNote(NOTE_FS5, 260);
57+
this->playNote(NOTE_FS6, 260);
58+
this->playNote(NOTE_GS5, 260);
59+
this->playNote(NOTE_F6, 260);
60+
this->playNote(NOTE_GS5, 260);
61+
}
62+
}
63+
64+
this->playNote(NOTE_CS5, 260);
65+
}

lib/MusicPlayer/MusicPlayer.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#ifndef PLACARDUINO_MUSIC_PLAYER_H
2+
#define PLACARDUINO_MUSIC_PLAYER_H
3+
4+
#include <Tone.h>
5+
6+
class MusicPlayer
7+
{
8+
public:
9+
MusicPlayer(Tone *buzzer);
10+
11+
void cMajorScale();
12+
void superMarioTheme();
13+
void sweetChildOMine();
14+
15+
void playNote(uint16_t frequency, uint32_t duration);
16+
void pause(uint32_t duration);
17+
18+
private:
19+
Tone *buzzer;
20+
};
21+
22+
#endif // PLACARDUINO_MUSIC_PLAYER_H

src/Placarduino.ino

Lines changed: 11 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <Tone.h>
44

55
#include "LcdBigNumbers.h"
6+
#include "MusicPlayer.h"
67

78
/*
89
* CONSTANTES
@@ -42,13 +43,15 @@ int addPlayer2ButtonState = LOW;
4243

4344
// Objeto para controle de um buzzer
4445
Tone buzzer;
46+
MusicPlayer musicPlayer(&buzzer);
4547

4648

4749
/*
4850
* SETUP
4951
*/
5052

51-
void setup() {
53+
void setup()
54+
{
5255
setupInputs();
5356
setupLCD();
5457
setupBuzzer();
@@ -66,7 +69,8 @@ void setup() {
6669
* LOOP
6770
*/
6871

69-
void loop() {
72+
void loop()
73+
{
7074
checkButtons();
7175
}
7276

@@ -109,72 +113,11 @@ void printWelcome()
109113
lcd.print("a.k.a. DAMN");
110114
}
111115

112-
// Escala de Dó maior
113116
void playWelcome()
114117
{
115-
// Básico
116-
int i;
117-
int notes[] = { NOTE_C6, NOTE_D6, NOTE_E6, NOTE_F6, NOTE_G6, NOTE_A6, NOTE_B6, NOTE_C7 };
118-
119-
for (i = 0; i < 8; ++i) {
120-
buzzer.play(notes[i], 30 + (i * 5));
121-
delay(35 + (i * 5));
122-
}
118+
musicPlayer.cMajorScale();
123119
}
124120

125-
// Super Mário
126-
//void playWelcome()
127-
//{
128-
// buzzer.play(NOTE_E6, 120);
129-
// delay(140);
130-
// buzzer.play(NOTE_E6, 120);
131-
// delay(140);
132-
// delay(140);
133-
// buzzer.play(NOTE_E6, 120);
134-
// delay(140);
135-
// delay(140);
136-
// buzzer.play(NOTE_C6, 120);
137-
// delay(140);
138-
// buzzer.play(NOTE_E6, 240);
139-
// delay(260);
140-
// buzzer.play(NOTE_G6, 240);
141-
// delay(260);
142-
// delay(260);
143-
// buzzer.play(NOTE_G5, 240);
144-
// delay(260);
145-
//}
146-
147-
// Sweet Child O' Mine
148-
//void playWelcome()
149-
//{
150-
// int i, j;
151-
// int firstNote[] = { NOTE_CS5, NOTE_DS5, NOTE_FS5 };
152-
//
153-
// for (i = 0; i < 3; ++i) {
154-
// for (j = 0; j < 2; ++j) {
155-
// buzzer.play(firstNote[i], 240);
156-
// delay(260);
157-
// buzzer.play(NOTE_CS6, 240);
158-
// delay(260);
159-
// buzzer.play(NOTE_GS5, 240);
160-
// delay(260);
161-
// buzzer.play(NOTE_FS5, 240);
162-
// delay(260);
163-
// buzzer.play(NOTE_FS6, 240);
164-
// delay(260);
165-
// buzzer.play(NOTE_GS5, 240);
166-
// delay(260);
167-
// buzzer.play(NOTE_F6, 240);
168-
// delay(260);
169-
// buzzer.play(NOTE_GS5, 240);
170-
// delay(260);
171-
// }
172-
// }
173-
//
174-
// buzzer.play(NOTE_CS5, 240);
175-
// delay(260);
176-
//}
177-
178121
void checkScoreInput(int inputPin, int *stateStore, int *scoreStore, int op, void(*feedbackFunction)())
179122
{
180123
int newButtonState = digitalRead(inputPin);
@@ -224,18 +167,12 @@ void printScore()
224167

225168
void playFeedbackPositive()
226169
{
227-
buzzer.play(NOTE_C6, 120);
228-
delay(140);
229-
230-
buzzer.play(NOTE_C7, 420);
231-
delay(500);
170+
musicPlayer.playNote(NOTE_C6, 140);
171+
musicPlayer.playNote(NOTE_C7, 480);
232172
}
233173

234174
void playFeedbackNegative()
235175
{
236-
buzzer.play(NOTE_C7, 120);
237-
delay(140);
238-
239-
buzzer.play(NOTE_C6, 420);
240-
delay(500);
176+
musicPlayer.playNote(NOTE_C7, 140);
177+
musicPlayer.playNote(NOTE_C6, 480);
241178
}

0 commit comments

Comments
 (0)