Stap 3: Met behulp van Arduino fysieke acties op basis van de gegevens die worden ontvangen (met code)
De Arduino doet verschillende dingen:
- Deze is aangesloten op de mastercomputer - digitaal via een USB-aansluiting, en ook met analoge ingang van de audio-uitgang van de computer
- De EU onderhoudt een seriële poortverbinding met de master-computer, waarlangs het wordt voortdurend controleert of er nieuwe besturingselement digitale gegevens die via het web is verstuurd naar de master-computer.
>>>
Deze regel is Arduino maken van de seriële aansluiting...
Serial.begin(115200);Deze regel is het aanroepen van een routine die de verbinding fo rdate controleert...
checkSerial ();
<<< - Het controleert elke 10-30 seconden en vergelijkt van binnenkomende gegevens naar de laatste ontvangen actie en alleen besluiten op het indienverschillend.
>>> void checkSerial)
{
Het controleert of er een verbinding...
als (Serial.available() > 0) {Leest de gegevens...
incomingByte = Serial.read();
}Als de gegevens 30, het zal leiden tot de Twitter routine (twitterCheck()...
als (incomingByte == 30) / /
{
twitterCheck();
}Als de gegevens tussen de 0 en 25, is Google gegevens, bel ons de controle functie van Google - googleCheck()
als ((incomingByte < = 25) & & (incomingByte > 0)) / / google gegevens zijn gegevens gecodeerd als een geheel getal tussen 0 en 25
{
googleCheck();
} anders {/ / geen punt bellen selectievakje functies als niet seriële data ontvangen. Dit is foutafhandeling component
Serial.println ("ik niets ontvangen");
}
} / / enf van checkSerial
<<<
- Als nieuwe gegevens wordt ontvangen, zal het indicator wratten op haar voorhoofd oplichten. Deze zijn verlicht door LED's.
Een oranje wrat brandt wanneer Google gegevens (geheel getal tussen 0 en 25) zijn ontvangen, de data worden gebruikt voor het verplaatsen van de servo's en de blauwe wrat wordt gedeactiveerd
>>>
ongeldig googleCheck()
{
digitalWrite (twitterFlagPin, laag);
eyeLeftRight = 2*(incomingByte-1);
eyeUpDown = (2 * incomingByte) -1;
Als (incomingByte < = 25)
{
digitalWrite (googleFlagPin, hoge);
servoLeftRight.write(eyePos[eyeLeftRight]);
servoUpDown.write(eyePos[eyeUpDown]);
}
}
<<<Een blauwe wrat brandt wanneer Twitter gegevens is ontvangen (geheel getal 30) en de oranje wrat wordt gedeactiveerd
>>>
void twitterCheck)
{
deze functie
digitalWrite (twitterFlagPin, hoge);
digitalWrite (googleFlagPin, laag);
}
<<< - Het zal binnenkomende oogbol gegevens converteren naar een van verschillende waarden van de besturingselementen van de vooraf bepaalde positie voor elk van de twee servo's in het hoofd. Eén voor de omhoog/omlaag, één voor links/rechts. Het maakt gebruik van de Arduino servo.h bibliotheek om dit te doen
>>>
De gegevens die wordt gebruikt voor toegang tot gegevens uit een array die vooraf waarden in het bepaalde heeft (dit zijn de waarden van de 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};
<<<
>>>
ongeldig analogPeakCheck()
{
deze functie wordt gebruikt als u van raw audio-uitgang van een analoge versterker in de analoge pin 0 gebruikmaakt
valueAnalogIn = analogRead(analogInput); Dit is het controleren voor uitvoer boven een drempel spanning om te kaak signaal activeren
Als (valueAnalogIn > thresholdAnalogIn)
{
digitalWrite (speechFlagPin, hoge);
digitalWrite (speechFlagPinLED, hoge);
}
else {}
digitalWrite (speechFlagPin, laag);
digitalWrite (speechFlagPinLED, laag);
} / / end drempel controleren / /
}
<<<
De individuele code voor het beheersen van de Arduino is aangepast van basic-code op arduino.cc/
Downloaden van de volledige Arduino schets
De volledige Arduino schets is beschikbaar hier downloaden van GitHub als een tekstbestand:
http://Cloud.github.com/downloads/rosemarybeetle/Twitr-Janus/twitr_janus_arduino_09.txt
Voor het gemakkelijke bekijken, hier is een facsimile van de afbeelding van de volledige tekst