Skip to content

Commit

Permalink
Merge pull request #21 from rafaelcruzpb/buzzer
Browse files Browse the repository at this point in the history
Add passive buzzer speaker support
  • Loading branch information
arntsonl authored Dec 31, 2022
2 parents 0d9ae6a + 1a43db2 commit 8df68c3
Show file tree
Hide file tree
Showing 15 changed files with 15,934 additions and 15,553 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Full documentation can be found at <https://www.gp2040-ce.info>.
* Multiple profile support
* Support for 128x64 monochrome I2C displays - SSD1306, SH1106, and SH1107 compatible
* Custom startup splash screen and easy image upload via web configuration
* Support for passive buzzer speaker (3v or 5v)
* [Built-in, embedded web configuration](https://www.gp2040-ce.info/#/web-configurator) - no download required!

Visit the [GP2040-CE Usage](https://www.gp2040-ce.info/#/usage) page for more details.
Expand Down
9 changes: 9 additions & 0 deletions configs/Pico/BoardConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,4 +211,13 @@
#define DUAL_DIRECTIONAL_STICK_MODE DPAD_MODE_DIGITAL
#define DUAL_DIRECTIONAL_COMBINE_MODE DUAL_COMBINE_MODE_MIXED

// This is the Buzzer Speaker section.
// In this section you can specify if Buzzer Speaker will be active, and, if active, which pin will be used for them.
// The default is `BUZZER_ENABLED` which will turn the Buzzer Speaker off.
// The default pin for Buzzer Speaker is `-1` which will turn the Buzzer Speaker off.
// The default volume for Buzzer Speaker is 100 (max).
#define BUZZER_ENABLED 0
#define BUZZER_PIN -1
#define BUZZER_VOLUME 100

#endif
Binary file added docs/assets/images/gpc-add-ons-buzzer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions docs/web-configurator.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ I2C Analog ADS1219
* `I2C Analog ADS1219 Speed` - Sets the speed of I2C communication. Common values are `100000` for standard, `400000` for fast and `800000` ludicrous speed.
* `I2C Analog ADS1219 Address` - Sets the address for the I2C Analog ADS1219.

Buzzer Speaker

![GP2040 Configurator - Add-Ons Buzzer](assets/images/gpc-add-ons-buzzer.png)

* `Use buzzer` - Turns on/off the buzzer module.
* `Buzzer Pin` - The GPIO pin used for the buzzer.
* `Buzzer Volume` - Audio volume of buzzer. 0-100.

## Data Backup and Restoration

![GP2040 Configurator - Add-Ons Backup and Restore](assets/images/gpc-backup-and-restore.png)
Expand Down
147 changes: 147 additions & 0 deletions include/addons/buzzerspeaker.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
#ifndef BUZZER_H_
#define BUZZER_H_

#include <vector>
#include <string>
#include "gpaddon.h"
using namespace std;

#ifndef BUZZER_ENABLED
#define BUZZER_ENABLED -1
#endif

#ifndef BUZZER_PIN
#define BUZZER_PIN -1
#endif

#ifndef BUZZER_VOLUME
#define BUZZER_VOLUME 100
#endif

// Buzzer Speaker Module
#define BuzzerSpeakerName "BuzzerSpeaker"

enum Tone {
B0 = 31,
C1 = 33,
CS1 = 35,
DS1 = 39,
E1 = 41,
F1 = 44,
FS1 = 46,
G1 = 49,
GS1 = 52,
A1 = 55,
AS1 = 58,
B1 = 62,
C2 = 65,
CS2 = 69,
D2 = 73,
DS2 = 78,
E2 = 82,
F2 = 87,
FS2 = 93,
G2 = 98,
GS2 = 104,
A2 = 110,
AS2 = 117,
B2 = 123,
C3 = 131,
CS3 = 139,
D3 = 147,
DS3 = 156,
E3 = 165,
F3 = 175,
FS3 = 185,
G3 = 196,
GS3 = 208,
A3 = 220,
AS3 = 233,
B3 = 247,
C4 = 262,
CS4 = 277,
D4 = 294,
DS4 = 311,
E4 = 330,
F4 = 349,
FS4 = 370,
G4 = 392,
GS4 = 415,
A4 = 440,
AS4 = 466,
B4 = 494,
C5 = 523,
CS5 = 554,
D5 = 587,
DS5 = 622,
E5 = 659,
F5 = 698,
FS5 = 740,
G5 = 784,
GS5 = 831,
A5 = 880,
AS5 = 932,
B5 = 988,
C6 = 1047,
CS6 = 1109,
D6 = 1175,
DS6 = 1245,
E6 = 1319,
F6 = 1397,
FS6 = 1480,
G6 = 1568,
GS6 = 1661,
A6 = 1760,
AS6 = 1865,
B6 = 1976,
C7 = 2093,
CS7 = 2217,
D7 = 2349,
DS7 = 2489,
E7 = 2637,
F7 = 2794,
FS7 = 2960,
G7 = 3136,
GS7 = 3322,
A7 = 3520,
AS7 = 3729,
B7 = 3951,
C8 = 4186,
CS8 = 4435,
D8 = 4699,
DS8 = 4978,
PAUSE = 0
};

struct Song {
uint16_t toneDuration;
vector<Tone> song;
Song(uint16_t t, vector<Tone> s){
toneDuration = t;
song = s;
};
};

// Buzzer Speaker
class BuzzerSpeakerAddon : public GPAddon
{
private:
void processBuzzer();
void play(Song *song);
void playIntro();
void stop();
uint32_t pwmSetFreqDuty(uint slice, uint channel, uint32_t frequency, float duty);
uint8_t buzzerPinSlice;
uint8_t buzzerPinChannel;
uint8_t buzzerVolume;
uint32_t startedSongMils;
Song *currentSong;
bool introPlayed;
public:
virtual bool available(); // GPAddon
virtual void setup();
virtual void process();
virtual std::string name() { return BuzzerSpeakerName; }
};

#endif
35 changes: 35 additions & 0 deletions include/songs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "addons/buzzerspeaker.h"

// Intro example
Song introSong{
100,
{
D5,
AS5,
B5,
C6,
CS6,
D6,
DS6,
E6,
C7,
CS7,
D7,
DS7,
E7,
F7,
D8,
DS8,
}
};

Song configModeSong{
150,
{
E5,
E5,
G4,
FS5,
E5
}
};
3 changes: 3 additions & 0 deletions include/storagemanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ struct BoardOptions
char boardVersion[32]; // 32-char limit to board name
uint32_t checksum;
OnBoardLedMode onBoardLedMode;
bool buzzerEnabled;
uint8_t buzzerPin;
uint8_t buzzerVolume;
};

struct SplashImage {
Expand Down
Loading

0 comments on commit 8df68c3

Please sign in to comment.