Como enviar vários sinais do Arduino para Processamento

A única coisa melhor do que o envio de sinais para processamento está enviando vários sinais, certo? Enviar vários sinais é muitas vezes um obstáculo, porém, porque, embora o envio de valores de vários sensores é fácil, manuseá-los na ordem correta do outro lado muitas vezes pode ser difícil.

Você precisa:

  • Um Arduino Uno

  • A placa de ensaio

  • Dois potenciômetros 10k ohm

  • Um botão

  • A 10k ohm

  • fios de salto

O circuito é uma combinação de três entradas separadas. Embora todos eles usam o mesmo poder e chão, você pode pensar das entradas individualmente. Dois potenciómetros fornecer dois valores. Estes são ligados na mesma maneira que você conectar um sensor de temperatura, com um lado ligado a 5V e outra com fio para o pino de entrada analógica que é lê-lo, bem como para GND através de um resistor.

image0.jpg

Estes poderiam realmente ser substituído por quaisquer entradas analógicas com as resistências apropriadas. O botão fornece uma entrada digital também. Um lado do botão de pressão é ligado a 5V e o outro está ligado ao pino digital lê-lo, bem como através de uma resistência GND.

image1.jpg

Como configurar o código Arduino

Depois de montar o seu circuito, você precisa do software apropriado usá-lo. A partir do menu Arduino, escolha Arquivo-Exemplos-04.Communication-SerialCallResponse. Este esboço contém código Arduino eo código de processamento relevantes para o esboço para o trabalho. O código de processamento sob o código Arduino é comentado para evitar a interferência com o esboço Arduino.

/ * Chamada de série e ResponseLanguage: Programa de fiação / ArduinoThis envia um ASCII A (byte de valor 65) em startupand repete que até que ele recebe alguns dados in.Then ele aguarda um byte na porta serial, andsends três valores do sensor sempre que recebe um byte in.Thanks para Greg Shakar e Scott Fitzgerald para o circuito de improvementsThe: * potenciômetros ligados a entradas analógicas 0 e 1 * botão anexado a digital I / code exemplo o 2Created 26 de setembro 2005by Tom Igoemodified 24 de abril 2012by Tom Igoe e Scott FitzgeraldThis está no domain.http público: //arduino.cc/en/Tutorial/SerialCallResponse*/int firstSensor = 0- // sensor analógico primeiroint secondSensor = 0- // segundo sensor analógicoint thirdSensor = 0- // sensor digitalint inByte = 0- // entrada configuração bytevoid série () {// inicia porta serial a 9600 bps: Serial.begin (9600) -enquanto (Serial!) {- // esperar por porta serial para conectar. Necessário para Leonardo única}pinMode(2, ENTRADA) - // Sensor digital está em 2establishContact pino digital () - // enviar um byte para estabelecer contato até receptor // responde} void loop () {// se conseguirmos um byte válido, leia ins analógicos: if (Serial. disponível ()> 0) {// pega bytes de entrada: inByte = Serial.read() - // Ler a entrada primeira analógico, divida por 4 a tornar o intervalo 0-255: firstSensor = analogRead(A0) / 4 - 10ms // atraso para deixar o ADC recuperar:demora(10) - // lê segunda entrada analógica, divida por 4 a tornar o intervalo 0-255: secondSensor = analogRead(1) / 4 - // interruptor de ler, mapeá-lo para 0 ou 255LthirdSensor = mapa(digitalRead(2), 0, 1, 0, 255) - // enviar os valores de sensor:Serial.write(FirstSensor) -Serial.write(SecondSensor) -Serial.write(ThirdSensor) -}}vazio establishContact () {while (Serial.available () lt; = 0) {Serial.print('UMA') - // Enviar um A maiúsculodemora(300) -}}

Enviar este código ao seu Arduino.

Como configurar o código Processamento

Você encontra o código de processamento dentro de marcadores de comentário de várias linhas (/ * * /) Na parte inferior do esboço Arduino SerialCallResponse. Copie o código dentro dos marcadores de comentário em um novo esboço de processamento e salvar com um nome apropriado.

// Este exemplo de código é de domínio público.importar processing.serial. * -int bgcolor- // A cor do fundoint fgcolor- // Preencha colorSerial myPort- // A porta serialint[] = SerialInArray new int[3] - // Onde vamos colocar o que recebemosint serialCount = 0- // A contagem de quantos bytes que recebemosint posx, ypos- // posição inicial da bolaboolean firstContact = falso- // Se nós já ouviu falar do // configuração microcontrollervoid () {tamanho(256, 256) - // tamanho do PalconoStroke() - // Não fazem fronteira com a próxima coisa tirada // Definir a posição inicial da bola (meio do palco) posx = largura/ 2-ypos = altura/ 2 - // Imprimir uma lista das portas seriais, para fins de depuração:println(Serial.Lista()) - // Eu sei que a primeira porta na lista de série do meu mac // é sempre a minha placa FTDI, então eu abrir Serial.list () [0] .// Em máquinas Windows, isso geralmente abre COM1. qualquer porta // Open é o que você está usando.Corda portName = serial.Lista() [0] = -myPort novo Serial(esta, portName, 9600) -} empate void () {fundo(Bgcolor) -preencher(FgColor) - // Desenhar a formaelipse(xPos, ypos, 20, 20) -}vazio serialEvent (suaPorta Serial) {// ler um byte da porta serial:int inByte = myPort.read () - // se este é o primeiro byte recebido, e é um A, // limpar o buffer de série e note que você tem // teve o primeiro contato do microcontroller.// Caso contrário, adicione o byte de entrada para a matriz:E se (FirstContact == falso) {E se (InByte == 'UMA') {MyPort.clear () - // limpar a porta serial bufferfirstContact = verdade- primeiro contato // você teve do microcontrollermyPort.write ('UMA') - // Pedir mais}} else {// Adicionar o último byte da porta serial para array: serialInArray [serialCount] = inByte-serialCount ++ - // Se temos 3 bytes:E se (SerialCount> 2) {posx = serialInArray [0] = -ypos serialInArray [1] -fgcolor = serialInArray [2] - // imprimir os valores (apenas para fins de depuração):println(posx + " T" + ypos + " T" + fgColor) - // envia um capital Um para solicitar novas leituras dos sensores: myPort.write ('UMA') - // Repor serialCount: serialCount = 0-}}}

Clique no botão Executar para executar o esboço de processamento, e um applet é exibida. O applet tem um fundo preto, e sempre que você pressionar o botão, um ponto branco aparece. Mover os potenciómetros para mover o ponto horizontalmente e verticalmente. Quando você soltar o botão, o ponto desaparece.

menu