Arduino LilyPad anka dynastin Hoodie med ljud och LED ljus (8 / 10 steg)
Steg 8: programmering
Att programmera anka dynastin temalåten jag var tvungen att slå upp online piano kör musik för att få exakt noterna. Därifrån jag hade ta dessa anteckningar och översätta dem till kod jag gjorde detta på Arduino.cc/ed/tutorial/tone. Då jag hade att skriva Obs tid (hur snabbt varje ton var att spelas).
Här är alla min skriftliga kod:
int whiteLeds = 10;
int redLed = 9;
int greenLed = 5;
int blueLed = 6;
int zipperswitch = A5;
int zipperswitch2 = A3;
int zipperswitch3 = A4;
int speakerPin = A2;
int r;
int g;
int b;
int fadeSpeed = 1;
#include "pitches.h"
anteckningar i melodin:
int melodi [] = {
NOTE_DS4, NOTE_DS4, 0, NOTE_DS4, NOTE_DS4, 0, NOTE_DS4, NOTE_DS4, NOTE_DS4, NOTE_C4, NOTE_DS4,
NOTE_F4, NOTE_FS4, NOTE_FS4, NOTE_FS4, 0, NOTE_B4, NOTE_B4, NOTE_B4, NOTE_B4, NOTE_B4, NOTE_B4,
NOTE_B4, NOTE_B4, NOTE_G3, NOTE_C4, 0, NOTE_C4, NOTE_FS4, NOTE_G4, NOTE_G4, NOTE_DS4, NOTE_C4, NOTE_C4,
NOTE_G3, NOTE_AS3, NOTE_C4, NOTE_C4, 0,
};
int noteDurations [] = {
4, 4, 2, 4, 4, 2, 8, 2.7, 8, 8, 8, 8, 4, 4, 8, 8,
8, 4, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 8, 8, 4, 8, 8, 8, 8, 4, 4, 2, 1};
det ska gå snabbare eller långsammare
void setup() {
pinMode (whiteLeds, produktionen);
pinMode (redLed, produktionen);
pinMode (greenLed, produktionen);
pinMode (blueLed, produktionen);
pinMode (speakerPin, produktionen);
pinMode (zipperswitch, INPUT_PULLUP);
pinMode (zipperswitch2, INPUT_PULLUP);
pinMode (zipperswitch3, INPUT_PULLUP);
}
void loop() {
IF((digitalRead(zipperswitch) == 0)) {
colorFade();
rLEDFade();
gLEDFade();
bLEDFade();
} annat {
digitalWrite (redLed, 1);
digitalWrite (greenLed, 1);
digitalWrite (blueLed, 1);
}
IF((digitalRead(zipperswitch2) == 0)) {
DuckDynasty ();
} annat {
digitalWrite (speakerPin, låg);
}
IF((digitalRead(zipperswitch3) == 0)) {
digitalWrite (whiteLeds, hög);
Delay(500);
digitalWrite (whiteLeds, låg);
Delay(500);
} annat {
digitalWrite (whiteLeds, låg);
}
void digitalColor)
{
digitalWrite (redLed, låg);
digitalWrite (blueLed, hög);
digitalWrite (greenLed, hög);
Delay(500);
digitalWrite (redLed, hög);
digitalWrite (blueLed, hög);
digitalWrite (greenLed, låg);
Delay(500);
digitalWrite (redLed, hög);
digitalWrite (blueLed, låg);
digitalWrite (greenLed, hög);
Delay(500);
digitalWrite (redLed, hög);
digitalWrite (blueLed, hög);
digitalWrite (greenLed, hög);
Delay(1000);
}
void analogColor)
{
analogWrite (redLed, 0);
analogWrite (blueLed, 255); röd
analogWrite (greenLed, 255);
Delay(1000);
analogWrite (redLed, 255);
analogWrite (blueLed, 255); grön
analogWrite (greenLed, 0);
Delay(1000);
analogWrite (redLed, 255);
analogWrite (blueLed, 0); blå
analogWrite (greenLed, 255);
Delay(1000);
analogWrite (redLed, 0);
analogWrite (blueLed, 0); lila
analogWrite (greenLed, 255);
Delay(1000);
analogWrite (redLed, 0);
analogWrite (blueLed, 255); Orange
analogWrite (greenLed, 0);
Delay(1000);
analogWrite (redLed, 255);
analogWrite (blueLed, 0); Teal
analogWrite (greenLed, 0);
Delay(1000);
analogWrite (redLed, 255);
analogWrite (blueLed, 255); utanför
analogWrite (greenLed, 255);
Delay(1000);
}
void rLEDFade()
{
analogWrite (blueLed, 255);
analogWrite (greenLed, 255);
analogWrite (redLed, 255);
för (r = 255, r > 0, r--) {
analogWrite (redLed, r);
Delay(fadeSpeed);
}
för (r = 0; r < 256; r ++) {
analogWrite (redLed, r);
Delay(fadeSpeed);
}
}
void gLEDFade()
{
analogWrite (blueLed, 255);
analogWrite (greenLed, 255);
analogWrite(redLed,255);
för (g = 255, g > 0, g--) {
analogWrite (greenLed, g);
Delay(fadeSpeed);
}
för (g = 0, g < 256, g ++) {
analogWrite (greenLed, g);
Delay(fadeSpeed);
}
}
void bLEDFade()
{
analogWrite (blueLed, 255);
analogWrite (greenLed, 255);
analogWrite(redLed,255);
för (b = 255, b > 0, b--) {
analogWrite (blueLed, b);
Delay(fadeSpeed);
}
för (b = 0; b < 256; b ++) {
analogWrite (blueLed, b);
Delay(fadeSpeed);
}
}
void colorFade)
{
analogWrite (blueLed, 0);
för (r = 255, r > 0, r--) {
analogWrite (redLed, r);
Delay(fadeSpeed);
}
för (b = 0; b < 256; b ++) {
analogWrite (blueLed, b);
Delay(fadeSpeed);
}
för (g = 255, g > 0, g--) {
analogWrite (greenLed, g);
Delay(fadeSpeed);
}
för (r = 0; r < 256; r ++) {
analogWrite (redLed, r);
Delay(fadeSpeed);
}
för (b = 255, b > 0, b--) {
analogWrite (blueLed, b);
Delay(fadeSpeed);
}
för (g = 0, g < 256, g ++) {
analogWrite (greenLed, g);
Delay(fadeSpeed);
}
analogWrite (blueLed, 255);
Delay(500);
}
void DuckDynasty)
{
för (int thisNote = 0; thisNote < 40; thisNote ++) {
int noteDuration = 1500/noteDurations [thisNote];
tonen (speakerPin, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
noTone(speakerPin);
}
}