Você está na página 1de 37

ARDUINO BÁSICO

Professor: Thiago Felipe Soares Gonçalves


E-mail: thiagofelipe.sg@gmail.com
ASSUNTOS
• Recursos Arduino Nano; • Operadores Aritméticos;
• IDE Arduino; • Operadores de Comparação;
• Estrutura; • Operadores Booleanos;
• Funções Digitais; • Operadores Compostos;
• Funções Analógicas; • Estruturas de Controle;
• Comunicação Serial;
• Tipos de Variáveis;
PINOUT ARDUINO NANO
Alimentação:
• Tensão de Entrada: 7 – 12V
• Tensão de Saída: 5V
• Corrente de Saída: 40mA

Pinos:
• 14 pinos Digitais
• 6 pinos PWM
• 8 pinos Analógicos
• RX e TX

Memoria:
• 32KB de flash
• 1KB de EEPROM

Outros:
• Clock: 16MHz
• Conversor AD: 10 bits
IDE ARDUINO
IDE ARDUINO
IDE ARDUINO
IDE ARDUINO
ESTRUTURA DE PROGRAMA
void setup() {
//Rotina de configuração, executada somente uma única vez.
}
void loop() {
//Rotina com o programa, executada indefinidamente.
}
FUNÇÕES DIGITAIS
pinMode(pino, valor) – Define se o pino digital será uma entrada ou saída.
INPUT: Entrada Digital
OUTPUT: Saída Digital
digitalWrite(pino, valor) – Define o nível logico do pino.
HIGH: Nível logico Alto – 5V
LOW: Nível logico Baixo – 0V
digitalRead(pino) – Lê o nível logico do pino e retorna 0 ou 1;
1 – HIGH
0 – LOW
EXEMPLO BLINK
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
}
EXEMPLO LED E BOTÃO
int val = 0;
void setup(){
pinMode(3, OUTPUT);
pinMode(13, INPUT);
}
void loop(){
val = digitalRead(13);
digitalWrite(3, val);
}
FUNÇÕES ANALÓGICAS
analogRead(pino) – Converte a tensão lida no pino analógico para um valor
entre 0 e 1023, onde o valor de 1023 corresponde a 5V.
𝑉𝑖𝑛 × 1024
𝐴𝐷 =
5
A tensão mínima 𝑉𝑖𝑛 lida pelo pino analógico é de 4,88mV equivalente a 1 AD.
analogWrite(pino, Valor) – Aciona o PWM com valores de 0 a 255 referentes
ao ciclo de trabalho onde o valor de 255 corresponde a 100% do PWM.
Valor – 0 a 255
PWM – MODULAÇÃO DE LARGURA DE PULSO

𝑇𝑜𝑛
𝑃𝑒𝑟í𝑜𝑑𝑜 = 𝑇𝑜𝑛 + 𝑇𝑜𝑓𝑓 𝑑𝑦𝑡𝑒 𝑐𝑦𝑐𝑙𝑒 =
𝑃𝑒𝑟𝑖𝑜𝑑𝑜
PWM – MODULAÇÃO DE LARGURA DE PULSO

25
𝑑𝑦𝑡𝑒 𝑐𝑦𝑐𝑙𝑒 = = 9,8%
255

127
𝑑𝑦𝑡𝑒 𝑐𝑦𝑐𝑙𝑒 = = 49,8%
255

230
𝑑𝑦𝑡𝑒 𝑐𝑦𝑐𝑙𝑒 = = 90%
255
PWM – MODULAÇÃO DE LARGURA DE PULSO

50
𝑑𝑦𝑡𝑒 𝑐𝑦𝑐𝑙𝑒 = = 50% 𝑉𝑜𝑢𝑡 = 5𝑉 × 50% = 2,5𝑉
100
EXEMPLO POTENCIÔMETRO E PWM
int val = 0;
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
val = analogRead(0);
analogWrite(3, val/4);
// (val/4) converte o valor entre 0 e
1023 lido no AD para um valor entre
0 e 255 .
}
FUNÇÕES SERIAIS
Serial.begin(valor) – Define a velocidade de comunicação da porta serial. O
baud rate normalmente utilizado para comunicação com o serial monitor da IDE
Arduino é de 9600 bps.
Serial.print(“valor”) – A função Serial.print() imprime no serial monitor valores
do tipo char, string, int, float.
char – “N”
string – “Olá Mundo!!!”
int – “100”
float – “1.55”
SERIAL MONITOR

