// A fun sketch to demonstrate the use of the Tone library.
// To mix the output of the signals to output to a small speaker (i.e. 8 Ohms or higher),
// simply use 1K Ohm resistors from each output pin and tie them together at the speaker.
// Don't forget to connect the other side of the speaker to ground!
// You can get more RTTTL (RingTone Text Transfer Language) songs from
// http://merwin.bespin.org/db/rts/index.php
#include <Tone.h>
#include <FastLED.h>
#define NUM_LEDS 24
#define DATA_PIN 10 //How boring and obvious!
#define COLOR_ORDER GRB //Green (G), Red (R), Blue (B)
#define CHIPSET WS2812B
#define BRIGHTNESS 125
#define VOLTS 5
#define MAX_AMPS 3600 //value in milliamps
Tone tone1;
#define OCTAVE_OFFSET 0
CRGB leds[NUM_LEDS];
int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;
int i = 0;
int j = 0;
int ind_random = 0;
int Arduino_Pins[7] = {pinA, pinB, pinC, pinD, pinE, pinF, pinG};
int Segment_Pins[10][7] = {{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0}, // 9
};
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 *song[] = {"The 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",
"Indiana:d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6",
"tetris:d=4,o=5,b=160:e6,8b,8c6,8d6,16e6,16d6,8c6,8b,a,8a,8c6,e6,8d6,8c6,b,8b,8c6,d6,e6,c6,a,2a,8p,d6,8f6,a6,8g6,8f6,e6,8e6,8c6,e6,8d6,8c6,b,8b,8c6,d6,e6,c6,a,a",
"Bond:d=4,o=5,b=80:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6",
"StarWars:d=4,o=5,b=45:32p,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#.6,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#6",
"Gadget:d=16,o=5,b=50:32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,32d#,32f,32f#,32g#,a#,d#6,4d6,32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,8d#",
"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",
};
void setup()
{
Serial.begin(115200);
tone1.begin(9);
randomSeed(analogRead(A1));
FastLED.addLeds<CHIPSET,DATA_PIN,COLOR_ORDER>(leds,NUM_LEDS);
FastLED.setMaxPowerInVoltsAndMilliamps(VOLTS,MAX_AMPS);
FastLED.setBrightness(BRIGHTNESS);
FastLED.clear();
FastLED.show();
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(12, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
}
#define isdigit(n) (n >= '0' && n <= '9')
void loop()
{
int delay_ms;
for (j = 0; j<7; j++)
{
digitalWrite(Arduino_Pins[j], Segment_Pins[i][j]);
}
if(digitalRead(12)==0)
{
while(digitalRead(12)==0)
{
}
i++; // i = i + 1;
}
if(i == 10)
{
i = 0;
}
delay(200);
if(digitalRead(1)==0)
{
while(digitalRead(1)==9)
{
}
i--; // i = i - 1;
}
if(i == -1)
{
i = 9;
}
delay(200);
int afficheur = i;
int play = digitalRead(11);
CRGB color;
if (play == LOW) {
digitalRead(afficheur);
if (afficheur == 1)
{color = CRGB::Red;
delay_ms = 100;
}
else if (afficheur == 2)
{color = CRGB::Orange;
delay_ms = 5000;
}
else if (afficheur == 3)
{color = CRGB::Yellow;
delay_ms = 7500;
}
else if (afficheur == 4)
{color =CRGB::Blue;
delay_ms = 10000;
}
else if (afficheur == 5)
{color =CRGB::Green;
delay_ms = 12500;
}
else if (afficheur == 6)
{color =CRGB::CRGB::Indigo;
delay_ms = 15000;
}
else if (afficheur == 7)
{color =CRGB::Violet;
delay_ms = 17500;
}
else if (afficheur == 8)
{color = CRGB::Brown;
delay_ms = 20000;
}
else if (afficheur == 9)
{color = CRGB::White;
delay_ms = 22500;
}
else if (afficheur == 0)
{ color = CRGB::Black;
}
fill_solid(leds, NUM_LEDS, color);
FastLED.setBrightness(BRIGHTNESS);
for (int i = 0; i<=24; i++)
{
FastLED.show();
leds[i] = CRGB::Black;
delay(delay_ms);
}
int rep = 0;
while(rep<1) {
rep++;
for (int i=0; i<NUM_LEDS; i++) {
leds[i] = color;
}
for (int i=0; i<BRIGHTNESS; i++) {
FastLED.setBrightness(i);
FastLED.show();
delay(1);
}
for (int i=BRIGHTNESS; i>=0; i--) {
FastLED.setBrightness(i);
FastLED.show();
delay(1);
}
}
}
ind_random = random(0, 7);
Serial.print(ind_random);
play_rtttl(song[ind_random]);
//Serial.println("Done");
}