Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação e Comunicação com Arduino, Resumos de Programação em C

A programação do microcontrolador arduino utilizando a linguagem c++ e sua comunicação com outros dispositivos. Além disso, apresenta exemplos de projetos, como leitura de sensores, controle de atuadores e interface com outros dispositivos. Também é abordado o uso de bibliotecas e técnicas de resolução de problemas.

Tipologia: Resumos

2021

Compartilhado em 09/03/2021

D4V1DSZ
D4V1DSZ 🇧🇷

1 documento

1 / 80

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Federal Fluminense UFF
Escola de Engenharia TCE
Curso de Engenharia de Telecomunica¸c˜
oes TGT
Programa de Educa¸c˜
ao Tutorial PET
Grupo PET-Tele
Tutoriais PET-Tele
Introdu¸ao ao kit de desenvolvimento Arduino
(Vers˜ao: A2013M10D02)
Autores: Roberto Brauer Di Renna (2013)
Rodrigo Duque Ramos Brasil (2013)
Thiago Elias Bitencourt Cunha (2013)
Mathyan Motta Beppu (2010)
Erika Guimar˜aes Pereira da Fonseca (2010)
Tutor: Alexandre Santos de la Vega
Niter´oi RJ
Junho / 2013
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50

Pré-visualização parcial do texto

Baixe Programação e Comunicação com Arduino e outras Resumos em PDF para Programação em C, somente na Docsity!

Universidade Federal Fluminense – UFF

Escola de Engenharia – TCE

Curso de Engenharia de Telecomunica¸c˜oes – TGT

Programa de Educa¸c˜ao Tutorial – PET

Grupo PET-Tele

Tutoriais PET-Tele

Introdu¸c˜ao ao kit de desenvolvimento Arduino

(Vers˜ao: A2013M10D02)

Autores: Roberto Brauer Di Renna (2013)

Rodrigo Duque Ramos Brasil (2013)

Thiago Elias Bitencourt Cunha (2013)

Mathyan Motta Beppu (2010)

Erika Guimar˜aes Pereira da Fonseca (2010)

Tutor: Alexandre Santos de la Vega

Niter´oi – RJ

Junho / 2013

Sum´ario

Cap´ıtulo 1

Introdu¸c˜ao ao Arduino

O Arduino faz parte do conceito de hardware e software livre e est´a aberto para uso e contribui¸c˜ao de toda sociedade. O conceito Arduino surgiu na It´alia, em 2005, com o objetivo de criar um dispositivo que fosse utilizado em projetos/prot´otipos constru´ıdos de uma forma menos dispendiosa do que outros sistemas dispon´ıveis no mercado. Ele pode ser usado para desenvolver artefatos interativos stand-alone ou conectados ao computador, utilizando diversos aplicativos, tais como: Adobe Flash, Processing, Max/MSP, Pure Data ou SuperCollider. O Arduino foi projetado com a finalidade de ser de f´acil entendimento, de f´acil programa¸c˜ao e de f´acil aplica¸c˜ao, al´em de ser multiplataforma, podendo ser configurado em ambientes Linux, Mac OS e Windows. Al´em disso, um grande diferencial deste dispositivo ´e ser mantido por uma comunidade que trabalha na filosofia open-source, desenvolvendo e divulgando gratuitamente seus projetos. O equipamento ´e uma plataforma de computa¸c˜ao f´ısica: s˜ao sistemas digitais ligados a sen- sores e atuadores, que permitem construir sistemas que percebam a realidade e respondem com a¸c˜oes f´ısicas. Ele ´e baseado em uma placa microcontrolada, com acessos de Entrada/Sa´ıda (I/O), sobre a qual foram desenvolvidas bibliotecas com fun¸c˜oes que simplificam a sua progra- ma¸c˜ao, por meio de uma sintaxe similar `a das linguagens C e C++. O Arduino utiliza o microcontrolador Atmega. Um microcontrolador (tamb´em denominado MCU) ´e um computador em um chip, que cont´em um microprocessador, mem´oria e perif´ericos de entrada/sa´ıda. Ele pode ser embarcado no interior de algum outro dispositivo, que, neste caso, ´e o Arduino, para que possa controlar suas fun¸c˜oes ou a¸c˜oes. Em resumo, o Arduino ´e um kit de desenvolvimento, que pode ser visto como uma unidade de processamento capaz de mensurar vari´aveis do ambiente externo, transformadas em um sinal el´etrico correspondente, atrav´es de sensores ligados aos seus terminais de entrada. De posse da informa¸c˜ao, ele pode process´a-la computacionalmente. Por fim, ele pode ainda atuar no controle ou no acionamento de algum outro elemento eletro-eletrˆonico conectado ao terminal de sa´ıda. A Figura 1.1 apresenta um diagrama de blocos de uma cadeia de processamento utilizando o Arduino.

Figura 1.1: Diagrama de blocos de uma cadeia de processamento utilizando o Arduino.

Uma vez que o Arduino ´e baseado em um microcontrolador e, portanto, ´e program´avel, torna-se poss´ıvel criar diversas aplica¸c˜oes diferentes com uma certa facilidade. Al´em disso, o pr´oprio equipamento pode ser reutilizado, atrav´es de uma nova programa¸c˜ao. Por sua vez, a sua programa¸c˜ao ´e simplificada pela existˆencia de diversas fun¸c˜oes que controlam o dispositivo, com uma sintaxe similar `a de linguagens de programa¸c˜ao comumente utilizadas (C e C++). Assim sendo, em um ambiente profissional, as caracter´ısticas do Arduino fazem dele uma boa ferramenta de prototipa¸c˜ao r´apida e de projeto simplificado. Por outro lado, em um ambiente acadˆemico, ele pode ser perfeitamente utilizado como ferramenta educacional, uma vez que n˜ao requer do usu´ario conhecimentos profundos de eletrˆonica digital nem da programa¸c˜ao de dispositivos digitais espec´ıficos.

