Paso 3: Utilizando Arduino para el control de acciones físicas basadas en los datos recibidos (con código)
Arduino está haciendo varias cosas:
- Está conectado al ordenador principal - digitalmente mediante una conexión USB y también con entrada analógica de la salida de audio de la computadora
- Mantiene una conexión de puerto serie con el equipo maestro, sobre el cual está constantemente busca nuevo control digital de datos que ha sido enviado por Internet a la computadora principal.
>>>
Esta línea es hacer la conexión en serie de Arduino...
Serial.Begin(115200);Esta línea está llamando a una rutina que comprueba la conexión fo rdate...
checkSerial ();
<<< - Comprueba cada 10-30 segundos y compara los datos entrantes a la última acción recibida y sólo actúa en él, si es diferente.
>>> void checkSerial)
{
Comprueba si hay una conexión...
si (Serial.available() > 0) {Lee los datos...
incomingByte = Serial.read();
}Si los datos son 30, se activará la rutina de Twitter (twitterCheck()...
si (incomingByte == 30) / /
{
twitterCheck();
}Si los datos están entre 0 y 25, datos de Google, así que llame a la función de control de Google - googleCheck()
si ((incomingByte < = 25) & & (incomingByte > 0)) / / google datos están datos codificados como un entero entre 0 y 25
{
googleCheck();
} else {/ / no hay punto de llamar a las funciones de verificación si no recibidos los datos en serie. Esta es la cláusula de control de errores
Serial.println ("recibí nada");
}
} / / enf de checkSerial
<<<
- Si se reciben nuevos datos, iluminará las verrugas del indicador en su frente. Estos están iluminados por LEDs.
Una verruga naranja se ilumina cuando Google datos (entero entre 0 y 25) se ha recibido, los datos se utilizan para colocar los servos y se desactiva la verruga azul
>>>
googleCheck() vacío
{
digitalWrite (twitterFlagPin, bajo);
eyeLeftRight = 2*(incomingByte-1);
eyeUpDown = (2 * incomingByte) -1;
Si (incomingByte < = 25)
{
digitalWrite (googleFlagPin, HIGH);
servoLeftRight.write(eyePos[eyeLeftRight]);
servoUpDown.write(eyePos[eyeUpDown]);
}
}
<<<Una verruga azul se ilumina cuando los datos de Twitter ha sido recibido (entero 30) y se desactiva la verruga naranja
>>>
void twitterCheck)
{
Esta función
digitalWrite (twitterFlagPin, HIGH);
digitalWrite (googleFlagPin, bajo);
}
<<< - Convertirá los datos entrantes del globo ocular en uno de varios valores de control de posición determinado para cada uno de los dos servos dentro de la cabeza. Uno para arriba/abajo, de izquierda. Utiliza la librería servo.h de Arduino para hacerlo
>>>
Los datos que se utilizan para acceder a datos desde una matriz que ha determinado los valores en ella (estos son los valores 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};
<<<
>>>
analogPeakCheck() vacío
{
Esta función se utiliza si utiliza audio salida de un amplificador analógico en el pin analógico 0
valueAnalogIn = analogRead(analogInput); Esto es comprobación de salida sobre un voltaje del umbral para desencadenar la señal de la mandíbula
Si (valueAnalogIn > thresholdAnalogIn)
{
digitalWrite (speechFlagPin, HIGH);
digitalWrite (speechFlagPinLED, HIGH);
}
Else {}
digitalWrite (speechFlagPin, bajo);
digitalWrite (speechFlagPinLED, bajo);
} / / fin comprobación de umbral / /
}
<<<
El código individual de control de Arduino es una adaptación de código básico en arduino.cc/
Descargar el completo Arduino Sketch
El sketch de Arduino completado está disponible para descargar aquí en GitHub como archivo de texto:
http://Cloud.github.com/downloads/rosemarybeetle/Twitr-Janus/twitr_janus_arduino_09.txt
Para la visión fácil, aquí es un facsímil de la imagen del texto completo