Stap 8: Geluidseffecten en buig sensoren
De sensor van de bocht in dit voorbeeld wordt gebruikt als een trigger - zodra de uitvoer waarde bereikt een bepaalde niveau het oorzaken de Arduino de opgegeven code uit te voeren. U kunt de drempelwaarde om te wijzigen het punt waarop de sensor als een trigger fungeert wijzigen. Als u het venster Arduino seriële monitor opent terwijl het bestuur van de servo is aangesloten op uw computer kunt u zien wanneer de bocht sensor activeert. De bocht sensor wordt ingesteld met behulp van een spanning divider een analoge input om waarde te bieden op invoer pin 1.
In dit voorbeeld wordt de Adafruit Wave Shield te verstrekken van geluidseffecten. De instructies voor het maken en instellen van de Wave Shield kunnen worden gevonden op de Wave Shield-webpagina op http://www.ladyada.net/make/waveshield/
Er zijn verschillende voorbeelden van code op de pagina van de Wave Shield voor het afspelen van audiobestanden. In het voorbeeld dat ik heb gebruikt is het voorbeeld van de play6_hc.pde gelegen op http://www.ladyada.net/make/waveshield/libraryhcplay6.html
Download enkel het geluidsbestand aan een SD geheugenkaart en plaats het in uw Wave Shield en u bent goed om te gaan.
Ik deed het voor de bedrading schema op twee manieren. De eerste versie maakt gebruik van een kleine oppervlakte bevestiging transistor board het LED bord en de Wave Shield te activeren. De tweede versie gebruikt twee TIP 120 transistoren in plaats daarvan - ze zijn functioneel identiek. Het grote verschil is dat de TIP 120 transistors aankan veel grotere huidige ladingen dan de kleine oppervlakte mount transistoren- maar de TIP 120s nemen veel meer ruimte in beslag.
De transistors zijn nodig omdat de Wave Shield een schakelaar om het te vertellen moet wanneer om te spelen het audiobestand (de transistor gronden de Wave Shield input pin wanneer geactiveerd) en meerdere LEDs veel meer stroom gebruikt dan een enkele Arduino uitgang pins kan bieden.
Indien de bocht sensor is gebogen, ver genoeg de LEDs zullen vervagen, het geluidsbestand zal spelen en vervolgens een servo zal verplaatsen. De servo zou worden gebruikt voor het openen van een onderarm raket compartiment.
Voor meer Iron Man kostuums plezier kijk op de site van SIWDAT-
http://www.siwdat.com/index.html
Kopieer en plak deze schets in uw venster Arduino-
/*
* Voorbeeld 4
* Bend Sensor/Wave shield
* Dit voorbeeld wordt een bocht sensor als een trigger om vervagen een LED met geluidseffect
-de gebruik van een Wave-schild en activeert u vervolgens een servo
* Honus 2010
* Aangepast ten opzichte van de Klop Sensor code 25 Mar 2007 gemaakt door David Cuartielles
* en gemodificeerde 4 Sep 2010 door Tom Igoe
*/
#include "Servo.h" / / de servo-bibliotheek
Servo servo1; Hiermee maakt u een exemplaar van het servo-object om te bepalen van een servo
Deze constanten niet gewijzigd:
Const int servoPin1 = 9; controle pin voor servo
Const int triggerSensor = 1; de sensor is aangesloten op de analoge pin 1
Const int drempel = 400; drempelwaarde om te beslissen wanneer de sensor input triggers
Const int ledPin = 11;
int soundPin1 = 10; controle pin voor geluidskaart
deze variabelen zal veranderen:
int sensorReading = 0; variabele de waarde gelezen van de pin van de sensor opslaan
int ledState = laag; variabele gebruikt voor het opslaan van de laatste LED-status, als u wilt schakelen het licht
VOID Setup {}
Serial.begin(9600); de seriële poort gebruiken
servo1.attach(servoPin1); de servo op pin 9 hecht aan de servo-object
pinMode (soundPin1, OUTPUT); Hiermee stelt u de correcte pin als uitvoer
digitalWrite (soundPin1, laag);
}
void loop {}
servo1.write(20); de servo naar 20 graden positie verplaatsen
Lees de sensor en sla het in de variabele sensorReading:
sensorReading = analogRead(triggerSensor);
Als de sensorgegevens groter dan de drempel is:
Als (sensorReading > = drempel) {}
digitalWrite (soundPin1, hoge); het geluid inschakelen
delay(10); wacht tien milliseconden
digitalWrite (soundPin1, laag); het geluid uitschakelen
fade-in van min tot max in stappen van 5 punten:
voor (int fadeValue = 0; fadeValue < = 255; fadeValue += 5) {}
Hiermee stelt u de waarde (bereik van 0 tot 255):
analogWrite (ledPin, fadeValue);
wacht 30 milliseconden het dimmen effect zien
delay(40);
}
fade-out van max naar de min in stappen van 5 punten:
voor (int fadeValue = 255; fadeValue > = 0; fadeValue-=5) {}
Hiermee stelt u de waarde (bereik van 0 tot 255):
analogWrite (ledPin, fadeValue);
wacht 30 milliseconden het dimmen effect zien
delay(40);
Stuur de tekenreeks "trigger!" terug naar de computer, gevolgd door newline
Serial.println("trigger!");
}
servo1.write(160); de servo naar 160 graden positie verplaatsen
delay(3000); wacht 3 seconden
servo1.write(20); de servo naar 20 graden positie verplaatsen
}
vertraging (3000); drie tweede vertraging om te voorkomen dat overbelasting van de buffer van de seriële poort
}