Cabos vindos de uma bateria podem ser inseridos nos pinos GN D (terra) e Vin (entrada de tens˜ao) do conector de alimenta¸c˜ao. A placa pode operar com uma alimenta¸c˜ao externa de 6 a 20 V. Entretanto, se a alimenta¸c˜ao for inferior a 7 V o pino 5 V pode fornecer menos de 5 V e a placa pode ficar inst´avel. Se a alimenta¸c˜ao for superior a 12 V o regulador de tens˜ao pode superaquecer e avariar a placa. A alimenta¸c˜ao recomendada ´e de 7 a 12 V. Os pinos de alimenta¸c˜ao s˜ao:

  • Vin: entrada de alimenta¸c˜ao para a placa Arduino quando uma fonte externa for utilizada. Vocˆe pode fornecer alimenta¸c˜ao por este pino ou, se usar o conector de alimenta¸c˜ao, acessar a alimenta¸c˜ao por este pino;
  • 5V: A fonte de alimenta¸c˜ao utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino Vin atrav´es de um regulador on-board ou ser fornecida pela porta USB;
  • 3V3: alimenta¸c˜ao de 3, 3 V fornecida pelo circuito integrado FTDI (controlador USB). A corrente m´axima ´e de 50 mA;
  • GND (ground): pino terra.

2.3 Mem´oria

O ATmega328 tem 32 KB de mem´oria flash (onde s˜ao armazenados os programas), al´em de 2 KB de SRAM (onde ficam as vari´aveis) e 1 KB of EEPROM (esta ´ultima pode ser lida e escrita atrav´es da biblioteca EEPROM e guarda os dados permanentemente, mesmo que desliguemos a placa). A mem´oria SRAM ´e apagada toda vez que desligamos o circuito.

2.4 Entrada e Sa´ıda

Cada um dos 14 pinos digitais do Duemilanove pode ser usado como entrada ou sa´ıda, usando as fun¸c˜oes de pinMode(), digitalWrite(), e digitalRead(). Eles operam com 5 V. Cada pino pode fornecer ou receber um m´aximo de 40 mA e tem um resistor pull-up interno (desconectado por padr˜ao) de 20-50 kΩ. Al´em disso, alguns pinos tˆem fun¸c˜oes especializadas:

  • Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos s˜ao conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.
  • PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma sa´ıda anal´ogica PWM de 8 bits com a fun¸c˜ao analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunica¸c˜ao SPI, que embora compat´ıvel com o hardware, n˜ao est´a inclu´ıda na linguagem do Arduino.
  • LED: 13. H´a um LED j´a montado e conectado ao pino digital 13.

