¿Cómo enviar múltiples señales del arduino para procesamiento
La única cosa mejor que el envío de señales a procesamiento está enviando señales múltiples, ¿verdad? Envío de señales múltiples a menudo es un obstáculo, sin embargo, porque a pesar de enviar los valores de múltiples sensores es fácil, el manejo de ellos en el orden correcto en el otro extremo a menudo puede ser difícil.
Necesitas:
Un Arduino Uno
Un tablero
Dos potenciómetros 10k ohmios
Un pulsador
Una resistencia de 10k ohmios
Cables Jump
El circuito es una combinación de tres entradas separadas. A pesar de que todos utilizan la misma corriente y la tierra, se puede pensar en las entradas de forma individual. Dos potenciómetros proporcionan dos valores. Estos están conectados en la misma forma que lo haría conectar un sensor de temperatura, con un lado conectado a 5V y el otro cable a la clavija de entrada analógica que está leyendo, así como a GND a través de una resistencia.
Estas son las que podrían ser sustituidos por cualquier entradas analógicas con las resistencias adecuadas. El pulsador proporciona una entrada digital también. Un lado del pulsador está cableada a 5V y la otra es por cable al pin digital de leerlo, así como GND través de una resistencia.
Cómo configurar el código de Arduino
Después de montar el circuito, es necesario el software adecuado para utilizarlo. En el menú Arduino, elija File-ejemplos-04.Communication-SerialCallResponse. Este bosquejo contiene código de Arduino y el código de procesamiento relevante para el boceto funcione. El código de procesamiento bajo el código de Arduino está comentado para evitar interferencias con el boceto Arduino.
/ * Llamar serie y ResponseLanguage: Programa de cableado / ArduinoThis envía un ASCII A (byte de valor 65) en startupand reitera que hasta que consigue algunos datos in.Then espera un byte en el puerto serie, andsends tres valores de los sensores cada vez que se pone Un byte in.Thanks a Greg Shakar y Scott Fitzgerald para el circuito improvementsThe: * potenciómetros conectados a entradas analógicas 0 y 1 * pulsador unidos a E / S digital 2Created 26 de septiembre 2005by Tom Igoemodified 24 de abril 2012by Tom Igoe y Scott FitzgeraldThis ejemplo de código está en el domain.http pública: //arduino.cc/en/Tutorial/SerialCallResponse*/int firstSensor = 0- // primer sensor analógicoint secondSensor = 0- // segundo sensor analógicoint thirdSensor = 0- // sensor digitalint inByte = 0- // entrante configuración bytevoid serie () {// iniciar puerto serie a 9600 bps: Serial.begin (9600) -mientras (de serie!) {- // esperar a puerto serie para conectar. Necesario para Leonardo única}pinMode(2, ENTRADA) - // Sensor digital está en 2establishContact pin digital () - // enviar un byte para establecer contacto hasta que el receptor responde //} void loop () {// si conseguimos un byte válido, lea ins analógicas: if (de serie. disponible ()> 0) {// obtener byte entrante: inByte = Serial.read() - // Leer primera entrada analógica, se divide por 4 para que el rango 0-255: firstSensor = analogRead(A0) / 4 - // retardo de 10 ms para permitir que el ADC recuperar:retraso(10) - // leer segunda entrada analógica, se divide por 4 para que el rango 0-255: secondSensor = analogRead(1) / 4 - // interruptor de leer, asignarla a 0 o 255LthirdSensor = mapa(digitalRead(2), 0, 1, 0, 255) - // enviar valores de los sensores:Serial.write(firstSensor) -Serial.write(secondSensor) -Serial.write(thirdSensor) -}}vacío establishContact () {while (Serial.available () lt; = 0) {Serial.print('LA') - // Enviar una mayúscularetraso(300) -}}
Sube este código a su Arduino.
Cómo configurar el código de procesamiento
Usted encontrará el código de procesamiento dentro de los marcadores de varias líneas de comentario (/ * * /) En la parte inferior del boceto Arduino SerialCallResponse. Copia el código dentro de los marcadores de comentario en un nuevo boceto Procesamiento y guardar con un nombre apropiado.
// Este código de ejemplo se encuentra en el dominio público.importación processing.serial *. -int bgcolor- // Color de fondoint fgcolor- // Llenar colorSerial myPort- // El puerto serieint[] = SerialInArray new int[3] - // ¿Dónde vamos a poner lo que recibimosint serialCount = 0- // Un recuento de la cantidad de bytes que recibimosint xpos, ypos- // Posición inicial de la bolaboolean firstContact = falso- // Ya que hemos escuchado de la // configuración microcontrollervoid () {tamaño(256, 256) - // tamaño del escenarionoStroke() - // No se rayan en lo próximo dibujado // Establecer la posición inicial de la bola (medio del escenario) xpos = ancho/ 2-ypos = altura/ 2 - // Imprimir una lista de los puertos serie, para propósitos de depuración:println(De serie.lista()) - // Sé que el primer puerto en la lista de serie en mi mac // es siempre mi adaptador FTDI, así que abro Serial.list () [0] .// En máquinas Windows, esto generalmente se abre COM1. // Abrir cualquier puerto es el que usted está usando.Cuerda PortName = de serie.lista() [0] = -myPort nuevo Serial (esta, PortName, 9600) -} void draw () {fondo(bgcolor) -llenar(fgcolor) - // Dibuje la formaelipse(xpos, ypos, 20, 20) -}vacío serialEvent (MyPort serie) {// leer un byte desde el puerto serie:int inByte = myPort.read () - // si este es el primer byte recibido, y es una A, // borrar el búfer de serie y tenga en cuenta que he // tuvo el primer contacto del microcontrolador .// De lo contrario, agregue la byte de entrada a la matriz:si (firstContact == falso) {si (inByte == 'LA') {MyPort.clear () - // borrar el puerto serie bufferfirstContact = cierto- Primer contacto // que has tenido desde el microcontrollermyPort.write ('LA') - // Pedir más}} else {// Añadir el último byte del puerto serie a serie: serialInArray [serialCount] = inByte-serialCount ++ - // Si tenemos 3 bytes:si (serialCount> 2) {xpos = serialInArray [0] = -ypos serialInArray [1] -fgcolor = serialInArray [2] - // imprimir los valores (para fines de depuración solamente):println(xpos + " t" + ypos + " t" + fgcolor) - // Enviar A mayúscula para solicitar nuevas lecturas de los sensores: myPort.write ('LA') - // Restablecer serialCount: serialCount = 0-}}}
Haga clic en el botón Ejecutar para ejecutar el boceto de procesamiento, y aparece un applet. El applet tiene un fondo negro, y cada vez que se pulsa el botón, aparece un punto blanco. Mover los potenciómetros para mover el punto horizontal y verticalmente. Al soltar el pulsador, el punto desaparece.