Baud Rate
EXEMPLO SERIAL
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(0);
analogWrite(3, val/4);
Serial.print((val/4)/255);
Serial.println(“%”); // println pula
para o inicio da linha seguinte.
delay(1000);
}
TIPOS DE VARIÁVEIS
bool – true ou false
byte – 1 byte, ou seja, números de 0 a 255
char – 1 byte, ou seja, números de -128 a 127 e armazena caracteres do tipo
ASCII, ‘A’
string – armazena um texto como um array de caracteres, “Olá Mundo!!!”
float – 4 bytes, ou seja, números de -3,4028235E+38 a 3,4028235E+38
int – 2 bytes, ou seja, números de -32768 a 32768
long – 4 bytes, ou seja, números de -2147483648 a 2147483647
TIPOS DE VARIÁVEIS
unsigned – Aumenta a parte positiva das variáveis char, int e long ao retirar a
parte negativa.
unsigned char – 1 byte, ou seja, números de 0 a 255
unsigned int – 2 bytes, ou seja, números de 0 a 65535
unsigned long – 4 bytes, ou seja, números de 0 a 4294967295
OPERADORES ARITMÉTICOS
+ → Somatória → X = A + B;
− → Subtração → X = A − B;
* → Multiplicação → X = A * B;
/ → Divisão → X = A / B;
% → Modulo → X = A % B;
= → Igualdade → X = A;
OPERADORES DE COMPARAÇÃO
!= → Diferente de → X != Y;
< → Menor que → X < Y;
> → Maior que → X > Y;
<= → Menor ou Igual → X <= Y;
>= → Maior ou Igual → X >= Y;
== → Igual a → X == Y;
OPERADORES BOOLEANOS

! → Não → !Y;
&& → E → (X = A) && (Y = B);
|| → OU → (X != A) || (Y != B);
OPERADORES COMPOSTOS

++ → X++; → X = X + 1;
−− →X−−; → X = X − 1;
+= → X += Y; → X = X + Y;
−= → X − = Y; → X = X − Y;
*= → X *= Y; → X = X * Y;
/= → X /= Y; → X = X / Y;
ESTRUTURA DE CONTROLE
for(inicializa, condição, incremento) – É um laço de repetição que após iniciada
se repete até que a condição torne-se falsa.
Ex: Nesta rotina a função for é executada 10 vezes enquanto i for menor do
que 10, quando i for igual a 10 a condição torna-se falsa.
for(i = 0, i < 10, i ++){
Serial.println(i);
}
EXEMPLO FOR
int i = 0;
void setup() {
for(i= 2, I < 7, i ++ ){
pinMode(i, OUTPUT);
}
}
void loop() {
for(i= 2, I < 7, i ++ ){
digitalWrite(i, HIGH);
delay(1000);
}
for(i= 6, I > 1, i -- ){
digitalWrite(i, LOW);
delay(1000);
}
}
ESTRUTURA DE CONTROLE
while(condição) – É um laço de repetição que após iniciado se repete até que
a condição torne-se falsa.
Ex: Nesta rotina a função while será executada até que i seja igual a 100
nesse momento a condição torna-se falsa.
while(i != 100){
i ++;
Serial.println(i);
}
EXEMPLO WHILE
int i = 0;
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
while(i < 255){
analogWrite(3, i);
i ++;
delay(5);
}
while(i > 0){
analogWrite(3, i);
i --;
delay(5);
}
}
ESTRUTURA DE CONTROLE
if(condição) – A função if é executada quando a condição torna-se verdadeira.
Ex: Nesta rotina a função if será executada quando i for igual a 50 nesse
momento a condição torna-se verdadeira.
if(i == 50){
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}
EXEMPLO IF
int var = 0;
void setup() {
pinMode(3, OUTPUT);
pinMode(13, INPUT);
}
void loop() {
var = digitalRead(13);
if(var){
digitalWrite(3, HIGH);
delay(5000);
digitalWrite(3, LOW);
}
}
ESTRUTURA DE CONTROLE
if(condição){}else{} – A função if é executada quando a condição é
verdadeira, porem se a condição for falsa a função else é executada.
Ex: Nesta rotina a função if será executada quando i for igual a 50 nesse
momento a condição torna-se verdadeira, se i for diferente de 50 a função
else é executada, pois a condição torna-se falsa.
if(i == 50){
digitalWrite(13, HIGH);
}else{
digitalWrite(13, LOW);
}
EXEMPLO IF...ELSE
int var = 0;
void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(13, INPUT);
}
void loop() {
var = digitalRead(13);
if(var){
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
} else{
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
}

}
ESTRUTURA DE CONTROLE
switch...case – A função switch...case é usada para ações de tomada de decisão
selecionando o case para executar uma determinada função.
Ex: Nesta rotina pode-se escolher entre dois case, ligado o led no case 1 ou
desligando o led no case 2.
switch(var){
case 1: digitalWrite(13, HIGH);
break;
case 2: digitalWrite(13, LOW);
break;
}
EXEMPLO SWITCH...CASE
int i = 0; digitalWrite(4, LOW);
int var = 0; delay(1000);
void setup() { break;
pinMode(3, OUTPUT); case 15:
pinMode(4, OUTPUT); digitalWrite(3, HIGH);
} digitalWrite(4, LOW);
void loop() { delay(1000);
i ++; digitalWrite(3, LOW);
switch(var){ digitalWrite(4, HIGH);
case 5: delay(1000);
digitalWrite(3,HIGH); break;
delay(1000); case 20:
digitalWrite(3, LOW); digitalWrite(3, LOW);
delay(1000); digitalWrite(4, LOW);
break; i = 0;
case 10: break;
digitalWrite(4, HIGH); }
delay(1000); }
EXEMPLO SWITCH...CASE