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);
}
// 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
}
{
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.
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
Ai meu Deus! Quanta coisa dificil! Minha cabeça ta dando um nó! Rsrsrs Nao entendo neda! Rsrsr Juliane
ResponderExcluirCara parabéns pelo tutorial, muito bom ajuda muito pra quem esta começando a programar.
ResponderExcluirEste comentário foi removido por um administrador do blog.
ResponderExcluirQue explicação maravilhosa! Eu sou iniciante no arduino e esse artigo clareou muito as minhas ideias. Muito Obrigada, ajudou muito.
ResponderExcluirvoid loop () {
ResponderExcluirtest1 = 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.
acho que esta faltando fechar uma chave
Excluir