Hur man gör en fjärrkontroll kännande web-docka av hacka Twitter, Google, Skype, Arduino och bearbetning! (4 / 16 steg)
Steg 3: Använda Arduino för att kontrollera fysiska åtgärder utifrån de uppgifter som mottagits (med kod)
Arduinoen gör flera saker:
- Den är kopplad till huvuddatorn - digitalt via en USB-anslutning och även med analog ingång från ljudutgången på datorn
- Det upprätthåller en seriell anslutning med huvuddatorn, över vilka det är ständigt kontroller för ny kontroll digitala data som har skickats över webben till huvuddatorn.
>>>
Denna linje är Arduino att göra seriell anslutning...
Serial.BEGIN(115200);Denna linje som ringer en rutin som kontrollerar anslutningen fo rdate...
checkSerial ();
<<< - Det kontrollerar varje 10-30 sekunder och jämför inkommande data till den senast mottagna åtgärden och bara agerar på det om olika.
>>> void checkSerial)
{
Kontrollerar om det finns ett samband...
om (Serial.available() > 0) {Läser in data...
incomingByte = Serial.read();
}Om data är 30, kommer att det utlösa Twitter rutin (twitterCheck()...
om (incomingByte == 30) / /
{
twitterCheck();
}Om data är mellan 0 och 25, det är Google data, så anropa funktionen kontroll för Google - googleCheck()
om ((incomingByte < = 25) & & (incomingByte > 0)) / / google data är data kodas som ett heltal mellan 0 och 25
{
googleCheck();
{ } annat {/ / ingen mening med att kalla kontrollera funktioner om inte seriella data tas emot. Detta är felhantering sats
Serial.println ("jag fick ingenting");
}
} / / enf av checkSerial
<<<
- Om nya uppgifter tas emot, lyser det indikatorn vårtor på sin panna. Dessa är upplyst av lysdioder.
En orange vårta lyser när Google data (heltal mellan 0 och 25) har tagits emot, data används för att flytta servon och blå vårtan är avaktiverat
>>>
ogiltiga googleCheck()
{
digitalWrite (twitterFlagPin, låg);
eyeLeftRight = 2*(incomingByte-1);
eyeUpDown = (2 * incomingByte) -1;
om (incomingByte < = 25)
{
digitalWrite (googleFlagPin, hög);
servoLeftRight.write(eyePos[eyeLeftRight]);
servoUpDown.write(eyePos[eyeUpDown]);
}
}
<<<En blå vårta lyser när Twitter data har varit emot (heltal 30) och orange vårtan är avaktiverat
>>>
void twitterCheck)
{
denna funktion
digitalWrite (twitterFlagPin, hög);
digitalWrite (googleFlagPin, låg);
}
<<< - Det kommer att konvertera inkommande ögongloben data in i en av flera förutbestämda position kontrollvärden för varje två servon inne i huvudet. En för upp/ned, en för vänster/höger. Den använder Arduino servo.h biblioteket för att göra detta
>>>
De data som kommer in används för att komma åt data från en array som har förutbestämda värden i det (dessa är värdena som servo)
int eyePos [] = {115, 60, 115, 60, 115, 90, 115, 115, 115, 115, 115, 60, 115, 60, 115, 90, 115, 115, 115, 115, 90, 60, 90, 60, 90, 90, 90, 115, 90, 115, 60, 60, 60, 60, 60, 90, 60, 115, 60, 115, 60, 60, 60, 60, 60, 90, 60, 115, 60, 115};
<<< - Det kommer att aktivera käken mima genom att övervaka analoga ljudingången. Den använder spänning peak detection för att göra detta. Om ljudet våg stiger över en förutbestämd tröskel, käken och öppnas man med våld stänga om spänningen sjunker under tröskelvärdet. Detta ger en behagligt häpnadsväckande staccato.
>>>
ogiltiga analogPeakCheck()
{
denna funktion används om du använder raw ljudutgång från en analog förstärkare till den analoga stiftet 0
valueAnalogIn = analogRead(analogInput); Detta kontroll av output ovanför en plasttransistorn att utlösa käken signal
om (valueAnalogIn > thresholdAnalogIn)
{
digitalWrite (speechFlagPin, hög);
digitalWrite (speechFlagPinLED, hög);
}
annat {
digitalWrite (speechFlagPin, låg);
digitalWrite (speechFlagPinLED, låg);
} / / end tröskel kontroll / /
}
<<<
Enskilda koden för att kontrollera Arduino är anpassade från basic-kod på arduino.cc/
Hämta den fullständiga Arduino skiss
Den kompletta Arduino skissen finns att ladda ner här från GitHub som en textfil:
http://Cloud.GitHub.com/downloads/rosemarybeetle/Twitr-Janus/twitr_janus_arduino_09.txt
För enkel visning, här är en bild faksimil av den fullständiga texten