Um exemplo simples de comunicação entre a placa Arduino e o computador: imprime-se o valor de uma entrada analógica. Chamamos de comunicação "serial" porque para ambos, Arduino e o computador, parece-lhes tal como uma comunicação serial tradicional mesmo que na verdade se use um cabo USB.
Você pode usar o Arduino serial monitor para visualizar os dados enviados, ou pode-se lê-los com Processing (veja abaixo), Flash, PD, Max/MSP etc.
Uma entrada analógica conectada ao pino analógico 0.
void setup() { Serial.begin(9600); } void loop() { Serial.println(analogRead(0)); delay(20); }
// Gráfico // por David A. Mellis // // Demonstra a leitura de dados vindos a partir da placa Arduino // por meio do desenho de um gráfico dos valores recebidos. // // baseado em Analog In // por <a href="https://itp.jtnimoy.com">Josh Nimoy</a>. import processing.serial.*; Serial port; String buff = ""; int NEWLINE = 10; // Armazene os últimos 64 valores recebidos de forma que possamos desenhá-los int[] values = new int[64]; void setup() { size(512, 256); println("Portas seriais disponíveis:"); println(Serial.list()); // Use a primeira porta da lista (número 0). Mude esta parte // conforme a porta correspondente a sua placa Arduino. O último // parâmetro (9600) é a velocidade de comunicação. Ela // deve corresponder ao valor passado ao Serial.begin() em seu // esboço Arduino. port = new Serial(this, Serial.list()[0], 9600); // se você conhecer o nome da porta usada pela placa Arduino, // também pode especificá-la diretamente, como segue. //port = new Serial(this, "COM1", 9600); } void draw() { background(53); stroke(255); // Desenhe os valores guardados com uma linha entre os pontos. for (int i = 0; i < 63; i++) line(i * 8, 255 - values[i], (i + 1) * 8, 255 - values[i + 1]); while (port.available() > 0) serialEvent(port.read()); } void serialEvent(int serial) { if (serial != NEWLINE) { // Armazene todos os caracteres na linha buff += char(serial); } else { // O final de cada linha é marcado com dois caracteres: um retorno // de carro e um nova linha. Chegamos aqui porque temos um nova linha, // mas ainda precisamos excluir o retorno de carro. buff = buff.substring(0, buff.length()-1); // Transforme a string em inteiro. Dividimos por 4 porque // as entradas analógicas vão de 0 a 1023, enquanto que as cores // em Processing vão apenas de 0 a 255. int val = Integer.parseInt(buff)/4; // Limpe o valor contido em "buff" buff = ""; // Desloque os valores existentes para liberar espaço para novos valores. for (int i = 0; i < 63; i++) values[i] = values[i + 1]; // Inclua ao vetor o valor recebido values[63] = val; } }