//void playFreq(double freqHz, int duration); #include #define number_of_LEDs 12 #define LED_pin 0 #define piezoPin 52 #define bttn 42 int num = 0; PICxel strip(number_of_LEDs, LED_pin, HSV); int value = 255; int color_index = 0; short rot_index = 0; double g4 = 391.995; double g4s = 415.305; double a4 = 440; double a4s = 466.164; double b4 = 493.884; double c5 = 523.251; double c5s = 554.365; double d5 = 587.33; double d5s = 622.254; double e5 = 659.255; double f5 = 698.456; double f5s = 739.989; double g5 = 783.991; double g5s = 830.609; typedef struct hsv_data{ uint16_t hue; uint8_t sat; uint8_t val; }HSV_DATA; HSV_DATA running_digi[12] = { {150, 255, 250}, //green {150, 255, 125}, //whi {150, 255, 75}, //yellow {150, 255, 45}, //orange {150, 255, 25}, //light-green {150, 255, 5}, //white {150, 255, 0}, //white {150, 255, 0}, //white {150, 255, 0}, //white {150, 255, 0}, //white {150, 255, 0}, //white {150, 255, 0}, //white*/ }; void setup(){ pinMode(piezoPin, OUTPUT); pinMode(bttn, INPUT); strip.begin(); } void play() { int playTms = 417; int play_q = 104; int playTms_2 = 725; delay(300); playFreq(g4, play_q); once(); playFreq(a4, play_q); once(); playFreq(b4, play_q); once(); playFreq(c5s, play_q); once(); playFreq(g4, play_q); once(); playFreq(a4, play_q); once(); playFreq(b4, play_q); once(); playFreq(c5s, play_q); once(); playFreq(g4s, play_q); once(); playFreq(a4s, play_q); once(); playFreq(c5, play_q); once(); playFreq(d5, play_q); once(); playFreq(g4s, play_q); once(); playFreq(a4s, play_q); once(); playFreq(c5, play_q); once(); playFreq(d5, play_q); once(); playFreq(a4, play_q); once(); playFreq(b4, play_q); once(); playFreq(c5s, play_q); once(); playFreq(d5s, play_q); once(); playFreq(a4, play_q); once(); playFreq(b4, play_q); once(); playFreq(c5s, play_q); once(); playFreq(d5s, play_q); once(); playFreq(a4s, play_q); once(); playFreq(c5, play_q); once(); playFreq(d5, play_q); once(); playFreq(e5, play_q); once(); playFreq(a4s, play_q); once(); playFreq(c5, play_q); once(); playFreq(d5, play_q); once(); playFreq(e5, play_q); once(); playFreq(b4, play_q); once(); playFreq(c5s, play_q); once(); playFreq(d5s, play_q); once(); playFreq(f5, play_q); once(); playFreq(c5, play_q); once(); playFreq(d5, play_q); once(); playFreq(e5, play_q); once(); playFreq(f5s, play_q); once(); playFreq(c5s, play_q); once(); playFreq(d5s, play_q); once(); playFreq(f5s, play_q); once(); playFreq(g5, play_q); once(); playFreq(d5, play_q); once(); playFreq(e5, play_q); once(); playFreq(f5s, play_q); once(); playFreq(g5s, play_q); once(); delay(333); full(); playFreq(a4, playTms/1.5); playFreq(a4s, playTms/1.5); playFreq(b4, playTms/1.5); playFreq(c5, playTms_2); delay(2000); } void playFreq(double freqHz, int duration) { int periodMicro = int((1/freqHz)*1000000); int halfPeriod = periodMicro/2; int startTime = millis(); while ((millis() - startTime) < duration) { digitalWrite(piezoPin, HIGH); delayMicroseconds(halfPeriod); digitalWrite(piezoPin, LOW); delayMicroseconds(halfPeriod); } } void loop() { //num = 0; if(num == 0){ delay(100); if (digitalRead(bttn) == LOW){ play(); num++; for(int i = 0; i