Você está na página 1de 45

Microcontrolador Arduino

Prof. Me Dimas de Abreu Luz


2° Semestre de 2023
Programação do Arduino
Essas linguagens de programação também
são chamadas de linguagens de programação
de alto
nível. A linguagem de programação utilizada no
Arduino é a linguagem C++
(com pequenas modificações), que é uma
linguagem muito tradicional e conhecida.
Características Arduino
Microcontrolador: ATmega328
◦ Tensão de operação: 5V
◦ Tensão recomendada (entrada): 7-12V
◦ Limite da tensão de entrada: 6-20V
◦ Pinos digitais: 14 (seis pinos com saída PWM)
◦ Entrada analógica: 6 pinos
Características Arduino
Microcontrolador: ATmega328
◦ Corrente contínua por pino de entrada e saída: 40 mA
◦ Corrente para o pino de 3.3 V: 50 mA
◦ Quantidade de memória FLASH: 32 KB (ATmega328)
onde 0.5 KB usado para o bootloader
◦ Quantidade de memória SRAM: 2 KB (ATmega328)
◦ Quantidade de memória EEPROM: 1 KB
(ATmega328)
◦ Velocidade de clock: 16 MHz
Alimentação do Arduino

O Arduino UNO pode ser alimentado pela


portaUSB ou por uma fonte externa DC.

◦ A recomendação é que a fonte externa


seja de 7 V a 12 V e pode ser ligada
diretamente noconector de fonte ou nos
pinos Vin e Gnd.
Características Arduino
Características Arduino
Características Arduino
Tensão Elétrica
Características
Características Condutores
Características Isolantes
Características Resistores
Características Led
Características Led
Características Led
Para o melhor funcionamento do LED devemos limitar a
corrente de entrada à 20 mA. Desta forma podemos
garantir o correto funcionamento do circuito. Para
limitar essa corrente faz-se necessário colocar um
circuito que irá limitar a corrente no Led. Esse circuito
limitador é o resistor e será calculado pelo Lei de Ohm
Características Arduino
Características Arduino
Características Arduino
Características Arduino
Características Arduino
Características Arduino
Programação do Arduino

Setup()

A função setup() é chamada quando um programa


começa a rodar. É usada para inicializar as variáveis,
os tipo dos pinos, declarar o uso de bibliotecas, entre
outros. Esta função será executada apenas uma vez
após a placa Arduino ser ligada ou reiniciada.

Exemplo

int LED = 3;

void setup(){

pinMode(LED, OUTPUT);
}
void loop(){ // ... }
Programação do Arduino

loop()

Após criar uma função setup() que declara os valores


iniciais, a função loop() faz exatamente o que seu
nome sugere, entra em looping (executa sempre o
mesmo bloco de código), permitindo ao seu programa
fazer mudanças e responder. Esta função é usada para
controlar ativamente a placa Arduino.

Exemplo

void loop(){

digitalwrite(LED, HIGH)
delay(1000)
digitalwrite(LED, LOW)
delay(1000)

}
int LED = 3; // declaração de variável

void setup(){

pinMode(LED, OUTPUT); // definição de entrada/saída

}
void loop(){ //atribuir a função led acende/apaga através
do pino digital

digitalWrite(LED, HIGH); //digital:se refere ao pino


(pin,função)
delay(1000);
digitalWrite(LED, LOW);
delay(1000);

}
Exemplo

int button = 4;

void setup(){

pinMode(button, INPUT);

}
void loop(){

}
Essa estrutura, que é usada em conjunto com um operador
de comparação, testa alguma condição imposta pelo
programador. Para testar se o valor de uma variável é
maior do que 100 por exemplo,
if (variavel > 100){
// faça algo aqui
}
O programa testa se variavel é maior do que 100. Se for, o
programa executa a ação seguinte. Caso contrário, o
programa ignora a ação dentro das chaves e segue a
rotina. Caso a ação tenha apenas uma linha, as chaves
podem ser omitidas.
Para trabalhar de maneira adequada em programação
devemos utilizar algumas estruturas de controle entre
elas?

1- while (enquanto)

2- for (para)

3- if(se)

4- if/else(se/então)
O while é uma estrutura que executa um conjunto de comandos
repetidas vezes enquanto uma determinada condição for
verdadeira. While em inglês quer dizer "enquanto". Ele segue o
seguinte formato:

While ( ) {
...
}

Vamos ao nosso programa de teste:


Na ultima aula fizemos o led piscar durante 1s. Agora vamos pedir
que o led pisque um determinado número de vezes e depois ele
vai parar. Vamos ver como seria nossa programação
// Variável para contar o número de vezes que o LED piscou
int i = 0;

// Pisca o LED três vezes


while(i < 3) {
digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do
LED, acendendo-o
delay(1000); // Espera 1000 milissegundos (um
segundo)
digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do
LED, apagando-o
delay(1000); // Espera 1000 milissegundos (um
segundo)
i = i + 1; // Aumenta o número de vezes que o LED
piscou
}

