Como enviar múltiplos sinais do arduino para processamento
A única coisa melhor do que enviar sinais para processamento está enviando vários sinais, certo? Enviar vários sinais é muitas vezes um obstáculo, porém, porque, apesar do envio de valores de vários sensores é fácil, manuseá-los na ordem correta na outra extremidade pode muitas vezes ser difícil.
Conteúdo
Video: Arduino e MySQL com PHP - Parte 1
Você precisa:
Um Arduino Uno
A placa de ensaio
Dois potenciômetros 10k ohm
Um botão
A 10k ohm resistor
fios 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 da mesma maneira que seria ligar um sensor de temperatura, com um lado ligado a 5V e o outro fio ao pino de entrada analógico, que é a leitura, bem como para GND através de uma resistência.
Estes podem, na verdade, ser substituídos com quaisquer entradas analógicas com as resistências adequadas. O botão de pressão fornece uma entrada digital bem. Um lado do botão de pressão é prendido a 5V e o outro está ligado ao pino digital lê-lo bem como GND através de uma resistência.
Video: DTMF - Goertzel - Arduino uno - DCA - UFRN
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 relevante para o esboço para o trabalho. O código Processamento sob o código Arduino é comentado para evitar interferência com o esboço Arduino.
/ * Chamada em série e ResponseLanguage: programa de Fiação / ArduinoThis envia um ASCII A (byte de valor 65) em que startupand repete até que se obtém alguma dados in.Then ele aguarda um byte na porta serial, andsends três valores do sensor, sempre que ele 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 de pressão ligados a digital I / o código exemplo 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. acessível() gt; 0) {// obter byte de entrada: inByte = Serial.read() - // li primeira entrada analógico, divida por 4 para fazer a gama de 0-255: firstSensor = analogRead(A0) / 4 - 10ms // atraso para deixar o ADC recuperar:demora(10) - // li segunda entrada analógica, divida por 4 para fazer a gama de 0-255: secondSensor = analogRead(1) / 4 - // interruptor de ler, mapeá-lo para 0 ou 255LthirdSensor = mapa(digitalRead(2), 0, 1, 0, 255) - // enviar valores do 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.
Video: Como Ler Dados da Serial do Arduino com o MatLab
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.
Video: Como receber dados no Arduino e acionar saidas com o ESP8266 3 de 3
// Este exemplo de código é de domínio público.importar processing.serial. * -int bgcolor- // Cor de fundoint fgcolor- // Preencha colorSerial myPort- // A porta serialint[] = SerialInArray new int[3] - // Onde vamos colocar o que recebemosint serialCount = 0- // Uma contagem de quantos bytes que recebemosint posx, ypos- // posição inicial da bolaboleano 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 - // Imprima 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 o meu adaptador 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) -encher(FgColor) - // Desenhar a formaelipse(xpos, ypos, 20, 20) -}vazio serialEvent (suaPorta série) {// lido um byte da porta de série: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 de bytes 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 gt; 2) {= xpos serialInArray [0] = -ypos serialInArray [1] = -fgcolor serialInArray [2] - // imprimir os valores (apenas para fins de depuração):println(xpos + "t" + ypos + "t" + fgColor) - // envia um capital A para solicitar novas leituras dos sensores: myPort.write (`UMA`) - // Repor serialCount: serialCount = 0-}}}
Clique no botão Run para executar o esboço de processamento, e um applet aparece. 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.