Instalação e Configuração Arduino

Instalação e Configuração Arduino

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

Arduíno Board

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.

Configuração Arduino

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

Configuraação Arduino

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

Sobre o Autor

Milton Silva da Rocha editor

Prof. Milton Silva da Rocha; Bacharel em Engenharia Elétrica (UFPa - 1973); Mestre em Ciências (ITA) - 1978); Doutor em Ciências (USP - 1998).