O Duemilanove tem 6 entradas anal´ogicas, cada uma delas est´a ligada a um conversor anal´ogico-digital de 10 bits, ou seja, transformam a leitura anal´ogica em um valor dentre 1024 possibilidades (exemplo: de 0 a 1023). Por padr˜ao, elas medem de 0 a 5 V, embora seja poss´ıvel mudar o limite superior usando o pino AREF e um pouco de c´odigo de baixo n´ıvel. Adicionalmente alguns pinos tˆem funcionalidades especializadas:

  • I2C: 4 (SDA) e 5 (SCL). Suportam comunica¸c˜ao I2C (TWI) usando a biblioteca Wire.
  • AREF. referˆencia de tens˜ao para entradas anal´ogicas. Usados com analogReference().
  • Reset. Envia o valor LOW para o pino 1 do microcontrolador reiniciando-o.

2.5 Comunica¸c˜ao serial

A comunica¸c˜ao entre o Arduino Duemilanove com computador ou com outro Arduino ou com outros microcontroladores ´e muito simplificada. O ATmega328 permite comunica¸c˜ao serial no padr˜ao UART TTL (5 V), que est´a dispon´ıvel nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunica¸c˜ao serial atrav´es da USB e os drivers FTDI (inclu´ıdo no software do Arduino) fornecem uma porta virtual para o software no computador. O software Arduino inclui um monitor serial(Serial Monitor ) que permite que dados simples de texto sejam enviados e recebidos `a placa Arduino. Os LEDs RX e TX da placa piscam quando os dados est˜ao sendo transferidos ao computador pelo chip FTDI e h´a conex˜ao USB (mas n˜ao quando h´a comunica¸c˜ao serial pelos pinos 0 e 1). A biblioteca SoftwareSerial permite comunica¸c˜ao serial por quaisquer dos pinos digitais do Duemilanove. O ATmega328 tamb´em oferece suporte aos padr˜oes de comunica¸c˜ao I2C (TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C. Para usar a comunica¸c˜ao SPI, veja o manual do ATmega328.

2.6 Programa¸c˜ao

O ambiente de programa¸c˜ao mais indicado ´e o do software Arduino, que pode ser baixado no seguinte site: http://www.arduino.cc/en/Main/Software. Mais detalhes sobre a programa¸c˜ao do Ardu´ıno ser˜ao apresentados no Cap´ıtulo 3.

2.7 Reset Autom´atico

Algumas vers˜oes anteriores do Arduino requerem um reset f´ısico (pressionando o bot˜ao de reset na placa) antes de carregar o programa a ser compilado, denominado de sketch. O Arduino Duemilanove ´e projetado de modo a permitir que isto seja feito atrav´es do software que esteja rodando no computador conectado. Uma das linhas de controle de hardware (DTR) do FT232RL est´a conectada ao reset do ATmega328 via um capacitor de 100 μF. Quando esta linha ´e colocada em n´ıvel l´ogico baixo, o sinal cai por tempo suficiente para reiniciar o chip. O software Arduino usa esta caracter´ıstica para permitir carregar o programa simplesmente pressionando o bot˜ao “upload ” no ambiente Arduino. Isto significa que o bootloader pode ter um timeout mais curto, j´a que a ativa¸c˜ao do DTR (sinal baixo) pode ser bem coordenada com o in´ıcio do upload. Estas configura¸c˜oes tˆem outras implica¸c˜oes. Quando o Duemilanove est´a conectado a um computador rodando Mac OS X ou GNU/Linux, ele reinicia toda vez que a conex˜ao ´e feita por software (via USB). No pr´oximo meio segundo aproximadamente, o bootloader estar´a rodando no Duemilanove. Considerando que ´e programado para ignorar qualquer coisa a n˜ao ser um upload de um novo c´odigo, ele interceptar´a os primeiros bytes de dados sendo enviados para a placa depois que a conex˜ao ´e aberta. Se um sketch rodando na placa recebe configura¸c˜oes de

Cap´ıtulo 3

Programa¸c˜ao do Arduino

Nesse cap´ıtulo iremos fazer uma pequena introdu¸c˜ao sobre como s˜ao estruturados os progra- mas para o Arduino, conhecendo a linguagem usada como referˆencia e suas principais fun¸c˜oes. E por fim veremos as funcionalidades extras que o uso de bibliotecas nos proporciona.

3.1 Linguagem de referˆencia

Os programas para o Arduino s˜ao implementados tendo como referˆencia a linguagem C++. Preservando sua sintaxe cl´assica na declara¸c˜ao de vari´aveis, nos operadores, nos ponteiros, nos vetores, nas estruturas e em muitas outras caracter´ısticas da linguagem. Com isso, temos as referˆencias da linguagem. Elas podem ser divididas em trˆes partes principais: As estruturas, os valores (vari´aveis e constantes) e as fun¸c˜oes. As estruturas de referˆencias s˜ao:

  • Estruturas de controle (if, else, break, ...)
  • Sintaxe b´asica (#define, #include, ; , ...)
  • Operadores aritm´eticos e de compara¸c˜ao (+, -, =, ==, !=, ...)
  • Operadores booleanos (&&, ||, !)
  • Acesso a ponteiros (*, &)
  • Operadores compostos (++, –, +=, ...)
  • Operadores de bits (|, ˆ, , ...)

Os valores de referˆencias s˜ao:

  • Tipos de dados(byte, array, int , char , ...)
  • Convers˜oes(char(), byte(), int(), ...)
  • Vari´avel de escopo e de qualifica¸c˜ao (variable scope, static, volatile, ...)
  • Utilit´arios (sizeof(), diz o tamanho da vari´avel em bytes)

E bom citar que o´ software que vem no Arduino j´a provˆe v´arias fun¸c˜oes e constantes para facilitar a programa¸c˜ao, tais como:

  • setup()
  • loop()
  • Constantes (HIGH | LOW , INPUT | OUTPUT , ...)
  • Bibliotecas (Serial, Servo, Tone, etc.)

3.2 Fun¸c˜oes

As fun¸c˜oes s˜ao referˆencias essenciais para o desenvolvimento de um projeto usando o Ar- duino, principalmente para os iniciantes no assunto. Essas fun¸c˜oes j´a implementadas e dispon´ı- veis em bibliotecas direcionam e exemplificam as funcionalidades b´asicas do microcontrolador. Temos como fun¸c˜oes b´asicas e de referˆencias as seguintes fun¸c˜oes:

  • Digital I/O

pinMode() digitalWrite() digitalRead()

  • Anal´ogico I/O

analogReference() analogRead() analogWrite() - PWM

  • Avan¸cado I/O

tone() noTone() shiftOut() pulseIn()

  • Tempo

millis() micros() delay() delayMicroseconds()

  • Matem´atica

min() max() abs() constrain() map() pow() sqrt()

  • LiquidCrystal - para controlar telas de cristal l´ıquido (LCDs).
  • Servo - para controlar servomotores.
  • SPI - para se comunicar com dispositivos que utilizam a Serial Peripheral Interface (SPI).
  • SoftwareSerial - para a comunica¸c˜ao serial em qualquer um dos pinos digitais.
  • Stepper - para controlar motores de passo.
  • Wire (Two Wire Interface – TWI/I2C) - para enviar e receber dados atrav´es de uma rede de dispositivos ou sensores.

Temos como referˆencia tamb´em, o uso de bibliotecas mais espec´ıficas. O que ´e de extrema importˆancia quando se faz o uso do arduino com um enfoque em uma determinada ´area. Como por exemplo:

Comunica¸c˜ao (redes e protocolos)

  • Messenger - para o processamento de mensagens de texto a partir do computador.
  • NewSoftSerial - uma vers˜ao melhorada da biblioteca SoftwareSerial.
  • OneWire -dDispositivos de controle que usam o protocolo OneWire.
  • PS2Keyboard -ler caracteres de um PS2 teclado.
  • Simple Message System - enviar mensagens entre Arduino e o computador.
  • SSerial2Mobile - enviar mensagens de texto ou de e-mail, usando um telefone celular.
  • Webduino - biblioteca que cria um servidor Web (para uso com o Arduino Ethernet Shield ).
  • X10 - envio de sinais X10 nas linhas de energia AC.
  • XBee - para se comunicar via protocolo XBee.
  • SerialControl - controle remoto atrav´es de uma conex˜ao serial.

Sensoriamento

  • Capacitive Sensing - Transformar dois ou mais pinos em sensores capacitivos.
  • Debounce - Leitura de ru´ıdos na entrada digital.

Gera¸c˜ao de Freq¨uˆencia e de ´Audio

  • Tone - Gerar ondas quadradas de freq¨uˆencia de ´audio em qualquer pino do microcontro- lador.

Temporiza¸c˜ao

  • DateTime - Uma biblioteca para se manter informado da data e hora atuais do software.
  • Metro - Ajuda ao programador a acionar o tempo em intervalos regulares.
  • MsTimer2 - Utiliza o temporizador de 2 de interrup¸c˜ao para desencadear uma a¸c˜ao a cada N ms.

Utilidades

  • TextString (String) - Manipular strings
  • PString - uma classe leve para imprimir em buffers.
  • Streaming - Um m´etodo para simplificar as declara¸c˜oes de impress˜ao.

4.2 Arduino para GNU/Linux

Para a instala¸c˜ao da IDE e suas bibliotecas no sistema operacional Linux, assim como feito para o Windows, podemos baixar o arquivo compactado atrav´es do seguinte site: http://www.arduino.cc/en/Main/Software. Apenas vale resaltar que neste sistema operacional temos um tratamento diferente com rela¸c˜ao a manipula¸c˜ao de pastas e diret´orios, agora o arquivo baixado ´e “tar.gz”. Al´em desta forma de instala¸c˜ao, temos uma outra mais objetiva para executar o mesmo procedimento, esta ´ultima usando apenas o terminal. Veremos um passo a passo deste proce- dimento usando o Linux Ubuntu. Links usados:

  • http://www.arduino.cc/playground/Linux/Ubuntu
  • https://launchpad.net/ arduino-ubuntu-team/+archive/ppa
  • https://launchpad.net/+help/soyuz/ppa-sources-list.html

Passo a Passo da instala¸c˜ao no Ubuntu

  • O primeiro passo ´e com o terminal aberto digitar o comando: sudo add-apt-repository ppa:arduino-ubuntu-team/ppa
  • Com o t´ermino do primeiro passo executamos o segundo comando digitando: sudo aptitude update
  • E por fim executamos o ´ultimo comando digitando: sudo aptitude install arduino
  • Ap´os estes trˆes passos a IDE est´a instalada e pode ser acessada pelo menu aplicati- vos/desenvolvimento/arduino

Para obter informa¸c˜oes para outras distribui¸c˜oes de Linux, pesquisar no seguinte website: http://www.arduino.cc/en/Main/Software. Para Mac OS, pesquisar em http://www.arduino.cc/en/Guide/MacOSX.

Cap´ıtulo 5

Exemplos de projetos

Neste cap´ıtulo iremos ver alguns exemplos de aplica¸c˜oes simples com o Arduino. Com uma pequena base sobre a linguagem de programa¸c˜ao C para Arduino, podemos come¸car a fazer e explicar exemplos, mesmo para quem n˜ao possua uma grande infraestrutura possa realiz´a-lo.

5.1 Exemplo 1 - Acionamento de LED interno

Come¸caremos com o exemplo Blink, que j´a vem no aplicativo. Para encontrar o exemplo clique em File → Examples → Digital → Blink. O programa tem como objetivo acender e apagar o LED de um em um segundo. Para compilar este exemplo n˜ao ´e necess´ario de nenhuma outra infraestrutura que n˜ao o pr´oprio Arduino. Primeiramente, vamos criar uma vari´avel chamada ledPin que armazenar´a o n´umero da porta onde o LED est´a conectado (vari´avel do tipo inteiro):

int ledPin = 13;

Assim quando nos referirmos a vari´avel ledPin estaremos nos referindoa sa´ıda 13. O seguinte passo ´e classificar o ledPin como pino de Sa´ıda, isto ´e feito da seguinte maneira:

void setup() { pinMode(ledPin, OUTPUT); }

A fun¸c˜ao pinMode() tem como primeiro parˆametro o pino e como segundo parˆametro se ele ´e pino de entrada ou sa´ıda. Agora come¸caremos a escrever o processamento. O programa rodar´a em um loop, pois n˜ao h´a ocorrˆencias ou interferˆencias que mudem o estado. Dentro do loop ter´a uma fun¸c˜ao que far´a o LED ficar aceso por 1 segundo e depois ficar apagado por mais um segundo, ap´os isso volta ao loop. Escreva da seguinte maneira:

void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }

5.2 Exemplo 2 - Acionamento de LEDs externos

Neste exemplo, exploraremos melhor as sa´ıdas digitais. Neste exemplo ser˜ao necess´arios 10 LEDs para sua execu¸c˜ao. Os LEDs ascender˜ao em sequˆencia e ficar˜ao acesos por 1 segundo, at´e que o ´ultimo apagar´a e todos os outros em sequˆencia apagar˜ao. Para a confec¸c˜ao do projeto ligue o positivo dos LEDs nos pinos digitais de 2 ´e 11 e a outra ponta em um protoboard, no lado negativo dos LEDs ligue resistores de 150 Ω, em s´erie, e a outra ponta de todos os resistores no terra do Arduino, GND na placa. Assim como na Figura 5.2.

Figura 5.2: Circuito Exemplo 2.

As primeiras linhas de comando s˜ao para declara¸c˜ao de vari´aveis, iremos precisar de uma vari´avel constante e inteira de valor 10, em nosso caso chamamos de LEDCount. Outra vari´avel necess´aria ´e um vetor com 10 posi¸c˜oes, enumerados de 2 ´e 11, que s˜ao os n´umeros dos pinos de sa´ıda digital que ser˜ao utilizados que tamb´em possuem valores inteiros, chamamos o vetor de LEDPin. A seguir vem a declara¸c˜ao a ser feita:

const int LEDCount = 10;

int LEDPins[] = { 2, 3, 4, 5, 6, 7,8,9,10,11 };

Agora com as vari´aveis declaradas vamos definir o vetor LEDPins como pinos de sa´ıda , para isso utilizaremos um loop, da seguinte maneira:

void setup() { for (int thisLED = 0; thisLED < LEDCount; thisLED++) { pinMode(LEDPins[thisLED], OUTPUT); } }

Na primeira posi¸c˜ao do for declaramos uma vari´avel que inicia em 0. Na segunda posi¸c˜ao damos a condi¸c˜ao para o for, e na terceira a cada vez que ´e verificada a condi¸c˜ao do for, com execu¸c˜ao da primeira, ´e acrescido 1 ao valor de thisLED, que ´e a vari´avel que utilizaremos

para chamar as determinadas posi¸c˜oes do vetor LEDPins. A fun¸c˜ao pinMode(), como vista no exemplo anterior, est´a declarando que o vetor LEDPins ´e um vetor de sa´ıda de dados. Agora ser´a iniciado um loop, que far´a com que o programa sempre rode, dentro dele ter´a um for que acender´a todos os LEDs sequencialmente, com um intervalo de 1 segundo (1000 ms) entre cada LED. O corpo do programa fica da seguinte maneira:

void loop() { for (int thisLED = 0; thisLED < LEDCount; thisLED++) { digitalWrite(LEDPins[thisLED], HIGH); delay(1000); }

delay(1000);

Perceba que o for ´e da mesma maneira que o ´ultimo, pois a id´eia ´e sempre se referir `as posi¸c˜oes do vetor, a diferen¸ca aqui ´e que para cada posi¸c˜ao estamos acendendo um LED, usando a fun¸c˜ao digitalWrite(). A fun¸c˜ao delay() foi utilizada para que seja mais f´acil de visualizar que cada LED acende de cada vez, e que ap´os todos os LEDs acenderem, todos ficam acesos por mais um segundo. Agora ser´a feito o mesmo, mas para apagar os LEDs, como mostra a seguir:

for (int thisLED = 9; thisLED >= 0; thisLED--) { digitalWrite(LEDPins[thisLED], LOW); delay(1000); } delay(1000); }

A vari´avel thisLED, utilizada apenas no for, come¸ca com valor 9 e ´e decrescida de 1 at´e que chegue em 0, logo os LEDs apagar´a o do ´ultimo a acender para o primeiro, e permanecer´a apagado por 1 segundo. Este foi o segundo exemplo, perceba que ´e poss´ıvel modific´a-lo com o que j´a foi aprendido, fazendo com que ele apague na mesma ordem que acende, ou fazendo qualquer outra mudan¸ca desejada.