Páginas

sábado, 2 de outubro de 2010

Aprendendo Arduino Setup / Void Loop

Bom dia!
A postagem de hoje é sobre a programação do Arduino, então chega de papo furado e vamos ao que interessa:
Um programa criado no Arduino pode ser dividido em três partes principais: Estrutura, Valores e Funções. Na parte da estrutura podemos dizer que todo código criado para o Arduino deve obrigatoriamente possuir duas funções: void Setup e void LooP.

- A palavra void é usada somente na declaração de funções. Ele indica que a função deve retornar qualquer informação para a função a partir da qual foi chamada. 

- A função void Setup é chamada quando o sketch inicia - sketch é o nome que o arduino usa para um programa. Ela é utilizada para iniciar variáveis, PinMode, e iniciar o uso de bibliotecas. Esta função é executada somente uma vez quando a placa é energizada ou cada vez que a placa é "resetada".
Exemplo: 
void setup()   {               
  // declara o pino digital como saída:
  pinMode(ledPin, OUTPUT);    
}

- A função void Loop faz o que seu prórpio nome sugere, loops consecutivos permitindo seu programa executar as operações que aqui estão.
Exemplo:
void loop()                    
{
  digitalWrite(ledPin, HIGH);   // Liga o LED
  delay(1000);                         // aguarda um segundo
  digitalWrite(ledPin, LOW);    // desliga o LED
  delay(1000);                         // aguarda um segundo
}
Ainda na parte de "Estruturas", temos: Estruturas de controle, operadores aritméticos, operadores de comparação, operadores booleanos, operadores bit a bit, operadores compostos, dentre outros...

Na parte de "Valores", temos as variáveis e constantes, mas de primeiro momento vamos ver apenas as constantes HIGH e LOW bem como INPUT e OUTPUT.

HIGH: O siginificado de High é um pouco diferente dependendo se o pino é configurado como "input" ou "output". Quando um pino é configurado como saída (output) com o pinMode e o valor de digitalWrite é setado como HIGH, o microcontrolador envia uma voltagem de 5V para este pino.
Quando um pino é configurado como entrada (input) com o pinMode e leitura com o digitalRead, o microcontrolador irá reportar High se uma tensão de 3V ou mais está presente no pino.

LOW: o significado de LOW também pode ser diferente, dependendo se um pino é definido como "input" ou "output". Quando um pino é configurado como uma entrada com pinMode, e leitura com digitalRead, o microcontrolador irá reportar LOW se uma tensão de 2 volts ou menos estiver presente neste pino.
Quando um pino é configurado como a saída (output) com pinMode, e definido como LOW com digitalWrite, a tensão neste pino é de 0 volts.

INPUT: Os pinos configurados como input com o pinMode, estão em um estado de alta impedância, isso faz com que eles sejam uteis para ler o valor de um sensor, mas não para acender um LED.

OUTPUT: Os pinos configurados como output com o pinMode, estão em um estado de baixa impedância, isso significa que eles podem fornecer uma quantidade significativa de corrente para outros circuitos. Os pinos configurados como Output podem fornecer uma corrente de até 40 mA (miliamperes) para outros dispositivos/circuitos. A quantodade de corrente fornecida pelos pinos do Atmega é muito pequena para acionar motores então algum circuito extra será necessário.

Ainda temos a parte das funções que envolvem as entradas e saídas analógicas e digitais, funções de tempo, cálculo, números randômicos (aleatórios), etc. Mas estes ficam para outra hora, quem sabe.
Para finalizar deixo o código fonte do exemplo blink que já vem no software Arduino, apenas com os comentários em português. Você pode analizá-lo e notar o uso das funções vistas neste artigo.

int ledPin =  13;    // LED conectado no pino digital 13
// A função setup() roda uma vez, quando o sketch inicia
void setup()  
{               
  // inicializa o pino digital como saída
  pinMode(ledPin, OUTPUT);    
}

// a função loop()  é executada repetidas vezes,
// enquanto o Arduino estiver com energia.
void loop()                    
{
  digitalWrite(ledPin, HIGH);    // Liga o LED
  delay(1000);                          // aguarda um segundo para próxima instrução
  digitalWrite(ledPin, LOW);     // Desliga o LED
  delay(1000);                          // aguarda um segundo para próxima instrução
 }

P.S.: Neste exemplo é utilizada uma função de tempo, a função delay(), que pausa o programa por um período de tempo especificado em milisegundos. Nota: Da mesma forma que existem 60 minutos em uma hora, existem 1.000 milissegundos em um segundo.
Então, até a próxima.

Fontes:
- Arduino reference (Referência da Linguagem do Arduino);
- Código de exemplo "Blink" disponível no software Arduino

6 comentários:

  1. Ai meu Deus! Quanta coisa dificil! Minha cabeça ta dando um nó! Rsrsrs Nao entendo neda! Rsrsr Juliane

    ResponderExcluir
  2. Cara parabéns pelo tutorial, muito bom ajuda muito pra quem esta começando a programar.

    ResponderExcluir
  3. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  4. Que explicação maravilhosa! Eu sou iniciante no arduino e esse artigo clareou muito as minhas ideias. Muito Obrigada, ajudou muito.

    ResponderExcluir
  5. void loop () {

    test1 = digitalRead(pinBotao1);
    test2 = digitalRead(pinBotao2);

    {
    digitalWrite(sonar_trig, HIGH);
    delayMicroseconds(0);
    digitalWrite(sonar_trig, LOW);

    tempo_echo = 0;
    tempo_echo = pulseIn(sonar_echo, HIGH);
    X1 = 0.5*(tempo_echo * 1.0e-6 * 340);
    X1 = X1 * 100.0;
    Serial.print(X1);
    Serial.print("cm");
    delay(100);
    }
    Boa tarde, o meu esta dando este erro "a function-definition is not allowed here before '{' token " eu não sei o que pode ser, se puder me ajudar desde ja agradeço.

    ResponderExcluir

teste comentario