Skip to content

Instantly share code, notes, and snippets.

@gigitex
Created January 24, 2017 01:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gigitex/80d2330501d5221ae8cc4b8b15810258 to your computer and use it in GitHub Desktop.
Save gigitex/80d2330501d5221ae8cc4b8b15810258 to your computer and use it in GitHub Desktop.
// Pins
// const, omdat ze niet veranderen van pin
const int button1 = 13;
const int button2 = 11;
const int button3 = 8;
const int button4 = 12;
const int button5 = 2;
const int button6 = 4;
const int button7 = 7;
const int button8 = 3;
const int sensorPin = A0;
const int RGBRed = 6;
const int RGBGreen = 5;
const int speaker = 9;
//Sensoren/buttons
// geen waarde toegekend, niet nodig. Krijgt waarde tijdens proces.
int buttonState1;
int buttonState2;
int buttonState3;
int buttonState4;
int buttonState5;
int buttonState6;
int buttonState7;
int buttonState8;
int sensorValue;
//Overige ints
int RecordToon;
int a = 0;
//Remotecontrol berichten
int Toonhoogte = 1;
String message = "";
String message2 = "";
int messagetone;
//Bools
bool autoplay = false;
bool startread = false;
bool record = false;
//Millis
unsigned long PreviousMillis;
#define NOTE_A2 110
#define NOTE_B2 123
#define NOTE_C2 65
#define NOTE_D2 73
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_G2 98
#define NOTE_A3 220
#define NOTE_B3 247
#define NOTE_C3 131
#define NOTE_D3 147
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_G3 196
#define NOTE_GS3 208
#define OCTAVE_OFFSET 0
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_BB3 274
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_B7 3951
#define NOTE_AS7 3729
//Voor code van internet, niet geldig voor opdracht.
int notes[] = { 0,
NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,
NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
};
char *MahnaMahna = ":d=16,o=6,b=125:c#,c.,b5,8a#.5,8f.,4g#,a#,g.,4d#,8p,c#,c.,b5,8a#.5,8f.,g#.,8a#.,4g,8p,c#,c.,b5,8a#.5,8f.,4g#,f,g.,8d#.,f,g.,8d#.,f,8g,8d#.,f,8g,d#,8c,a#5,8d#.,8d#.,4d#,8d#.";
char *Simpsons = ":d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6";
char *MissionImp = ":d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d";
//Array met noten die gespeeld moeten worden.
int furelise[] = {
NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_DS4,NOTE_E4, NOTE_B3, NOTE_D3, NOTE_C3, NOTE_A3, 1, NOTE_C2, NOTE_E2, NOTE_A3, NOTE_B3, 1, NOTE_E2, NOTE_GS3, NOTE_B3, NOTE_C3, 1
, NOTE_E2, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_D3, NOTE_C3, NOTE_A3, 1, NOTE_C2, NOTE_E2, NOTE_A3, NOTE_B3, 1, NOTE_E2, NOTE_C3, NOTE_B3, NOTE_A3, 1, NOTE_G3, NOTE_F4, NOTE_G3
, NOTE_F4, NOTE_E4, NOTE_D3, 1, NOTE_F3, NOTE_E4, NOTE_D3, NOTE_C3, 1, NOTE_E2, NOTE_D3, NOTE_C3, NOTE_B3};
int PoC[] = {
NOTE_A3, NOTE_C3, NOTE_D3,1, NOTE_D3, NOTE_E4, NOTE_F4,1, NOTE_F4, 1, NOTE_F4, NOTE_G4
, 1,NOTE_E4,1, NOTE_E4, NOTE_D3, NOTE_C3, NOTE_C3, NOTE_D3,1, NOTE_A3, NOTE_C3, NOTE_D3
, NOTE_D3,1, NOTE_D3, NOTE_E4, NOTE_F4,1, NOTE_F4, 1, NOTE_F4, 1, NOTE_F4, NOTE_G4, 1
, NOTE_E4, 1 , NOTE_E4, 1, NOTE_D3, NOTE_C3, NOTE_D3, 1, NOTE_A3, NOTE_C3, NOTE_D3
, NOTE_D3, 1, NOTE_F4, NOTE_G4, 1, NOTE_G4, 1, NOTE_G4, NOTE_A3, NOTE_BB3, 1, NOTE_BB3
, NOTE_A3, NOTE_G4, NOTE_A3, NOTE_D3, 1, NOTE_D3, NOTE_E4, NOTE_F4, 1, NOTE_F4, 1
, NOTE_G4, 1, NOTE_A3, NOTE_D3, 1, NOTE_D3, NOTE_F4, NOTE_E4, 1 , NOTE_E4, 1
, NOTE_F4, NOTE_D3, NOTE_E4, 1, NOTE_A3, NOTE_C3, NOTE_D3, 1, NOTE_D3, 1, NOTE_D3
, NOTE_E4, NOTE_F4, 1, NOTE_F4, 1, NOTE_G4, 1, NOTE_A3, NOTE_D3, 1, NOTE_D3, NOTE_F4
, NOTE_E4, 1, NOTE_E4};
int ToonHoogte[] = {0};
unsigned long Duur[] = {0};
void setup()
{
// in en outputs
// starten seriele communicatie
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
pinMode(button5, INPUT);
pinMode(button6, INPUT);
pinMode(button7, INPUT);
pinMode(button8, INPUT);
pinMode(speaker, OUTPUT);
pinMode(RGBRed, OUTPUT);
pinMode(RGBGreen, OUTPUT);
analogWrite(RGBRed, 255);
Serial.begin(9600);
}
//deze define is van internet, ook niet geldig voor opdracht.
#define isdigit(n) (n >= '0' && n <= '9')
void loop()
{
//Aflezen van de potmeter en buttons.
sensorValue = analogRead(sensorPin);
buttonState1 = digitalRead(button1);
buttonState2 = digitalRead(button2);
buttonState3 = digitalRead(button3);
buttonState4 = digitalRead(button4);
buttonState5 = digitalRead(button5);
buttonState6 = digitalRead(button6);
buttonState7 = digitalRead(button7);
buttonState8 = digitalRead(button8);
//Millis
unsigned long CurrentMillis = millis();
//Bool blijft altijd aan, er kunnen altijd berichten worden ontvangen.
remotecontrol();
//Als er geen connectie met C# is, kan er gebruik worden gemaakt van de fysieke buttons
if (autoplay == false)
{
buttons();
// Als er niet opgenomen wordt en de button wordt ingedrukt, wordt er opgenomen.
if (buttonState8 == HIGH && record == false && CurrentMillis - PreviousMillis >= 500)
{
record = true;
PreviousMillis = CurrentMillis;
}
// Anders als er wel opgenomen wordt en de button wordt ingedrukt, wordt de opname gestopt.
else if (buttonState8 == HIGH && record == true && CurrentMillis - PreviousMillis >= 500)
{
record = false;
PreviousMillis = CurrentMillis;
play();
}
if (record == true)
{
analogWrite(RGBRed, 0);
analogWrite(RGBGreen, 255);
recordtone();
}
else if (record == false)
{
analogWrite(RGBGreen, 0);
analogWrite(RGBRed, 255);
}
}
}
int StateButton = 0;
void recordtone()
{
unsigned long AmountMillis = millis();
if (buttonState1 == HIGH && StateButton == 0)
{
StateButton = 1;
}
else if (buttonState2 == HIGH && StateButton == 0)
{
StateButton = 2;
}
else if (buttonState3 == HIGH && StateButton == 0)
{
StateButton = 3;
}
else if (buttonState4 == HIGH && StateButton == 0)
{
StateButton = 4;
}
else if (buttonState5 == HIGH && StateButton == 0)
{
StateButton = 5;
}
else if (buttonState6 == HIGH && StateButton == 0)
{
StateButton = 6;
}
else if (buttonState7 == HIGH && StateButton == 0)
{
StateButton = 7;
}
else if (buttonState1 == LOW && StateButton == 1 || buttonState2 == LOW && StateButton == 2 ||
buttonState3 == LOW && StateButton == 3 || buttonState4 == LOW && StateButton == 4 ||
buttonState5 == LOW && StateButton == 5 || buttonState6 == LOW && StateButton == 6 ||
buttonState7 == LOW && StateButton == 7)
{
Serial.println("arecord1");
Serial.println(a);
Duur[a] = AmountMillis - PreviousMillis;
Serial.println(Duur[a]);
ToonHoogte[a] = RecordToon;
Serial.println("Toonhoogterecord");
Serial.println(ToonHoogte[a]);
PreviousMillis = AmountMillis;
StateButton = 0;
a++;
Serial.println("arecord2");
Serial.println(a);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment