Concept
Back home, we usually play the trumpet, but when we came to the UAE, we couldn’t find any trumpets. So, we decided to create our own – an electronic trumpet. It works by using a light sensor for the blowing effect and regular buttons for playing the notes. The sound comes out from a speaker. Simple as that!
The circuit diagram looks a bit messy but it works
#include "pitches.h"
//set the pins for the button, buzzer, and photoresistor
int firstKeyPin = 13;
int secondKeyPin = 12;
int thirdKeyPin = 11;
int buzzerPin = 9;
int blow = A2;
// variables regulate when value is read
const long interval = 200;
unsigned long previousMillis = 0;
int blowVal;
void setup() {
Serial.begin(9600);
//set the button pins as inputs
pinMode(firstKeyPin, INPUT_PULLUP);
pinMode(secondKeyPin, INPUT_PULLUP);
pinMode(thirdKeyPin, INPUT_PULLUP);
//set the buzzer pin as an output
pinMode(buzzerPin, OUTPUT);
// reads value on setup to avoid later error
blowVal = analogRead(blow);
}
void loop() {
// reads current time
unsigned long currentMillis = millis();
// checks if specified duration has passed
if (currentMillis - previousMillis >= interval) {
// updates time since value was read from sensor
previousMillis = currentMillis;
// reads value from sensor
blowVal = analogRead(blow);
}
Serial.println(blowVal);
// conditions to play specific notes
if (blowVal <= 350) {
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_F3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) {
tone(buzzerPin, NOTE_G3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_A3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_AS3);
}
}
if (blowVal > 350) {
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_C4);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_D4);
}
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_E4);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_AS3);
}
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) {
tone(buzzerPin, NOTE_F4);
}
}
}
#include "pitches.h"
//set the pins for the button, buzzer, and photoresistor
int firstKeyPin = 13;
int secondKeyPin = 12;
int thirdKeyPin = 11;
int buzzerPin = 9;
int blow = A2;
// variables regulate when value is read
const long interval = 200;
unsigned long previousMillis = 0;
int blowVal;
void setup() {
Serial.begin(9600);
//set the button pins as inputs
pinMode(firstKeyPin, INPUT_PULLUP);
pinMode(secondKeyPin, INPUT_PULLUP);
pinMode(thirdKeyPin, INPUT_PULLUP);
//set the buzzer pin as an output
pinMode(buzzerPin, OUTPUT);
// reads value on setup to avoid later error
blowVal = analogRead(blow);
}
void loop() {
// reads current time
unsigned long currentMillis = millis();
// checks if specified duration has passed
if (currentMillis - previousMillis >= interval) {
// updates time since value was read from sensor
previousMillis = currentMillis;
// reads value from sensor
blowVal = analogRead(blow);
}
Serial.println(blowVal);
// conditions to play specific notes
if (blowVal <= 350) {
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_F3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) {
tone(buzzerPin, NOTE_G3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_A3);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_AS3);
}
}
if (blowVal > 350) {
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_C4);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_D4);
}
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_E4);
}
if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) {
tone(buzzerPin, NOTE_AS3);
}
if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) {
tone(buzzerPin, NOTE_F4);
}
}
}
#include "pitches.h" //set the pins for the button, buzzer, and photoresistor int firstKeyPin = 13; int secondKeyPin = 12; int thirdKeyPin = 11; int buzzerPin = 9; int blow = A2; // variables regulate when value is read const long interval = 200; unsigned long previousMillis = 0; int blowVal; void setup() { Serial.begin(9600); //set the button pins as inputs pinMode(firstKeyPin, INPUT_PULLUP); pinMode(secondKeyPin, INPUT_PULLUP); pinMode(thirdKeyPin, INPUT_PULLUP); //set the buzzer pin as an output pinMode(buzzerPin, OUTPUT); // reads value on setup to avoid later error blowVal = analogRead(blow); } void loop() { // reads current time unsigned long currentMillis = millis(); // checks if specified duration has passed if (currentMillis - previousMillis >= interval) { // updates time since value was read from sensor previousMillis = currentMillis; // reads value from sensor blowVal = analogRead(blow); } Serial.println(blowVal); // conditions to play specific notes if (blowVal <= 350) { if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_F3); } if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) { tone(buzzerPin, NOTE_G3); } if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_A3); } if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_AS3); } } if (blowVal > 350) { if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_C4); } if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_D4); } if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == LOW) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_E4); } if ((digitalRead(firstKeyPin) == LOW) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == HIGH)) { tone(buzzerPin, NOTE_AS3); } if ((digitalRead(firstKeyPin) == HIGH) && (digitalRead(secondKeyPin) == HIGH) && (digitalRead(thirdKeyPin) == LOW)) { tone(buzzerPin, NOTE_F4); } } }