Sunteți pe pagina 1din 9

Pesquise neste blog :

02 setembro 2014
Pesquisar
Processing : mostre as informações do Arduino no Custom Search

seu computador
Hoje vamos ver como mostrar informações do Arduino na tela do computador utilizando o Processing, uma
linguagem de programação de código aberto usada para escrever programas utilizando representação gráfica.
Com ela você consegue criar imagens e animações e por esse motivo é uma linguagem muito utilizada por
profissionais de design e ilustradores.

No Arduino, podemos utilizar o Processing para coletar as informações da placa e mostrá-las na tela do Assine nossa newsletter:
computador, como fiz ligando ao Arduino um botão tipo push-button e um led.
Seu email...

Quero assinar!

A parte superior da tela temos o Estado Botão, onde um círculo mostra se o led está apagado (círculo em
preto), ou aceso (círculo em vermelho). No meio da tela, um contador incrementado a cada acionamento do
botão, e na parte inferior um gráfico que vai sendo atualizado conforme acionamos o circuito.

Para obter esse resultado, vamos instalar o Processing no computador e também preparar o Arduino
carregando o FIRMATA, que é um protocolo que vai fazer com que o Arduino receba e envie dados ao
computador, via porta serial. Marcadores

arduino bluetooth componentes display


Configurando o Arduino esp8266 gsm HC-SR04 IR LCD livros modulos
motores raspberry pi sensores shield
Vamos começar pelo Arduino, entrando na IDE, em Arquivo => Exemplos => Firmata => StandardFirmata: temperatura videos wireless

Arquivo do blog

Transfira o StandardFirmata para o Arduino e monte o circuito abaixo, composto por um push-button, um ► 2018 (22)
resistor e um led :
► 2017 (24)
► 2016 (28)
► 2015 (35)
▼ 2014 (55)
► Dezembro 2014 (2)
► Novembro 2014 (5)
► Outubro 2014 (6)
▼ Setembro 2014 (5)
Controlando servo motor com o Motor
Shield L293D
Contador de visitantes usando led IR e
fototransis...
Como programar o Arduino Pro Mini
usando conversor...
Sensor GY-80 - Acelerômetro Giroscópio
Magnetômetr...
Processing : mostre as informações do
Arduino no s...

► Agosto 2014 (6)


► Julho 2014 (7)
► Junho 2014 (4)
► Maio 2014 (4)
► Abril 2014 (4)
► Março 2014 (3)
► Fevereiro 2014 (3)
► Janeiro 2014 (6)

► 2013 (66)

Postagens populares

Como utilizar o módulo I2C


com display LCD

Controle remoto IR no
Arduino

Acionando portas do
Arduino usando Android e
bluetooth

Controlando um servo motor


com Arduino

Ligando uma lâmpada com


módulo relé

Fale com o administrador do site


Politica de Privacidade

O conteúdo do blog Arduino e Cia, está


licenciado com uma Licença Creative
Commons - Atribuição-CompartilhaIgual 4.0
Internacional.

Como estamos utilizando o Firmata, todas as definições de portas , variáveis e outros detalhes do programa
serão feitos diretamente no Processing.

Instalando o Processing
Faça o download do Processing diretamente do site oficial do programa, nesse endereço:
https://www.processing.org/download/?processing. Neste tutorial estamos utilizando a versão 2.2.1 para
Windows 32 Bits, conforme destacado. Estão disponíveis também versões para Linux e Mac OS:
Após o download, descompacte o arquivo e você terá uma pasta chamada processing-2.2.1. Dentro dessa
pasta você terá o executável do programa, que é o processing.exe. Se preferir, crie um atalho para o
Processing na sua área de trabalho.

Biblioteca do Arduino para o Processing


Faça agora o download da biblioteca do Arduino para o Processing. Essa biblioteca vai cuidar de toda a parte
de comunicação entre o Arduino e o computador : https://github.com/pardo-bsso/processing-arduino.

Descompacte o arquivo e você terá uma pasta chamada Arduino. Copie essa pasta para dentro da pasta de
bibliotecas do Processing (não confunda com a pasta libraries do Arduino) que se encontra geralmente em
Meus Documentos\Processing\Libraries. Essa pasta é criada na primeira vez que você executar o
Processing:

Programando o Processing
Abra o Processing , e você verá a tela abaixo, que por sinal é muito parecida com a IDE do Arduino :

E não é só a IDE. A programação do Processing também é muito parecida com a do Arduino. Também temos
uma seção SETUP, onde você coloca as definições iniciais do programa, e uma seção DRAW (semelhante ao
LOOP do Arduino), onde estão os comandos para desenhar na tela e a comunicação com o Arduino.

Na tela do Processing, carregue o seguinte programa :


1 // Programa : Informacoes na tela com o processing
2 // Autor : Arduino e Cia
3
4 // Carrega as bibliotecas Serial e Arduino
5 import processing.serial.*;
6 import cc.arduino.*;
7
8 Arduino arduino;
9
10 // Definicao das variaveis
11 int ledPin = 3;
12 int pinobotao = 7;
13 int valor = 0;
14 int x = 0;
15 int y = 290;
16 int contador = 0;
17
18 void setup()
19 {
20 // Abre uma janela no tamanho 500x300
21 size(500,300);
22 // Habilita o anti-aliasing
23 smooth();
24 // Define fundo na cor preta
25 background(0);
26 println(Arduino.list());
27
28 // Comunicacao com Arduino
29 arduino = new Arduino(this, Arduino.list()[0], 57600);
30 // Define o pino do led como saida
31 arduino.pinMode(ledPin, Arduino.OUTPUT);
32 // Define o pino do botao como entrada
33 arduino.pinMode(pinobotao, Arduino.INPUT);
34
35 ellipseMode(RADIUS);
36
37 //Carrega a fonte de texto a ser utilizada
38 textFont(createFont("Arial Bold",18));
39 textAlign(CENTER);
40
41 // Cor da linha = branco
42 fill(255);
43 // Desenha o retangulo no centro da janela
44 rect(110,125,275,31);
45
46 // Inicio do cabecalho
47 // Desenha o retangulo azul
48 fill(90,109,238); // Cor preenchimento
49 rect(0,0,width,40);
50 // Define o tamanho da fonte
51 textSize(31);
52 // Define a cor e imprime o texto
53 fill(255); // Cor branca
54 text("Arduino e Cia", width/2,30);
55 // Final do cabecalho
56
57 // Texto Estado Botao
58 textSize(25);
59 text("Estado botão", 220,90);
60
61 // Texto Inicial contador
62 fill(0);
63 text("Contador : " + contador, width/2, height/2);
64 }
65
66 void draw()
67 {
68 valor = arduino.digitalRead(pinobotao);
69 stroke(255);
70 fill(0);
71 // Atualiza o circulo referente ao Estado Botao
72 ellipse(340, 80, 15,15);
73
74 // Apaga o led
75 arduino.digitalWrite(ledPin, Arduino.LOW);
76
77 // Verifica se o botao foi pressionado
78 if (valor !=0)
79 {
80 // Incrementa o contador
81 contador = contador+1;
82 // Atualiza as informacoes do contador na tela
83 fill(255);
84 rect(111,126,273,28);
85 fill(0);
86 text("Contador : " + contador, width/2, height/2);
87 // Acende o led
88 arduino.digitalWrite(ledPin, Arduino.HIGH);
89 // Ajusta o valor de Y para desenho do grafico
90 y = 200;
91 // Define a cor da linha como vermelho
92 stroke(255,7,7);
93 // Desenha uma linha vermelha no grafico
94 line( x, 290, x, y);
95 // Desenha o botao Estado Botao em vermelho
96 fill(255,7,7);
97 ellipse(340, 80, 14, 14);
98 }
99
100 // Atualiza o grafico
101 stroke(0);
102 line(x+1,291, x+1, 199);
103 stroke(33,223,109);
104 line(x,290, x, 245);
105
106 // Atualiza o valor de X para desenhar a
107 // proxima linha do grafico
108 x = x +1;
109 // Se o valor de X for igual ao tamanho da tela (500),
110 // reinicia a contagem
111 if (x == width)
112 {
113 x = 0;
114 stroke(0);
115 line(x,291, x, 199);
116 }
117
118 // Aguarda 10 milisegundos e reinicia o processo
119 delay(10);
120 }

Clique no ícone RUN, na parte superior esquerda do Processing.

Nesse momento, será carregada a tela que mostramos no início desse post, e a comunicação com o Arduino
será iniciada.

