Configuração Arduino: ambiente de desenvolvimento, e instalação.
- recursos HW/SW
- linguagem de programação: dialeto C
- funções principais: setup e loop
- recursos disponíveis – Ports: entrada e saída, analógico e digital
- apresentação de dados: monitor serial
- programação de intervalos de tempo
Características do Microprocessador
- CPU: ARM (Advancing Risc Machine)
- linguagem de programação: Dialeto C
- Memória de programa (Flash): 32 Kb
- 14 pinos para entrada e saída digital
- 6 ports para entrada analógica. Conversão A/D
- Pinos para alimentação 5 volts e 3,3 volts
- Ambiente de carregamento integrado HW/SW
- Bootloader (carregamento de programas)
- Interfaces com SO
- USB: comunicação; carga de programas

Legenda
- HW – hardware
- SW – software
Introdução ao ambiente de configuração Arduino
Microcontrolador . Chip que incorpora microcomputador (CPU), memórias, unidades de apoio, comunicação e dispositivos de entrada e saída. (Tudo no mesmo chip)
Recursos:
- Memórias: RAM, EPROM, flash.
- Interfaces serial (USB);
- E/S analógica e digital;
- Dispositivos de apoio: Temporizadores, Contadores (clock), etc.

RISC x CISC
RISC – Reduced Instruction Set Computer
Computador com um conjunto reduzido de instruções. Dados e instruções em memórias independent
- Memória de dados (RAM)
- Memória de instruções (flash)
- Instruções de tamanho fixo
- Conjunto reduzido de instruções – Arduino
CISC. Complex Instruction Set Computer
Computador com um conjunto complexo de instruções. Dados e instruções compartilham memória RAM.
- Instruções de tamanho variável
- Conjunto de instruções mais completo – Pentium
IDE Arduino: HW/SW
Integrated Development Environment (IDE) – Ambiente de Desenvolvimento Integrado – configuração Arduino.
Hardware
- Placa com microprocessador e circuitos de apoio
- Recursos para conexão serial (USB);
- Pinos de alimentação: 5volts e 3,3volts. Fornece até 40 miliAmpéres (mA) de corrente elétrica por pino.
- Placas (Shields) para extensão de funções (rede, WIFI,..).
Software
- Dialeto da linguagem C.
- Domínio público (open source)
- Bibliotecas de apoio
Programas exemplos de configuração Arduino
Exemplo: Programação de intervalo de tempo
// Pino 13 tem um LED. Variável led identifica o pino
int led = 13;
/*Função setup. Configuração do HW.
Função pinMode. inicializa o pino 13 como saída digital (OUTPUT) */
void setup() { pinMode(led, OUTPUT); }
// Função loop. É executada sem parada (loop infinito)
void loop() {
digitalWrite(led, HIGH); // Liga o pino 13 (HIGH)
delay(1000); // Pára a CPU por um segundo
digitalWrite(led, LOW); // Desliga o LED (LOW)
delay(1000); // Pára a CPU por um segundo
} // Retorna ao início
Recursos de Programação
Linhas de comentário
- // Uma linha única;
- /*Várias
- linhas */
- Funções básicas: setup e loop
- Pinos para entrada e saída analógica e digital.
- Instruções para entrada e saída.
- Permite programação de intervalos de tempo
- Funções para comunicação serial
Interface com o usuário – Programa Blink

Documente no relatório
- Como operam as linhas de comentário?
/* NONONONONONONO
NONONONONONONO */
________________________________________
// NONONONONONONO
________________________________________
Ajuda –> Referência

Operação e configuração Arduino
Programa BLINK
- Ative o programa Arduino.exe
- Conecte o Arduino ao PC via cabo
- Selecione a placa Arduino Uno
- Selecione a porta

Operação do Arduino. Programa BLINK
- File→ Examples → Basic → Blink
- File→ Examples → Basic → Blink
Compilação (Verify)
- Compile o programa. (Verificar) Verify
- Transfira o programa Blink para a placa ARDUINO. Carregar (LOAD)
- * A placa deve estar configurada para Arduino UNO
- A porta de comunicação deverá ser configurada para porta Arduino

Anote.
- Como operam as funções de configuração Arduino?
setup:_______________________________________
loop: _______________________________________
- Descreva funções e parâmetros). Dê exemplos:
pinMode:
digitalWrite:
delay:
Escopo de uma variável
- Definição e inicialização de tipo: int led = 13;
- Escopo da variável.
- Variável Global:_______________________
- Variável Local: _______________________
- Exemplos.
Ativação dos ports (pinos)
- Função para configuração do pino: pinMode(pino,modo).
- onde: pino: (0 a 13); modo: OUTPUT/INPUT
Exemplo: pinMode(13,OUTPUT);
// Pino 13 configurado como SAÍDA (OUTPUT):
* No pino 13 há um LED que mostra os estados HIGH (nível alto, acende ) e LOW (nível baixo, apagado).
- Função para saída digital: digitalWrite(pino, valor);
- valor: LOW/ HIGH (0/1)
Exercício. Faça um programa para deixar o pino 10 sempre ligado (em nível alto).
Comunicação serial
- Execute o programa Blink.
- Anote: Porque o LED associado ao pino 13 está piscando com intervalo de 1 segundo.
- *A função delay (em milissegundos) PÁRA O PROCESSAMENTO.
Testes do programa blink
- Altere o programa blink para piscar com os seguintes intervalos:
- 10 segundos
- 100 milissegundos:
- 10 milissegundos ligado e 2 segundos desligados;
Qual o intervalo de tempo que você consegue perceber o LED piscando.
Programa: Blinkwithoutdelay
- Examples → digital → Blinkwithoutdelay.
- Altere o programa piscar em 5 segundos;
- Qual a diferença de operação dos programas Blink e Blinkwithoutdelay.

Programa blinkwithoutdelay
int ledState = LOW; long previousMillis = 0;
// ledState store last time LED was updated
long interval = 100; // interval at which to blink (milliseconds).
void setup() { pinMode(13, OUTPUT); }
void loop() {
/*check to see if it’s time to blink the LED; that is, if the difference between the current time and last time you blinked the LED is bigger than the interval at which you want to blink the LED. */
unsigned long currentMillis = millis();
if(currentMillis – previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW) { ledState = HIGH;}
else ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(13, ledState);
} }
Programa blinkwithoutdelay
BlinkWithoutDelay.
Descreva a função millis()
- Veja reference doArduino
- Qual o valor máximo da variável unsigned long (32 bits de armazenamento)
Resposta:2^32 = 4Giga milissegundos.
Quantos dias são necessários para a variável atingir o valor máximo?
Resposta:
Função mills()
- millis()
- Description
- Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.
Monitor serial
- Carregue e execute o programa
unsigned long time;
void setup(){ Serial.begin(9600); }
void loop() {
Serial.print(“Time: “); time = millis();
//prints time since program started
Serial.println(time);
// wait a second so as not to send massive amounts of data
delay(1000); }
//Altere o programa para imprimir minutos e segundos.
Use divisão por inteiro ( / ) e resto de divisão ( % )
Monitor serial: saída de dados
// Saída de dados via Monitor serial.
// Ícone no canto superior à direita
int n = 1;
void setup ( ) { Serial.begin(9600); }
// Inicializa a comunicação serial com 9600 bauds
void loop() {
//saída pela interface serial. Recebe no monitor serial
Serial.print(n); n=n+1;
Serial.println(“: Alo Mundo!”);
delay(2000); }
Anote
Caracterize as funções e o parâmetro:
- Serial.begin(9600); ____________________________________
- Serial.print(n) ____________________________________
- Serial.println(“: Alo Mundo!”); ____________________________________
Exercício: Um contador de tempo simplificado
- Programe um contador de tempo que mostre a segundos e minutos.
- Use a funções millis() e delay(intervalo)
- Solução nó próximo slide. Critique a solução apresentada.
UMA Solução ao problema proposto – configuração Arduino
- unsigned long time;
- unsigned long segundo; unsigned long minuto;
- void setup(){ Serial.begin(9600); }
- void loop(){
- time = millis()/1000; segundo = time%60; minuto = time/60;
- //prints time since program started
- Serial.print(” Minuto: “); Serial.print(minuto);
- Serial.print(” Segundo: “); Serial.println(segundo);
- // wait a second so as not to send massive amounts of data
- delay(1000);
- }
Instalação e configuração do Arduino – baixe arquivo PPT