delay(5000); // Espera 5 segundos para piscar o LED de


novo
FOR

Agora que nós já aprendemos o comando while, fica muito fácil


aprender o comando for, pois ele é quase a mesma coisa. Vamos
modificar o conteúdo da função loop() como fizemos, porém usando
o for no lugar do while. Ele segue o seguinte formato:

for(inicialização; condição; finalização) {


...
}

Vamos descrever cada item separadamente:

Condição: é uma expressão verificada repetidamente, de forma


idêntica à condição entre parênteses do while. Enquanto ela for
verdadeira, os comandos entre { e } continuam sendo executados.
Inicialização: é um comando executado apenas uma vez no início
do comando for.
Finalização: é um comando executado repetidas vezes ao final de
cada execução dos comandos entre { e }.
FOR

// Variável para contar o número de vezes que o LED piscou


int i;

// Pisca o LED três vezes

for(i = 0; i < 3; i++) {


digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do LED,
acendendo-o

delay(1000); // Espera 1000 milissegundos (um segundo)

digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do LED,


apagando-o

delay(1000); // Espera 1000 milissegundos (um segundo)


}

delay(5000); // Espera 5 segundos para piscar o LED de


novo
O if é uma das estruturas mais básicas de programação em geral. If
significa "se" em inglês, e é exatamente isso que ele faz: ele verifica uma
expressão e, apenas se ela for verdadeira, executa um conjunto de
comandos. Em linguagem natural, ele executa uma lógica do tipo: "se isso
for verdadeiro, então faça aquilo"

Para ilustrar, vamos modificar o nosso programa de exemplo para que ele
faça a mesma coisa que fizemos com o while e o for acima, porém vamos
fazer isso usando um if, que segue o seguinte formato:

if(condição) {
...
}
// Variável para contar o número de vezes que o LED piscou
int i = 0;

void loop() {
digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do LED,
acendendo-o
delay(1000); // Espera 1000 milissegundos (um segundo)
digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do LED,
apagando-o
delay(1000); // Espera 1000 milissegundos (um segundo)

i++; // Incrementa o número de "piscadas"


if(i == 3) {
delay(5000); // Espera 5 segundos para piscar o LED de novo
i = 0; // Reinicia o contador de número de "piscadas"
}
}
int LED = 8; //Declara LED está no pino 8
int button = 7; // Declara button está no pino 7

void setup(){
pinMode(button, INPUT); // Declara button como entrada
pinMode(LED, OUTPUT); // Declara LED como saida
}

void loop(){

if (digitalRead(button) == HIGH){ //Verifica estado do button = 1


digitalWrite(LED, HIGH); // Manda 1 para o LED
}

if (digitalRead(button) == LOW) { //Verifica estado do button = 0


digitalWrite(LED, LOW); // Manda 0 para o LED
}
}
A estrutura if/else fornece um controle maior sobre
o código do que simplesmente o if, permitindo
múltiplos testes agrupados. Por exemplo, uma
entrada analógica poderia se testada e uma ação
executada caso o valor fosse menor do que 500.
Caso seja maior ou igual a 500, executaria a
segunda ação.

if (analog < 500){


// ação A
}
else{
// ação B
}
int LED = 8; //Declara LED está no pino 8
int button = 7; // Declara button está no pino 7

void setup(){
pinMode(button, INPUT); // Declara button como entrada
pinMode(LED, OUTPUT); // Declara LED como saida
}

void loop(){

if (digitalRead(button) == HIGH){ //Verifica estado do button = 1


digitalWrite(LED, HIGH); // Manda 1 para o LED
}
else {
digitalWrite(LED, LOW); // Manda 0 para o LED
}
}
Vamos fazer o
acionamento de
3 led
temporizados
O que aquele exercício anterior nos lembra?
Vamos inserir um novo componente nesse programa?
Qual é a função do nosso novo componente? Onde encontramos na vida
real?
Vamos aumentar a complexidade do nosso trabalho agora?
Obrigado !!!

Você também pode gostar