No início do programa definimos um objeto Arduino e atribuímos a ele o nome arduino. Esse objeto vai permitir
que possamos enviar e receber informações da placa, definir portas e controlar toda a parte de comunicação.

A linha arduino = new Arduino(this, Arduino.list()[0], 57600) inicializa o objeto Arduino e seta a velocidade
da comunicação serial para 57600, que é a velocidade padrão configurada no firmware FIRMATA que
carregamos anteriormente.

Outras linhas que utilizamos para enviar comandos ao Arduino são :

arduino.pinMode(ledPin, Arduino.OUTPUT);
arduino.pinMode(pinobotao, Arduino.INPUT);
arduino.digitalWrite(ledPin, Arduino.LOW);
Que servem para definir o modo de funcionamento das portas (INPUT (entrada) ou OUTPUT (saída)), e
também para modificar o estado da porta do led, colocando-a em nível baixo ou alto.

Para a a parte gráfica, definimos o tamanho da tela com o comando size(), que deve ser colocado logo no
início do setup, antes de definirmos as outras opções da parte gráfica, como linhas, fontes e cores.

Os demais comandos utilizados são o line(), para desenhar linhas, o ellipse(), utilizado para desenhar o botão
de estado do led, e o rect(), para desenhar os retângulos.Uma lista detalhada dos comandos aceitos pelo
Processing, com sintaxe e exemplos de uso, pode ser acessada no site oficial do programa, nesse link:
http://processing.org/reference/

O vídeo abaixo mostra o circuito e o programa utilizados neste tutorial :

Arduino e Cia : Comunicação Arduino - Processing

Postado por Arduino e Cia às 07:59

Marcadores: arduino, led, processing

22 comentários:
Anônimo 2 de julho de 2015 14:25
esta dando um erro na linha "arduino = new Arduino(this, Arduino.list()[0], 57600)", o que eu faço?

Responder

Respostas

Arduino e Cia 2 de julho de 2015 17:58

Boa tarde,

Que erro está apresentando ?

Abraço.

Everton Fernandes 3 de agosto de 2015 14:06


Seu Arduino deve estar conectado ao computador para executar o código do processing

Anônimo 3 de março de 2016 01:37


O meu tbm ta dando esse erro! arduino = new Arduino(this, Arduino.list()[0], 57600)

Anônimo 3 de março de 2016 01:37

No meu também ta dando esse erro.

arduino = new Arduino(this, Arduino.list()[0], 57600)

Arduino e Cia 3 de março de 2016 10:23

Oi Bruno,

Talvez a porta serial já esteja ocupada, por exemplo, com o Serial Monitor, por isso o Processing não
está reconhecendo o Arduino.

Abraço!

Blaszczak 3 de junho de 2016 19:16

No meu aparece esse mesmo erro.


arduino = new Arduino(this, Arduino.list()[0], 57600)

como posso resolver isso? como desocupar a porta serial ?

I have an idea 25 de julho de 2017 16:21

GALERA SUBSTITUAM POR ESTE CODIGO

arduino = new Arduino(this,"COM3", 9600); //ALTERE A COM3 PARA SUA PORTA SERIAL

Responder

Anônimo 29 de julho de 2015 22:10

Boa noite,

O meu não está comunicando, mas não dá erro, apenas não funciona...
- carreguei o firmata;
- baixei a biblioteca;
- processing 2.2.1 64bits e IDE 1.6.0;

Também fiz o código abaixo para ver se acionava as saidas 12 e 13 e nada....

import processing.serial.*;
import cc.arduino.*;

Arduino arduino;

int pino13 = 13;


int pino12 = 12;

