Étape 3: Utilisation de Arduino pour contrôler les actions physiques basées sur les données reçues (avec code)
L’Arduino est fait de plusieurs choses :
- Il est attaché à l’ordinateur maître - numériquement via une connexion USB et aussi avec une entrée analogique de la sortie audio de l’ordinateur
- Il maintient une connexion au port série avec l’ordinateur principal, sur lequel il est constamment des contrôles pour les nouvelles données numériques de contrôle qui a été envoyées sur le web sur l’ordinateur maître.
>>>
Cette ligne est Arduino effectuer le branchement en série...
Serial.Begin(115200) ;Cette ligne appelle une routine qui va vérifier la connexion fo rdate...
checkSerial () ;
<<< - Il vérifie toutes les 10 à 30 secondes et compare les données entrantes pour la dernière action reçue et n’agit que sur elle si elle est différente.
>>> Sub checkSerial ()
{
Il vérifie s’il existe une connexion...
si (Serial.available() > 0) {Lit les données...
incomingByte = Serial.read() ;
}Si les données sont 30, il déclenchera la routine de Twitter (twitterCheck()...
si (incomingByte == 30) / /
{
twitterCheck() ;
}Si les données sont compris entre 0 et 25, c’est Google données, alors appelez la fonction de vérification de Google - googleCheck()
si ((incomingByte < = 25) & & (incomingByte > 0)) / / google sont données codées comme un entier compris entre 0 et 25
{
googleCheck() ;
} else {/ / inutile d’appeler les fonctions de cocher si ce n’est des données série a reçu. Il s’agit d’une clause de gestion des erreurs
Serial.println (« j’ai reçu rien ») ;
}
} / / enf de checkSerial
<<<
- Si de nouvelles données sont reçues, il allumera les verrues indicateur sur son front. Ceux-ci sont éclairés par LED.
Un feux orange verrue quand Google données (entier compris entre 0 et 25) ont été reçues, les données sont utilisées afin de repositionner les servos et la verrue bleue est désactivée
>>>
Sub googleCheck()
{
digitalWrite (twitterFlagPin, basse) ;
eyeLeftRight = 2*(incomingByte-1) ;
eyeUpDown = (2 * incomingByte) -1 ;
Si (incomingByte < = 25)
{
digitalWrite (googleFlagPin, HIGH) ;
servoLeftRight.write(eyePos[eyeLeftRight]) ;
servoUpDown.write(eyePos[eyeUpDown]) ;
}
}
<<<Un feux bleu verrue lorsque les données de Twitter ont été reçues (entier 30) et la verrue orange est désactivée
>>>
Sub twitterCheck ()
{
Cette fonction
digitalWrite (twitterFlagPin, HIGH) ;
digitalWrite (googleFlagPin, basse) ;
}
<<< - Il convertira les données entrantes de globe oculaire dans l’une de plusieurs valeurs de contrôle de position prédéterminée pour chacun des deux servos à l’intérieur de la tête. Un pour haut/bas, un pour la gauche/droite. Il utilise la bibliothèque de servo.h Arduino pour cela
>>>
Les données entrantes sont utilisées pour accéder aux données d’un tableau qui a déterminé à l’avance les valeurs dedans (ce sont les valeurs 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};
<<<
>>>
Sub analogPeakCheck()
{
Cette fonction est utilisée si vous utilisez une sortie audio brute d’un amplificateur analogique dans la broche analogique 0
valueAnalogIn = analogRead(analogInput) ; C’est de vérifier pour la sortie ci-dessus une tension de seuil de déclenchement du signal de la mâchoire
Si (valueAnalogIn > thresholdAnalogIn)
{
digitalWrite (speechFlagPin, HIGH) ;
digitalWrite (speechFlagPinLED, HIGH) ;
}
else {}
digitalWrite (speechFlagPin, basse) ;
digitalWrite (speechFlagPinLED, basse) ;
} / / fin contrôle de seuil / /
}
<<<
Le code individuel pour le contrôle de l’Arduino est une adaptation de code de base sur arduino.cc/
Télécharger le Arduino Sketch complet
Le sketch Arduino complet est disponible au téléchargement ici sur GitHub sous forme de fichier texte :
http://Cloud.github.com/downloads/rosemarybeetle/Twitr-Janus/twitr_janus_arduino_09.txt
Pour faciliter la visualisation, voici un fac-similé de l’image du texte intégral