Paso 8: Techy - usando Arduino hacer un botón físico de un enviar un tweet
Claramente esto fue donde un Arduino práctico siempre iba a ser la solución!
Rápidamente supe que esto sería un botón. Finalmente me decidí por un timbre viejo buena...
El circuito de timbre es muy simple
El skethc Arduino completo está disponible en GitHub aquí:
https://github.com/rosemarybeetle/psychic-fortune-teller
A continuación se muestra el mismo sketch de Arduino con algunas anotaciones. Se puede ver es bastante simple. Busca una pulsación (como en el circuito de arriba)
/*
Fortune Teller Hive Arduino board code
Needed to control physical interaction...
and relay physical-detection data back to Processing mothership!
*/
La siguiente línea define una variable (switchPin) para almacenar un entero, que se utilizará para definir qué entrada analógica se utilizará.int switchPin = A0; // Analogue in = A0, called switchPin.
La siguiente línea define una variable para mostrar que PIN un LED se une aint led = 13; // LED pin...
La siguiente línea es la inicialización de la variable de entrada analógicaint analogValue = 0; // this is used to determine whether to make a call to Twitter (if high)
Inicializar el período de tiempo...float timerPeriod=5000; //don't send data more often than this
Inicializar una variable de contador de tiempo...float timerSend=millis();
Inicializar una segunda variable de comparación temporizadorfloat timerCheck=0;
La función de configuración... // initialize the digital pin as an output. // the loop routine runs over and over again forever:void setup() {
Hacer una conexión en serie en baudios 114200...Serial.begin(115200);
Enviar mensaje de confirmación a través de puerto serie USB. Se utiliza en las pruebas deSerial.write("Serial connection initiated");
pinMode(led, OUTPUT);
}
La función de bucle principal...void loop() {
La siguiente línea está haciendo el cheque de Arduino para cualquier señal analógica en el pin analógico 0...analogValue = analogRead(switchPin);
Si se pulsa el timbre de la puerta, la entrada al pin analógico 0 será 5V. Esto es equivalente a 1024. La instrucción IF tiene un umbral de 900 (aproximadamente 4.5V)if (analogValue >=900) {
restablecer la primera variable de temporizador (timerSend)timerSend=millis();
Verifica si entre ahora y por último reset (timerSend-timerCheck) es mayor que el período predeterminado (timerPeriod)
Nota al principio que esto será cierto. Después de la primera presión será false hasta que haya transcurrido un período. Esto es la prevención accidental envía múltiples de datos en serie que podrían causar el adivino tratar de hablar lo mismo varias vecesif ((timerSend-timerCheck)>timerPeriod) {
Enviar el mensaje "fireTweet" a la secuencia de comandos de procesamiento sobre el puerto serie (USB)Serial.write("fireTweet");
Una vez enviado restablecer la variable de contador de tiempo de verificación. Se trata de usd en el check IF para evitar que refiring demasiado prontotimerCheck=millis();
analogValue = 0; // reset - this is used to ensure the value is reset after a successful release of the switch
// ADD ANY OTHER TRIGGERS HERE THAT COME FROM THIS INTERACTION
}
}
}
.