Gadgets · Hardware

Mundo Arduino: Vamos começar a programar?

47 Comentários

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.

arduino_0000


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.

arduino_000

Detalhe da interface

ide_arduino

  • 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.

arduino_001

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”.

Autor: Pedro Pinto
Partilhar:
Também pode gostar

Comentários

47

Responder a Sauro De Col Filho Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de johnito
    johnito

    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…

    1. Avatar de Jorge Alcino
      Jorge Alcino

      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 (http://ppl.sitedev.pt/hardware/conheca-o-mundo-fantastico-do-arduino/ ).

      Mais uma vez obrigado,
      Atenciosamente
      Jorge Alcino

    2. Avatar de Pedro Pinto

      Se quiseres, podes comprar na INMOTION http://inmotion.pt/store/, temos desconto por lá. Diz-me alguma coisa.

      1. Avatar de Pedro
        Pedro

        Estou interessado em adquirir um Arduino Yun para um projecto. Como posso ter esse desconto?
        Obrigado

      2. Avatar de Renato
        Renato

        Estou interessado num starter kit alguma forma de obter desconto?

  2. Avatar de Tiago Rodrigues
    Tiago Rodrigues

    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?

    1. Avatar de Jorge Alcino
      Jorge Alcino

      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

  3. Avatar de DC
    DC

    Excelente!

    Há algum tempo que ando para me dedicar a estas lidas e este artigo é uma excelente ajuda.

  4. Avatar de Magrão
    Magrão

    A linguagem da suporte a programação estruturada e objeto?

    Por exemplo eentro do void loop() {} podemos chamar funções próprias?

    1. Avatar de Jorge Alcino
      Jorge Alcino

      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.

      1. Avatar de Hugo Cura

        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 🙂

      2. Avatar de Hugo Cura

        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 🙂

        1. Avatar de Jorge Alcino
          Jorge Alcino

          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

    2. Avatar de Hugo Cura

      Sim, considera como se fosse uma espécie de C++.

    3. Avatar de Magrão
      Magrão

      Obrigado pela explicação, estou interessando em aprender essa plataforma, preciso agora encomendar uma placa.

  5. Avatar de Redin

    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?

    1. Avatar de Nelson
      Nelson

      Hmm… não, o arduino não tem e-mail

      1. Avatar de Redin

        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).

        1. Avatar de lmx
          lmx

          porque não usas um raspberry ou um olinuxino lime por exemplo??

          cmps

    2. Avatar de pixar
      pixar

      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.

      1. Avatar de Redin

        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.

        1. Avatar de pixar
          pixar

          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.

          1. Avatar de Redin

            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”.

        2. Avatar de pixar
          pixar

          *block list, não black list.

          1. Avatar de Redin

            Eu percebi. LOL

  6. Avatar de rui_e90
    rui_e90

    Força Jorge, o meu arduino já está encomendado. aguardo os próximos capítulos. bom ano.

  7. Avatar de Daniel Almeida
    Daniel Almeida

    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

  8. Avatar de Diogo
    Diogo

    Muito bom para iniciados 🙂

    Espero ver mais topicos destes dicas/tutoriais, obrigado

  9. Avatar de Anselmo Pinheiro

    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

  10. Avatar de Sérgio Duarte
    Sérgio Duarte

    Não é preciso gastar dinheiro para aprender o básico do arduino:

    aqui está:

    http://123d.circuits.io/

  11. Avatar de Sérgio Almeida
    Sérgio Almeida

    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/

  12. Avatar de Redin

    Deveria ser por aqui que eu deveria iniciar a questão que fiz antes aqui http://ppl.sitedev.pt/hardware/mundo-arduino-vamos-comecar-a-programar/comment-page-1/#comment-785896 acerca do meu projecto anti-spam P2T.
    Cumprimentos.

    1. Avatar de Redin

      Este comentário não era para ser colocado aqui. Foi engano. 😉

  13. Avatar de Alexmv
    Alexmv

    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

  14. Avatar de Paulo Rodrigues
    Paulo Rodrigues

    Boa tarde,

    Sabem dizer-me como se programa o arduino para acender um led a determinada hora do dia?

    Obrigado e Bons Projetos

    1. Avatar de Hugo Cura

      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.

      1. Avatar de Paulo Rodrigues
        Paulo Rodrigues

        Obrigado pelas dicas Hugo.

  15. Avatar de Romulo
    Romulo

    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.

  16. Avatar de Nuno
    Nuno

    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

  17. Avatar de Rennan
    Rennan

    Otima explicacao! Parabens!!!

  18. Avatar de Francisco Junio
    Francisco Junio

    Muito boa explicação!!!!

  19. Avatar de Rogerio Alencar Filho
    Rogerio Alencar Filho

    Um video sobre Introdução a plataforma Arduino https://www.youtube.com/watch?v=Xv-oT41FIRQ

  20. Avatar de Aléxis
    Aléxis

    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!

    1. Avatar de Sauro De Col Filho
      Sauro De Col Filho

      void loop() {

      digitalWrite(13, HIGH);

      delay(2000);

      digitalWrite(13, LOW);

      delay(1000);

  21. Avatar de Aléxis
    Aléxis

    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!

  22. Avatar de Frederico
    Frederico

    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?

  23. Avatar de Oliveira do Brasil
    Oliveira do Brasil

    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