Stap 6: Code
Sla deze 3 codes voor luisteren, zien en zingen als arduino (Ino) bestanden afzonderlijk:
Ik heb ook de IDE-bestanden, maar ze hebben verschillende namen.
Luisteren:
int soundSensorPin = A0;
int soundReading = 0; int soundThreshold = 500; int intensiteit [3] = {0,0,0}; int LEDPins [3] = {2,4,5}; int numberOfPins = 3; int currentPin = 0; int fadeCounter = 0; int fadeDelay = 50; Booleaanse switcher = true;
void setup {pinMode(soundSensorPin, INPUT); voor (int i = 0; i
void loop {soundReading=analogRead(soundSensorPin); if(soundReading>soundThreshold) {if(switcher) {aboveThreshold(currentPin); switcher = true;}} else {if(switcher) {belowThreshold(); switcher = true;}}}
VOID aboveThreshold (int cPin) {switcher = false; als (intensiteit [cPin] < 10) {intensiteit [cPin] = 255; delay(50); currentPin = currentPin + 1;}
if(currentPin==numberOfPins) {currentPin = 0;}}
VOID belowThreshold() {switcher = false; fadeCounter ++; if(fadeCounter==fadeDelay) {fadeCounter = 0; voor (int i = 0; ik
Bron: https://gist.github.com/michelleboisson/3830481
Gevolgd door Zie:
/*
* Control Servo via lichtsensor (bijvoorbeeld fotoweerstand). ** Copyright (C) 2010 Efstathios Chatzikyriakidis (Neem contact op met ** dit programma is vrije software: je kunt het herdistribueren en/of wijzigen * het onder de voorwaarden van de GNU General Public License zoals gepubliceerd door * de Free Software Foundation, hetzij versie 3 van de licentie, of * (naar uw keuze) een latere versie. ** dit programma is gedistribueerd in de hoop dat het bruikbaar, * maar WITHOUT ANY WARRANTY; zonder zelfs een impliciete garantie van * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Zie de * GNU General Public License voor meer details. ** U moet hebt ontvangen een kopie van de GNU General Public License * along with this program. Als dat niet het geval is, zie. * / / / bibliotheek voor servo. #include servo myServo; servo-object om te bepalen van een servo maken. Const int servoPin = 7; het pin-nummer (PWM) voor de servo. Const int sensorPin = 3; het pin-nummer voor de input sensor. huidige en eerdere waarden voor servo apparaat. int valServo = 0; int oldValue = 0; de volgende waarden kunnen wijzigen volgens de lichtsensor. het uitvoeren van een kalibratie met puur donker en zuivere licht op het eerste. Const int lightMin = 170; Stel de juiste waarde van de lichtsensor. Const int lightMax = 512; Stel de juiste waarde van de lichtsensor. Const int LIGHT_SENSE = 5; verschil niveau Sensivity value. Const lange delayTime = 15; Servo verkeer vertraging van tijd in millis. opstarten punt vermelding (eenmaal loopt). void setup () {/ / set sensor als input. pinMode (sensorPin, INPUT); / / toevoegen van de servo op een pin. myServo.attach(servoPin);} / / loop de belangrijkste schets. ongeldig lus () {/ / krijgen de waarde van de int valServo licht sensor. = analogRead(sensorPin); / / kaart de waarde aan de min, max van de servo. valServo = kaart (valServo, lightMin, lightMax, 0, 179); / / zorgen ervoor dat de waarde min, max van de servo. valServo wordt = beperken (valServo, 0, 179); / / servo verplaatsen alleen als licht genoeg verandert. als (abs (valServo - oldValue) > LIGHT_SENSE) {/ / verplaatsen van de servo. myServo.write(valServo); / / houden van de laatste waarde. oldValue = valServo;} / / wachten enige tijd de servo naar beweging. delay(delayTime);}
Bron:
Gevolgd door zingen:
/*
Arduino Mario Bros Tunes met Piezo zoemer en PWM verbinden met de positieve kant van de zoemer pin 3, dan de negatieve kant aan een 1 k ohm weerstand. Verbind de andere kant van de 1 k ohm weerstand met ground(GND) pin op de Arduino. door: Dipto Pratyaksa voor het laatst bijgewerkt: 31/3/13 * / / *** * openbare constanten *** / #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_ E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #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_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_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define melodyPin 3 //Mario hoofdthema melodie int melodie [] {NOTE_E7, NOTE_E7, 0, NOTE_E7 = , 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0}; Mario main hen tempo int tempo [] = {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,}; Onderwereld melodie int underworld_melody [] = {NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0 NOTE_DS4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_DS4, NOTE_DS4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0}; Underwolrd tempo int underworld_tempo [] = {12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3}; ongeldig setup(void) {//buzzer pinMode (13, OUTPUT), pinMode (3, OUTPUT); //led-indicator als zingen een notitie} void loop {//sing de muziek sing(1); sing(1); sing(2);} int lied = 0; VOID zingen (int s) {/ / itereren over de noten van de melodie: lied = s; als (lied == 2) {Serial.println ("' Underworld thema'"); int grootte = sizeof(underworld_melody) / sizeof(int); voor (int thisNote = 0; thisNote < grootte; thisNote ++) {/ / voor het berekenen van de duur van de opmerking, neem één seconde / / verdeeld door het type opmerking. / / bv kwartnoot = 1000 / 4, achtste noot = 1000/8, etc. int noteDuration = 1000 / underworld_tempo [thisNote]; buzz (melodyPin underworld_melody [thisNote], noteDuration); om te onderscheiden van de notities, stel een minimuminterval tussen hen. de nota's duur + 30% schijnt goed te werken: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); stoppen met het spelen van de Toon: buzz (melodyPin, 0, noteDuration); }} anders {Serial.println ("' Mario Theme'"); int grootte = sizeof(melody) / sizeof(int); voor (int thisNote = 0; thisNote < grootte; thisNote ++) {/ / voor het berekenen van de duur van de opmerking, neem één seconde / / verdeeld door het type opmerking. / / bv kwartnoot = 1000 / 4, achtste noot = 1000/8, etc. int noteDuration = 1000 / tempo [thisNote]; buzz (melodyPin, melodie [thisNote], noteDuration); / / om te onderscheiden van de notities, stel een minimuminterval tussen hen. / / de nota's duur + 30% schijnt goed te werken : int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); stoppen met het spelen van de Toon: buzz (melodyPin, 0, noteDuration); }}} ongeldig buzz (int targetPin, lange frequentie, lange lengte) {digitalWrite (13, hoge); lange delayValue = 1000000 / frequentie / 2; / / berekening van de vertragingswaarde tussen overgangen / / / 1 seconde het waard van microseconden, gedeeld door de frequentie, dan splitsen in tweeën sinds / / / er zijn twee fasen aan elke cyclus lange numCycles = frequentie * lengte / 1000; / / het getal berekenen van cycli voor juiste timing / / / vermenigvuldigen frequentie, die is echt cycli per seconde , door het aantal seconden aan / / / krijgen het totale aantal cycli te produceren voor (lang ik = 0; ik < numCycles; i ++) {/ / voor de berekende lengte van tijd... digitalWrite (targetPin, hoge); / / schrijven de zoemer pin hoog te duwen uit de diaphram delayMicroseconds(delayValue); / / wachten voor de vertraging van de berekende waarde digitalWrite (targetPin, laag); / / schrijven de zoemer pin lage zich terugtrekken van de diaphram delayMicroseconds(delayValue); / / wait weer of de berekende vertragingswaarde} digitalWrite (13 LAAG); }