Arduino animatörerna-gör din awesome kostymer mer awesome! (8 / 15 steg)
Steg 8: Ljudeffekter och böja sensorer
Bend sensorn i det här exemplet används som en trigger - när dess utgång värde når en viss nivå det orsakar Arduino att köra den angivna koden. Du kan ändra tröskelvärdet för att ändra den punkt där sensorn fungerar som en utlösare. Om du öppnar fönstret Arduino seriell monitor servo styrelsen är ansluten till datorn kan du se när böj sensorn utlöser. Bend sensorn ställs in med hjälp av en spänningsavdelare ge en analog input värde på ingångsstift 1.
Detta exempel använder Adafruit Wave sköld för att ge ljudeffekter. Instruktionerna för att skapa och ställa in våg sköld kan hittas på webbsidan Wave sköld på http://www.ladyada.net/make/waveshield/
Det finns flera kodexempel på sidan Wave sköld för att spela upp ljudfiler. Exemplet jag använt är det play6_hc.pde exemplet på http://www.ladyada.net/make/waveshield/libraryhcplay6.html
Bara ladda ner ljudfilen till ett SD-minneskort och plats i din våg sköld och du är good to go.
För ledningar schematiska gjorde jag det på två sätt. Den första versionen använder en liten ytmontering transistor ombord aktivera LED styrelsen och Wave sköld. Den andra versionen använder två spets 120 transistorer istället - de är funktionellt identiska. Den stora skillnaden är spets 120 transistorer kan hantera mycket större aktuella laster än de små surface mount transistorer- men spets 120s ta upp mycket mer utrymme.
Transistorerna behövs eftersom Wave sköld behöver en switch till berätta den när man spelar ljudfilen (transistor trädgården Wave sköld input pin när aktiverad) och flera lysdioder använder långt mer ström än en enda Arduino utgångsstiftet kan ge.
När böj sensorn är böjd långt nog lysdioderna kommer att blekna, ljudfilen spelas upp och sedan en servo kommer att flytta. Servo skulle användas för att öppna en underarm missil utrymme.
För mer Iron Man costuming kul kolla SIWDAT webbplats-
http://www.siwdat.com/index.html
Kopiera och klistra in denna skiss på din Arduino fönster-
/*
* Exempel 4
* Böj Sensor/Wave sköld
* Detta exempel används en böj sensor som en utlösande faktor för att tona en lysdiod med ljudeffekt
* med en våg sköld och sedan aktivera ett servo
* Honus 2010
* Ändrat från Knock Sensor kod skapad 25 Mar 2007 av David Cuartielles
* och modifierade 4 Sep 2010 av Tom Igoe
*/
#include "Servo.h" / / include servo biblioteket
Servo servo1; skapar en instans av objektet servo att styra en servo
Dessa konstanter inte kommer att ändra:
CONST int servoPin1 = 9; kontroll stift för servo
CONST int triggerSensor = 1; sensorn är ansluten till analog pinne 1
CONST int tröskel = 400. tröskelvärdet för att avgöra när sensorn ingång utlösare
CONST int ledPin = 11;
int soundPin1 = 10; kontroll stift för ljud ombord
dessa variabler ändras:
int sensorReading = 0; variabel för att lagra värdet läsa från givarstaven
int ledState = låg; variabeln som används för att lagra den sista LED statusen, för att växla ljus
void setup() {
Serial.BEGIN(9600); Använd den seriella porten
servo1.attach(servoPin1); tillmäter objektet servo servo på pin 9
pinMode (soundPin1, produktionen); ställer in ljud PIN-koden som utgång
digitalWrite (soundPin1, låg);
}
void loop() {
servo1.write(20); flytta servo till 20 graders position
Läs sensorn och lagrar det i variabeln sensorReading:
sensorReading = analogRead(triggerSensor);
om sensorn läsningen är större än tröskelvärdet:
om (sensorReading > = tröskelvärde) {
digitalWrite (soundPin1, hög); stänger av ljudet
Delay(10); vänta tio millisekunder
digitalWrite (soundPin1, låg); stänga av ljudet
tona in från min till max i steg om 5 poäng:
för (int fadeValue = 0; fadeValue < = 255; fadeValue += 5) {
anger värdet (varierar från 0 till 255):
analogWrite (ledPin, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(40);
}
tona ut från max till min i steg om 5 poäng:
för (int fadeValue = 255; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (ledPin, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(40);
Skicka strängen "trigger!" tillbaka till datorn, följt av newline
Serial.println("trigger!");
}
servo1.write(160); flytta servo till 160 grader
Delay(3000); vänta 3 sekunder
servo1.write(20); flytta servo till 20 graders position
}
fördröjning (3000); tre andra dröjsmål att undvika överbelastning serieport bufferten
}