Iniciação à Programação com Arduino
Iniciação à Programação com Arduino
P á g e 1 | 22
CPES
ARDUINO
1. Présentation ARDUINO
ARDUINO é uma plataforma de hardware e software para o desenvolvimento de aplicações embarcadas.
Do lado do hardware, ela é composta por uma placa eletrônica baseada em um microcontrolador (ATMEL AVR)
comportando um certo número de entradas e saídas (as portas) permitindo a conexão de sensores, ou
de atuadores.
O software de programação dos módulos ARDUINO é um aplicativo Java, livre e multiplataforma, servindo
d'editor de código e de compilador, e que pode transferir o programa através da ligação USB. A linguagem de
a programação utilizada é uma mistura de C e C++, restrita e adaptada às possibilidades do cartão.
➢ Material de baixo custo: As placas ARDUINO são relativamente baratas em comparação com as outras
plataformas de desenvolvimento. A versão mais barata do módulo ARDUINO pode ser montada na
principal, e até mesmo os cartões ARDUINO pré-montados custam menos de 25 €.
➢ Material: Os esquemas dos módulos são publicados sob uma licença Creative Commons, e é possível de
realizar nossas próprias versões das placas ARDUINO, completando e melhorando-as.
➢ Software gratuito: O software ARDUINO e a linguagem ARDUINO estão disponíveis para serem complementados por
programadores experientes. A linguagem também pode ser estendida com a ajuda de bibliotecas C++.
➢ Software multi-plataforma: O software ARDUINO, escrito em Java, funciona sob os sistemas operacionais
Windows, Macintosh e Linux.
P á g i n a 2 | 22
CPES
ARDUINO
Os diferentes elementos
As principais características
Microcontrolador ATMEGA 328
Tensão de alimentação interna 5V
Tensão de alimentação (recomendada) 7 a 12V
Tension d'alimentation (limites) 6 a 20 V
Entradas/Saídas digitais 14 dos quais 6 saídas PWM (configuráveis)
Entradas analógicas 6
Corrente máxima por pinos E/S 40 mA (200 mA acumulado para todos os pinos)
Memória do programa Flash 32 Ko dos quais 0,5 Ko são usados pelo bootloader
Memória SRAM (memória volátil) 2 KB
Memória EEPROM (memória não volátil) 1 KB
Fréquence horloge 16 MHz
Dimensões 68,6mm x 53,3mm
P á g i n a 3 | 22
CPES
ARDUINO
A alimentação
A placa ARDUINO UNO pode ser alimentada pelo cabo USB, por um bloco de energia externo conectado através de uma
conector "jack" de 2,1mm ou por um bloco de pilhas cujo ligação é feita através dos "GND"
et « Vin » do conector de alimentação. A alimentação externa deve apresentar uma tensão entre 7 a 12V.
O cartão gera, por meio de reguladores integrados, duas tensões estabilizadas: 5 V e 3,3 V. Essas duas
tensões permitem a alimentação dos componentes eletrônicos da placa ARDUINO. Estando disponíveis em
conectores colocados ao redor das placas, também permitem a alimentação dos módulos Shields.
As entradas e saídas
A placa "ARDUINO UNO" possui 14 E/S digitais e 6 entradas analógicas.
Elas funcionam em lógica TTL (0V-5V); cada uma podendo fornecer (fonte) ou receber uma corrente máxima de
40 mA e dispõe, se necessário, de uma resistência interna de 'pull-up'.
Certas brochas podem ter várias funções diferentes escolhidas por programação descritas abaixo:
ARDUINO
As entradas A4 e A5 podem também ser usadas, respectivamente, como a linha de dados SDA e a linha
d'horloge SCL da interface série I2C.
As memórias
O microcontrolador ATmega 328 possui 32 ko de memória Flash permitindo armazenar o programa a
executar.
Ele também contém 2ko de memória RAM (SRAM). Essa memória é geralmente usada para armazenar os
resultados temporários durante cálculos. Pode ser lido e escrito a qualquer momento pelo microcontrolador, mas seu conteúdo
está perdido assim que a não é mais alimentada.
L’ATmega 328 dispose également1ko mémoire EEPROMpour permettre au programme de stocker des données
persistentes. O conteúdo desta memória é acessível por meio das funções da biblioteca "EEPROM".
O relógio
O relógio é controlado por quartzo e funciona na frequência de 16 MHz.
A comunicação
O cartão "ARDUINO UNO" tem muitas possibilidades de comunicação com o exterior. O Atmega328
possui uma interface de comunicação serial acessível, graças aos pinos digitais 0 (Rx) e 1 (Tx).
Por outro lado, ela suporta o barramento I2C acessível, graças aos pinos analógicos 4 (SDA) e 5 (SCL) e à conexão serial.
SPI síncrono graças às broches digitais 10 (SS), 11 (MOSI), 12 (MISO) e 13 (SCX).
O reset
Na energização, um reset automático permite que o programa contido na memória do microcontrolador de
iniciar automaticamente assim que o cartão ARDUINO estiver alimentado.
O cartão "Arduino UNO" também está equipado com um botão de reset manual. Um pressionar deste botão
permite reiniciar a execução de um programa se necessário, seja porque ele "travou" ou simplesmente
porque se deseja que ele recomece do seu início.
ARDUINO
A interface de programação
A interface de programação do software ARDUINO é a seguinte :
A "Barra de Botões" que dá acesso direto às funções essenciais do software. Os diferentes botões
são :
P á g i n a 6 | 22
CPES
ARDUINO
A estrutura de um programa
Un programme destiné à une carte ARDUINO est constitué de3 parties:
void setup()
{
pinMode(ledPin, OUTPUT); // Define the pin number 13 as an output
}
loop vazio()
{
digitalWrite(ledPin,ALTO) ; // Define a saída ledPin como NL1 (diodo aceso)
atraso(3000) ; // Aguardar 3 s
digitalWrite(ledPin,BAIXO) ; // Define a saída ledPin como NL0 (diodo apagado)
atraso(1000) ; // Esperar 1 s
}
Funçãosetup() Funçãoloop()
que contém as instruções de inicialização que contém as instruções do programa
A primeira parte permite definir as constantes e as variáveis ao declarar seu tipo. Ela também permite
a inclusão das bibliotecas utilizadas no programa por meio de #include.
A função setup() contém as instruções de inicialização ou configuração dos recursos do cartão como
por exemplo, a configuração de entrada ou saída dos pinos de E/S digitais, a definição da velocidade de
comunicação da interface série, etc.. Esta função é executada apenas uma vez logo após o lançamento do
programa.
A função loop() contém as instruções do programa propriamente dito. Esta função será repetida
indefinidamente enquanto o cartão ARDUINO permanecer energizado.
P á g i n a 7 | 22
CPES
ARDUINO
Os comentários
Para colocar comentários em uma única linha ou no final da linha, deve-se usar a seguinte sintaxe:
// Esta linha é um comentário de UMA SÓ linha
Nome Description
booleano Donnée logique (true ou false) sur 8 bits
byte Inteiro sem sinal de 8 bits
int Número inteiro assinado de 16 bits
Nome Description
verdadeiro Dado binário igual a 1 ou dado numérico diferente de 0
falso Dado binário ou numérico igual a 0
ALTO Génération d’un niveau de tension haut sur une des sorties numériques
BAIXO Geração de um nível de tensão baixo em uma das saídas digitais
ENTRADA Configuração de um pino digital como entrada
SAÍDA Configuração de um pino digital como saída
P á g e 8 | 22
CPES
ARDUINO
Os operadores
3.6.1. Os operadores aritméticos
Símbolo Description Exemplo
+ Adição c=a+b;
- Subtração c=a-b;
* Multiplicação c=a*b;
/ Divisão c=a/b;
% Módulo (resto da divisão inteira) c=a%b;
3.6.2. As atribuições
Símbolo Description Exemplo
= Afeto ordinário a=b;
+= Adicionar de a=a+b;
-= Subtrair de a -= b ; → a = a - b ;
*= Multiplicar por a *= b ; → a = a * b ;
/= Dividir por a /= b ; → a = a / b ;
%= Resto da divisão inteira por a %= b ; → a = a % b ;
&= ET com a &= b ; →a = a & b ;
|= OU com a |= b ; → a = a | b ;
-- Soustraire de 1 (décrémentation) a -- ; →a = a - 1 ;
++ Adicionando 1 (incrementação) a ++ ; →a = a + 1 ;
ARDUINO
As bibliotecas de funções
Uma biblioteca é um conjunto de funções utilitárias disponibilizadas aos usuários do ambiente
Arduino. As funções estão agrupadas de acordo com sua pertença a um mesmo domínio conceitual
(matemática, gráfico, classificações, etc).
A IDE ARDUINO contém por padrão várias bibliotecas externas. Para importá-las para o seu programa,
você deve usar o menu a seguir:
A instrução seguinte será então adicionada ao início do seu programa: #include <la_bibliothèque.h>
Exemplo :
Certas funções já estão presentes no IDE ARDUINO, as principais estão explicadas abaixo.
Esta função gera uma pausa cuja duração é igual a tempo × 1 ms.
La variable tempo doit être de type unsigned long ce qui peut autoriser des temporisations qui peuvent être très
longas.
atraso(1000) ; // Pausa de 1 s
A função « delayMicroseconds »
atrasarMicrosegundos(tempo) ;
Esta função gera uma pausa cuja duração é igual a tempo × 1 μs.
P á g e 10 | 22
CPES
ARDUINO
A função «millis() »
Valeur = milissegundos() ;
Esta função retorna o número de milissegundos desde o início do programa pela placa ARDUINO.
A função "micros()"
Valeur = micros() ;
Esta função retorna o número de microssegundos desde o início do programa pela placa ARDUINO.
Esta função tem uma resolução de 4µs (com um relógio de 16MHz), portanto, o valor retornado é um
múltiplo de 4.
Esta função permite configurar o sentido de funcionamento, entrada ou saída, do pino selecionado.
A função « digitalWrite »
digitalWrite(Número broche, Nível lógico) ;
Esta função permite impor um nível lógico alto ou baixo na saída digital selecionada.
A função "digitalRead"
Valeur = leituraDigital(Número de broche)
Esta função permite ler o nível lógico na entrada numérica selecionada. Esta função não retorna
que duas valor HIGH ou LOW.
P a g e 11 | 22
CPES
ARDUINO
Trata-se de sinais lógicos retangulares de frequência igual a 490 Hz e com ciclo de trabalho programável.
A função "analogWrite"
analogWrite(Número de saída, Relatório cíclico) ;
Esta função permite gerar, na saída selecionada, um sinal PWM com o ciclo de trabalho desejado. O
a variável « Rapport cyclique » deve ser do tipo int, ou seja, pode variar entre 0 e 255 para um
relatório cíclico, para o sinal gerado, compreendido entre 0 e 100%.
O sinal PWM é gerado a partir do momento da execução da função "analogWrite" e até que um
nova instrução « analogWrite » ou uma instrução « digitalRead » ou « digitalWrite » seja executada na mesma
broche.
A função « analogReference »
analogReference(Type) ;
➢ DEFAUT: A tensão de referência é igual à tensão de alimentação da placa Arduino (5V para a placa
Arduino Uno
➢ A tensão de referência é igual a 1,1 V para a placa Arduino Uno;
➢ A tensão de referência é igual à tensão aplicada na entrada externa AREF da placa
Arduino.
A tensão aplicada a uma entrada analógica nunca deve ser superior à tensão de alimentação
do menu.
P á g i n a 12 | 22
CPES
ARDUINO
A função "analogRead"
Valeur = leituraAnalógica(Número de entrada) ;
Esta função permite ler o resultado da conversão analógica digital da tensão presente em
l’entrée analogique sélectionnée.
Os dados retornados, que variam entre 0 e 1023, devem ser do tipo int.
Esta função permite gerar, na saída selecionada, um sinal quadrado (duty cycle de 50%) de
frequência programável e durante o tempo desejado.
A dado "Frequência" deve ser fornecido em Hz e o dado "Duração" deve ser fixado em ms. Se essa duração não for
não especificado, o sinal é gerado até que a função "notone" seja executada.
A função « notone »
nenhum(Número de saída) ;
A função "pulseIn"
durée = pulseIn(Numéro entrée, Type, Delai max) ;
Esta função permite medir a duração de um impulso na entrada selecionada. O resultado retornado é do
tipo unsigned long.
O valor do dado "Tipo" pode ser ALTO no caso de um pulso no NL1 ou BAIXO de um pulso no
NL0.
A variável « Delai max » permite definir o prazo de espera do impulso. Quando esse prazo é ultrapassado e
que nenhuma impulsão ocorreu, a função retorna um valor nulo. Este dado é do tipo unsigned.
long etest exprimé en μs. Si cette donnée n’est pas précisée, la valeur par défaut sera de 1 s.
O resultado fornecido é considerado correto apenas para impulsos com duração entre 10 μs e
3 min.
P á g i n a 13 | 22
CPES
ARDUINO
O valor retornado é do tipo byte, enquanto a variável "Dado" pode ser de qualquer tipo (então
qualquer tamanho).
A função « highByte »
resultat = byte alto(Dado) ;
O valor retornado é do tipo byte, enquanto a variável "Dada" pode ser de qualquer tipo.
A função "bitRead"
resultat = bitRead(Donnée, n) ;
A função "bitWrite"
bitWrite(Donnée, n, Niveau) ;
Esta função permite impor um nível lógico no enésimo bit da variável "Dado".
A função « bitSet »
bitSet(Donnée, n) ;
A função « bitClear »
bitClear(Dado, n);
P á g i n a 14 | 22
CPES
ARDUINO
A porta série assíncrona dos microcontroladores que equipam as placas ARDUINO possui um buffer.
capaz de memorizar até 128 caracteres recebidos.
A função "[Link]"
[Link](Vitesse) ;
Esta função que deve ser chamada pelo menos uma vez, geralmente na função setup(), permite definir
a velocidade utilizada pela ligação série.
O valor da variável "Velocidade" deve ser uma das velocidades definidas pela norma RS232.
A função « [Link] »
[Link]() ;
Esta função permite desativar a conexão serial assíncrona e, portanto, liberar os pinos digitais 0 e 1.
A função "[Link]"
[Link]() ;
Esta função permite conhecer o número de caracteres recebidos e, portanto, contidos no buffer de memória em
atenta de leitura pelo programa. A variável "número" é do tipo int.
A função « [Link] »
[Link]ível() ;
Esta função permite ler o primeiro caractere disponível no buffer de recepção. A variável
"caractère" é do tipo int. O valor retornado é -1 se nenhum caractere foi recebido (buffer vazio).
A função « [Link] »
[Link]() ;
A função « [Link] »
[Link](Dado) ;
Essa função permite emitir um ou mais dados na conexão serial sob a forma binária bruta. Se a
a dados é do tipo string, os caracteres são transmitidos, no formato ASCII, um após o outro.
P á g i n a 15 | 22
CPES
ARDUINO
A função « [Link] »
[Link](Dado, formato) ;
Esta função permite emitir um ou mais dados na ligação série especificando a codificação utilizada.
Se a variável "Formato" não for especificada, um dado numérico será considerado como decimal, uma cadeia
de caracteres sera transmitida tal como está e um dado de ponto flutuante será transmitido apenas com dois
décimos.
Senão, a variável "Formato" permite especificar a codificação ou a base de numeração para os dados numéricos.
Ela pode assumir um dos seguintes valores: BIN (binário), OCT (octal), HEX (hexadecimal), DEC (decimal) ou BYTE
(codificação ASCII). Para os dados de ponto flutuante, a variável "Formato" pode assumir um valor numérico
compreende entre 0 e 7 correspondendo ao número de casas decimais a serem transmitidas.
P á g e 16 | 22
CPES
ARDUINO
Editar o programa a partir do ARDUINO Verifique e compile o código usando o botão "Verificar".
ARDUINO
[Link]ÍCIOS
4.1 EXERCÍCIO N°1: FAZER UMA LED PISCAR
Este programa deve permitir fazer piscar um LED conectado ao pino digital nº 10. Ele deve permanecer
acesa por 2 s e apagada por 1 s.
void setup()
{
pinMode(ledPin, OUTPUT) ; // Define o pino nº 10 como uma saída
}
void loop()
{
digitalWrite(ledPin, ALTO); // Define o pino ledPin como NL1 (diodo aceso)
atraso(3000); // Esperar 3 s
digitalWrite(ledPin, BAIXO); // Define a saída ledPin como NL0 (diodo apagado)
atraso(1000); // Aguardar 1 s
}
Funçãoconfigurar() Funçãoloop()
que contém as instruções de inicialização que contém as instruções do programa
Compile o programa.
Agora vamos simular este programa no PROTEUS, que é um software de CAD eletrônico que permite
desenhar e simular várias montagens.
P á g e 18 | 22
CPES
ARDUINO
Realize seu esquema. Você precisa de um LED (LED-VERMELHO) e de um cartão ARDUINO UNO.
Uma vez que o esquema estiver concluído, você vai transferir o arquivo .hex proveniente da compilação da
carte ARDUINO. Atenção, você deve primeiro definir os delays em segundos, porque por enquanto, eles
sont enms
Agora, com o funcionamento real. Para isso, você precisa de um cartão Arduino, de uma BREADBORD,
um LED, um cabo de upload PC-CARTÃO e fios de conexão
Defina os atrasos em ms. Depois compile o programa. Faça o upload para a placa ARDUINO.
Dorénavant pour les exercices suivants, vous suivrez cette procédure. Simulation sous PROTEUS, puis
cabeamento do cartão ARDUINO uma vez que a simulação foi validada
Página19|22
CPES
ARDUINO
Realize a fiação usando um cartão ARDUINO, um LED e um BP. Então, faça o upload para o cartão.
ARDUINO seuprograma, depois testarofuncionamento
Realizar a fiação usando uma placa ARDUINO, um motor de corrente contínua, uma resistência
de cerca de 500Ω e uma de 10 kΩ, um diodo de roda livre 1N4001, um transistor 2N2222A e um
BP. Publique na placa ARDUINO seu programa, depois teste o funcionamento
P á g i n a 20 | 22
CPES
ARDUINO
Realizar a fiação utilizando um cartão ARDUINO, um motor de corrente contínua, uma resistência de
10 kΩ, um ponte em H (L293D) e um BP. Pode carregar o seu programa na placa ARDUINO,
pode testar o funcionamento
Realizar a ligação usando uma placa ARDUINO, um resistor de 10 kΩ e uma LDR. Então
Carregue o seu programa no cartão ARDUINO, depois teste o funcionamento
P á g i n a 21 | 22
CPES
ARDUINO
5.TÁBUA DE PÃO
A Breadboard não é uma tábua de pão, como o nome indica, mas uma 'placa'
à essai"ouplaquette de prototipagem rápida para a eletrônica. Não há necessidade de
souder os componentes na placa de ensaio, pois é destinado a testar rapidamente os
circuitos eletrônicos.
Assim, a plaqueta é composta por uma multidão de buracos dos quais alguns estão interligados.
eletricamente entre si. Existem diferentes formatos e diferentes tamanhos de Breadboard.
SIMULAÇÃO DE PLACA DE PROTOTIPAGEM
SERVIDOR A ACENDER UMA LÂMPADA
Aqui está um dos formatos de Breadboard mais utilizados:
Essas placas de ensaio são realmente simples de usar. Em uma Breadboard padrão, as duas linhas de cima e do
as bases estão ligadas eletricamente. Da mesma forma, cada coluna no centro é composta por pontos ligados eletricamente.
A criação de um circuito eletrônico é assim grandemente facilitada. Basta conectar alguns componentes nos
furos e usar alguns fios elétricos. Um número muito grande de componentes eletrônicos pode ser encaixado
diretamente e simplesmente em uma Breadboard. E aqui estão os fios que podem ser usados para conectar os componentes entre
as colunas :
O primeiro tipo de fio é prático para visualizar bem o resultado final do circuito eletrônico. O segundo tipo de
o fio é mais fácil de manusear, mas rapidamente nos perdemos quando o número de fios utilizados aumenta. Além disso, os fios
os flexíveis tendem a desviar para os lados e às vezes dão conexões ruins quando os conectores da
placa de teste foi utilizada várias vezes. Portanto, recomendamos usar fios rígidos e sempre ter uma
pequeno alicate plano para removê-los mais facilmente.
P á g i n a 22 | 22