void setup (){


arduino = new Arduino (this, Arduino.list()[0], 57600);
arduino.pinMode (pino13, arduino.OUTPUT);
arduino.pinMode (pino12, arduino.OUTPUT);

void draw (){


arduino.digitalWrite (pino13, arduino.HIGH);
arduino.digitalWrite (pino12, arduino.HIGH);

Alguma ideia do que estou fazendo errado?

Responder

Anônimo 4 de agosto de 2015 20:46

Boa noite !
Ao rodar o Processing apareceu o seguinte erro...

java.lang.RuntimeException: javax.media.opengl.GLException: Unable to set pixel format 11 for device context


0xa010e96: error code 0
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:98)
at javax.media.opengl.awt.GLCanvas.setRealized(GLCanvas.java:513)
at javax.media.opengl.awt.GLCanvas.validateGLDrawable(GLCanvas.java:702)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:534)
at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.media.opengl.GLException: Unable to set pixel format 11 for device context 0xa010e96: error
code 0
at
jogamp.opengl.windows.wgl.WindowsWGLGraphicsConfigurationFactory.updateGraphicsConfiguration(Windows
WGLGraphicsConfigurationFactory.java:226)
at
jogamp.opengl.windows.wgl.WindowsWGLGraphicsConfiguration.updateGraphicsConfiguration(WindowsWGLGr
aphicsConfiguration.java:140)
at jogamp.opengl.windows.wgl.WindowsWGLDrawable.setRealizedImpl(WindowsWGLDrawable.java:74)
at jogamp.opengl.GLDrawableImpl.setRealized(GLDrawableImpl.java:195)
at javax.media.opengl.awt.GLCanvas.setRealizedImpl(GLCanvas.java:493)
at javax.media.opengl.awt.GLCanvas.access$100(GLCanvas.java:159)
at javax.media.opengl.awt.GLCanvas$3.run(GLCanvas.java:503)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Estou rodando em Windows Xp Sp3. Alguem pode me ajudar ?
Abraços !
Responder

Dionata Eduardo 4 de novembro de 2015 23:27


Olá queria controlar 5 servos com arduino uno e um modulo bluetooth vcs podem me ajudar?

Responder

Respostas

Arduino e Cia 4 de novembro de 2015 23:36


Boa noite,

Eu tenho um artigo falando sobre servo motores controlados por bluetooth. Veja se te ajuda:

http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html

Abraço!

Responder

VANDERLEI BORGES 18 de dezembro de 2015 09:16


Muito bom este tutorial, me mostrou varias possibilidades do uso de graficos.
Parabens.

Responder

Respostas

Arduino e Cia 20 de dezembro de 2015 10:58

Valeu Vanderlei. Abraço! :)

Responder

Unknown 1 de agosto de 2016 22:22

Boa noite,

Estou obtendo o erro "ArrayIndexOutOfBoundsException: 0" na linha " arduino = new Arduino(this, Arduino.list()
[0], 57600);", além de estar em destaque um problema de compatibilidade na linha "println(Arduino.list());". Como
posso resolver o problema e conseguir abrir a janela gráfica do LED?
Responder

Respostas

Arduino e Cia 2 de agosto de 2016 22:37


Boa noite,

Esse erro está sendo apresentado na hora de compilar o programa do Arduino ?

Abraço!

Vinicius Augusto Carnevali Miquelin 2 de agosto de 2016 23:28

Boa noite,

Estava sim, mas passei do Processing 3 para o 2 e funcionou como o esperado. Parabéns pelos
posts, são bem feitos e muito motivadores para quem quer aprender por conta. Um abraço!

Arduino e Cia 2 de agosto de 2016 23:42

Oi Vinicius!

Legal, essa informação do Processing 2 e 3 é importante. :)

Muito obrigado e espero sua visita no blog sempre que puder.

Abraço!

Anônimo 16 de janeiro de 2018 19:25

Boa tarde, o qual é a alteração que devo fazer para que o programa funcione na versão 3.3.6 ?
obrigado

Arduino e Cia 18 de janeiro de 2018 09:17


Bom dia, que erro está apresentando?

Abraço!

Adilson
Responder

Vinícius Duzanski 9 de janeiro de 2017 08:46


Bom dia!

Estou trabalhando em um projeto aqui em que eu preciso gerar gráficos da tensão e da corrente de um motor em
uma interface gráfica. Consigo fazer isso com o processing ?
Responder

Renato Vilela 21 de maio de 2017 13:56

Só substituir o "arduino = new Arduino (this, Arduino.list()[0], 57600);" por "arduino = new Arduino(this, "COM9",
9600);" que dar certo, sendo que "COM9" é o nome da sua port.

Responder

Digite seu comentário...

Comentar como: mundotecnico ( Sair

Publicar Visualizar Notifique-me

Postagem mais recente Página inicial Postagem mais antiga

Assinar: Postar comentários (Atom)

Arduino e Cia © Copyright 2018

S-ar putea să vă placă și