Mundo Arduino: Vamos começar a programar?
Por Jorge Alcino para o Pplware
O Arduino é uma plataforma de hardware livre, projectado com um microcontrolador Atmel AVR. É uma placa de código aberto baseado em num circuito de entradas/saídas simples, micro controlada e desenvolvida sobre uma biblioteca que simplifica a escrita da programação em C/C++.
O Arduino pode ser programado com a linguagem de programação Arduino, que é baseada na linguagem Wiring e seu ambiente de desenvolvimento é baseado no Processing. Mais a frente iremos abordar a programação deste.
Para dar seguimento ao artigo inicial do Mundo Arduino neste artigo iremos iniciar na programação nesta plataforma.
Antes de tudo é necessário fazer o download e instalar o IDE (compatível com Windows, Mac e Linux).
Após a instalação abrimos o IDE e iremos ter uma interface parecida a esta.
Detalhe da interface
- 1 - Compilar – Esta função serve para verificar se há algum erro. Se houver algum erro irá ser mostrado na parte 9 (zona inferior da interface).
- 2 - Enviar – Este botão serve para compilar e enviar o código para o Arduino.
- 3 - Novo Ficheiro – Este botão serve para criarmos um novo ficheiro.
- 4 - Abrir – Ao clicar neste botão irá aparecer uma janela (explorador) para navegarmos até ao ficheiro que pretendemos abrir
- 5 - Guardar – Como o nome diz, este botão serve para guardarmos o nosso ficheiro.
- 6 - Aqui temos o nome do ficheiro.
- 7 - “Serial Monitor” – Ao clicarmos aqui, irá aparecer uma janela onde são mostrados alguns dados (caso esteja na programação para os mostrar, iremos aprender isso numa publicação futura.
- 8 - Aqui será onde vamos escrever o nosso código.
- 9 - Caso haja erros na programação, irão aparecer aqui.
Seleccionar Placa Arduino
Antes de começarmos a programar deveremos ir a “tools” -> “boards” e seleccionas o modelo da placa Arduino. Eu irei usar o MEGA 2560 visto este ser o modelo da placa que tenho.
Após isto, ligamos o nosso Arduino ao computador através da porta USB. Mais uma vez, temos de ir a “tools”, mas desta vez vamos aceder a “Serial Port”. Aqui temos que seleccionar a porta USB a que está ligada o Arduino.
Primeira aplicação
Após termos feito isto estamos prontos a começar a fazer o nosso primeiro programa no Arduino. Neste primeiro programa iremos fazer um LED piscar. Para este tutorial, precisamos de um computador, de um Arduino, de um cabo de ligação Arduino->computador, um LED, e caso necessário uma resistência de 220 ohm. Vamos então prosseguir para a respectiva ligação do LED ao Arduino.
A estrutura de programação do Arduino é constituída por duas funções principais, a “setup” e o “loop”. No setup iremos dar indicações ao Arduino de onde estão ligados os componentes. No loop iremos escrever as instruções. Um detalhe importante, é que as funções escritas no loop irão estar em ciclo constante, ou seja, o loop quando acaba, volta a reiniciar, infinitamente.
Logo, primeiro de tudo, o nosso código vai ser parecido com este:
void setup() { pinMode(13, OUTPUT); } void loop() { } |
Explicação do código
Void
- O “void” declara uma função, tal como dissemos acima o código tem que obrigatoriamente ter o “setup” e o “loop”.
pinMode
- O “pinMode” declara o modo do pin em que vamos ligar os componentes, sendo que só é necessário declarar os digitais. Os analógicos só têm de ser declarados quando é para funcionarem como saída. Sendo que dentro de parênteses temos, em primeiro lugar o número do pin, e a seguir á vírgula como queremos que a porta funcione (Entrada, “INPUT” ou saída “OUTPUT”).
Este código não irá fazer o LED acender. Para isso temos que adicionar uma linha no “loop”. Esta linha é composta por um “digitalWrite” que é uma função que escreve dados no pin. Esta função também leva parênteses, e dentro destes, deve constar o numero do pin e se queremos que aquela porta não tenha voltagem(LOW), ou se queremos que tenha(HIGH). Sendo assim, o nosso código deve ficar parecido com este:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); } |
Após enviarmos o nosso código para o Arduino, o LED irá acender e nunca irá apagar.
O próximo passo é fazer o led piscar. Para isto precisamos de criar um delay entre o “HIGH” e o “LOW” e também um delay a seguir ao “LOW” (os tempos de delay podem ser diferentes). O delay é um compasso de espera em que todo o sistema para durante o tempo escolhido. Dentro de parentises o delay tem, em milissegundos, o tempo que queremos que seja. Neste caso, o tempo escolhido foi de 1 segundo. Logo o nosso código vai ser parecido a este:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } |
Com este código fazemos o LED piscar de segundo a segundo, ou seja, o LED fica ligado durante um segundo, apaga durante um segundo, e volta a ligar.
Um detalhe que temos que ter em atenção é como escrevemos as palavras das funções, pois no arduino “Loop” é diferente de “loop”, e “DIGITALWRITE” é diferente de “digitalWrite”.
Este artigo tem mais de um ano
Gostei deste artigo, bom começo de ano.
É claro que já me vai fazer gastar dinheiro: comprar a placa (já agora que tipo de placa devo comprar), e o o restante…
Bom ano. Antes demais obrigado pela crítica positiva ao artigo.
Antes deste tutorial foi feito um artigo em que são dadas essas indicações (https://pplware.sapo.pt/hardware/conheca-o-mundo-fantastico-do-arduino/ ).
Mais uma vez obrigado,
Atenciosamente
Jorge Alcino
Se quiseres, podes comprar na INMOTION http://inmotion.pt/store/, temos desconto por lá. Diz-me alguma coisa.
Estou interessado em adquirir um Arduino Yun para um projecto. Como posso ter esse desconto?
Obrigado
Estou interessado num starter kit alguma forma de obter desconto?
Este artigo bem mesmo a calhar!
Estava agora a decidir que kit arduino encomendar. Por exemplo na amazon o que há mais é a marca SainSmart em vez da original Arduino e até está a um preço porreiro.
Sendo o Arduino open source posso contar que uma placa SainSmart seja 100% compatível com uma Arduino ou existe diferenças? Por exemplo, este IDE que apresentam aqui hoje irá comunicar com uma placa SainSmart?
Bom ano 😀
Sim são anbas compativeis. Eu mesmo tenho produtos a SainSmart e estou sstisfeito com os produtos.
Mais uma vez bom ano.
Atenciosamente
Jorge Alcino
Excelente!
Há algum tempo que ando para me dedicar a estas lidas e este artigo é uma excelente ajuda.
A linguagem da suporte a programação estruturada e objeto?
Por exemplo eentro do void loop() {} podemos chamar funções próprias?
Sim, dentro do loop podemos chamar funções criadas por nos, estando elas em libraries como dentro do ficheiro da programação.
Para tal, depois do loop temos que criar a nossa função do tipo: “void nome_da_funcao() { } ” e após isso vamos ao nosso loop e ficará assim:
void loop(){
nome_da_funcao();
}
Atenciosamente,
Jorge alcino,
Bom ano.
Jorge, já agora na parte onde “o LED irá acender e nunca irá apagar”, nota que para uma situação em que isso se pretenda, basta deixar a função loop() vazia e todo o resto do código na função setup().
A saída é colocada a high uma vez e basta 🙂
E já agora outra curiosidade: porquê ligar o LED à porta 13?
Em todas as placas Arduino (e compatíveis) existe sempre um LED ligado fisicamente à porta 13. A utilizar o método como o descreveste, ficam ambos ligados em paralelo… E como indicas uma resistência de 220ohm (inferior à existente em série com o LED no Arduino, que tipicamente é de 1k), o LED externo deverá acender sem problemas, mas é preciso atenção a tudo o que está ali a acontecer 🙂
Sim, em todas existem um LED já existente ligado á porta 13. Eu utilizei a porta 13, mas mencionei que era possível ligar a uma outra qualquer (digital).
Sim, tambem concordo com o facto, que se for para ficar sempre ligado basta colocar o digitalWrite no setup. E antes demais obrigado pela ajuda á publicação…
Atenciosamente, com votos de bom ano,
Jorge alcino
Sim, considera como se fosse uma espécie de C++.
Obrigado pela explicação, estou interessando em aprender essa plataforma, preciso agora encomendar uma placa.
Será que se consegue com um ou vários equipamentos deste tipo, poder construir uma prova de conceito para o meu projecto anti-spam de forma a poder apresentar às empresas interessadas? Se assim for dou uma participação de mais de 90% dos possíveis lucros que o meu projecto venha a ter. Alguém interessado?
Hmm… não, o arduino não tem e-mail
Não percebi a intenção da tua resposta. Para que eu possa ser mais explicito, a minha intenção seria saber se será possível criar um servidor de correio electrónico com ele (em forma de prova de conceito para testes).
porque não usas um raspberry ou um olinuxino lime por exemplo??
cmps
Para esse projecto não era mais fácil com um Raspberry Pi? É pouco mais caro e mais fácil de configurar um servidor e-mail. Com um Arduino não deve ser pêra doce, já que tinha de ser programado de raíz e, como seria natural, ficaria cheio de bugs.
Sim, reflectindo bem no foco para o qual estarão direcionados ambos equipamentos, acabo por perceber que o Raspberry PI seria o ideal, mas o meu problema foca-se mais na dificuldade em ter qualificações em programar. Dai ter lançado o repto e o possível convite no meu comentário inicial. Para quem ambicione resolver um problema que já perdura na internet há mais de 40 anos eu tenho essa solução. Só preciso de alguém que tenha capacidades para me poder ajudar e acima de tudo que sinta a paixão pelo combate a este flagelo de uma vez por todas.
Já configurei algumas vezes o sendmail no Fedora (há alguns anos) e, apesar de dar algum trabalho, consegue-se fazer um trabalho razoável. Relativamente ao SPAM, é possível minimizar acrescentando nas configurações as blacklist de spammers existentes no spamhaus e outros.
Uma coisa é configurar um sistema já construído, outra é criar um servidor de raiz e com as modificações exigidas por mim e além disso estar a construir um com métodos de filtragem,isso já existe “aos pontapés”.
*block list, não black list.
Eu percebi. LOL
Força Jorge, o meu arduino já está encomendado. aguardo os próximos capítulos. bom ano.
ando no 12 º ano e ja programo este micro controlador a 2 anos, é simples, fácil e intuito
Tem muitos acessorios (shields) e ja gora tem bons sites para mandar vir estas coisas como a sparkfun e a inmotion
Cumprimentos
Muito bom para iniciados 🙂
Espero ver mais topicos destes dicas/tutoriais, obrigado
Vem mesmo a talho de foice.
Coloquei para venda nos Usados PPLWare dois kits Arduinos…https://usados.pplware.sapo.pt/produto/kit-arduino-leonardo/
Excelente trabalho
Não é preciso gastar dinheiro para aprender o básico do arduino:
aqui está:
http://123d.circuits.io/
Epá!
Essa imagem deve ser dois primeiros arduinos a serem fabricados!
Tens aí uma relíquia!
Aproveito aqui também para divulgar outra ferramenta de desenvolvimento interessante: http://beagleboard.org/
Deveria ser por aqui que eu deveria iniciar a questão que fiz antes aqui https://pplware.sapo.pt/hardware/mundo-arduino-vamos-comecar-a-programar/comment-page-1/#comment-785896 acerca do meu projecto anti-spam P2T.
Cumprimentos.
Este comentário não era para ser colocado aqui. Foi engano. 😉
Parabéns pelo artigo.
Acho que o arduino até devia ter direito a um lugar nas Categorias tento em conta todo o potencial e funcionalidades que ele tem.. Assim como publicar mais projectos para ele.
Abraços
Boa tarde,
Sabem dizer-me como se programa o arduino para acender um led a determinada hora do dia?
Obrigado e Bons Projetos
Precisas de um RTC (real-time clock).
Por 2 ou 3 dólares compras um RTC breakout com comunicação via I2C.
Depois só precisas de uma biblioteca compatível com esse RTC para poderes ler a hora/dia a qualquer momento e com a periodicidade que pretenderes.
Obrigado pelas dicas Hugo.
Bom dia , preciso fazer um trabalho do curso de automaçao, mas emperrei em um ponto, e venho lhe pedir uma ajuda. Preciso ligar um cooler usando um modulo rele, dentro de 5 segundos se um led nao acender, esse cooler desliga, se acender continua ligado, se puder me ajudar com a programacao para arduino lhe agradeço.
Boa noite… Sou iniciante no Arduino, tenho um projeto de fim de curso, estou com dificuldades em enviar os dados de sensor de fluxo de água para uma base de dados. O meu Arduino é o yun e sei que tenho de fazer uma ponte com o micro linino, mas não sei como fazer podem ajudar?
Desde já dou os parabéns pois está tudo bem explicado e já m ajudaram.
Cumprimento
Nuno Pereira
Otima explicacao! Parabens!!!
Muito boa explicação!!!!
Um video sobre Introdução a plataforma Arduino https://www.youtube.com/watch?v=Xv-oT41FIRQ
Boas, se o delay = 1000 que significa 1 segundo
Como faço para ficar 2 segundos aceso e 1 apagado?
Estou a fazer uma prova de aptidão profissional e quero construir um relógio de leds com arduino…
HELPPPPPPPPPPPPPPPPPPP!
void loop() {
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13, LOW);
delay(1000);
Boas, se o delay = 1000 que significa 1 segundo
Como faço para ficar 2 segundos aceso e 1 apagado?
Estou a fazer uma prova de aptidão profissional e quero construir um relógio de leds com arduino…
HELPPPPPPPPPPPPPPPPPPP!
Olá! Sou novo nesta coisa de programação e gostaria de fazer um projeto com o arduino! Será que alguém me poderia ajudar com a programação?
OLÁ AMIGO. SOU DO BRASIL E QUERIA FAZER UM PROJETO SIMPLES COM ARDUINO DA SEGUINTE FORMA. QUANDO APERTAR UM BOTÃO NORMALMENTE ABERTO, PARA ACENDER UMA LUZ DE 12V, QUERIA QUE O ARDUINO FIZESSE UM AUTOFALANTE PEQUENO FALAR UMA MENSAGEM. NAO SEI ONDE DEVO COLOCAR O SINAL DE ENTRADA E O SINAL DE SAIDA PARA QUE AO APERTAR O BOTÃO E ACENDER A LUZINHA, O AUTOFALANTE EMITA UMA MENSAGEM. DESDE JÁ AGRADEÇO