- Declarar as variáveis, constantes ou "apelidos"
- Declarar / escrever funções próprias
- Escrever a função "setup" que define I/Os, inicializa periféricos, ou seja, ajusta as configurações inicias
- Escrever a função "loop" que cria a rotina de looping para execução do programa
O que são funções?
Uma função é, em linhas gerais, uma sequência de comandos que pode ser reutilizada várias vezes ao longo de um programa. Para criar uma função e dizer o que ela faz, nós precisamos fazer uma declaração de função.
Para entender o conceito de função vamos utilizar como exemplo um led ligado ao pino 2 de um Arduino UNO que pisca.
Código para piscar um led que usaremos como exemplo
*
Objetivo: entender o uso de funções
Passo 1 - Exemplo de uma atividade: piscar um led ligado ao pino 2
*/
#define ledSaida 2 // cria um apelido "ledSaida" para o valor 2 (pino 2)
void setup() { // função executada uma única vez quando pressionado o reset
pinMode(ledSaida, OUTPUT); // inicializa o pino ledSaida como saída
}
void loop() { // função que fará o programa rodar executar as instruções listadas repetidas vezes
digitalWrite(ledSaida, HIGH); // liga o led. Coloca nível de tensão alto no pino ledSaida
delay(1000); // espera 1 segundo
digitalWrite(ledSaida, LOW); // desliga o led. Coloca nível de tesão baixo no pino ledSaida
delay(1000); // espera 1 segundo
}
Criando uma função
Note que na função loop temos os comandos que fazem a ação, ou seja, o led piscar.
Poderíamos substituir esse conjuntos de comandos a associar a eles um "nome" que permitisse lembrar o que esses comandos fazem (piscar o led).
Abaixo o código para piscar um led com os comandos colocados dentro de uma função
/*
Objetivo: entender o uso de funções
Passo 2 - Criar uma função que execute alguns comandos
*/
#define ledSaida 2 // cria um apelido "ledSaida" para o valor 2 (pino 2)
void setup() { // função executada uma única vez quando pressionado o reset
pinMode(ledSaida, OUTPUT); // inicializa o pino ledSaida como saída
}
void loop() { // função que fará o programa rodar executar as instruções listadas repetidas vezes
piscaLed(); // faz o led piscar 1 vez
}
void piscaLed (void){ // função que pisca o led 1 vez
digitalWrite(ledSaida, HIGH); // liga o led. Coloca nível de tensão alto no pino ledSaida
delay(1000); // espera 1 segundo
digitalWrite(ledSaida, LOW); // desliga o led. Coloca nível de tesão baixo no pino ledSaida
delay(1000); // espera 1 segundo
}
Colocando um parâmetro
Que tal se fosse possível controlar o tempo de on/off do led piscante?
para isso basta passar um dado que indique esse tempo. Aqui este dados é chamado de parâmetro
Abaixo o código para piscar um led com os comandos colocados dentro de uma função recebendo um parâmetro de tempo em segundos para os tempos de on e off
/*
Objetivo: entender o uso de funções
Passo 3 - Criar uma função que execute alguns comandos recebendo um parâmetro de tempo
*/
#define ledSaida 2 // cria um apelido "ledSaida" para o valor 2 (pino 2)
void setup() { // função executada uma única vez quando pressionado o reset
pinMode(ledSaida, OUTPUT); // inicializa o pino ledSaida como saída
}
void loop() { // função que fará o programa rodar executar as instruções listadas repetidas vezes
piscaLed(2); // executa os comandos que farão o led piscar com 2 segundos de tempo on e off
}
void piscaLed (int segundos){ // função que pisca o led com tempo de on/off definido pela variável "segundos"
digitalWrite(ledSaida, HIGH); // liga o led. Coloca nível de tensão alto no pino ledSaida
delay(1000 * segundos); // espera s quantidade de tempo definida pela variável "segundos"
digitalWrite(ledSaida, LOW); // desliga o led. Coloca nível de tesão baixo no pino ledSaida
delay(1000 * segundos); // espera s quantidade de tempo definida pela variável "segundos"
}
Trabalhando com mais parâmetros
Poderíamos controlar os tempo de on e off?
Para isso basta "passar" o tempo de on e o tempo de off (enviar os parâmetros).
Abaixo o código para piscar um led com os comandos colocados dentro de uma função recebendo dois parâmetros para os tempos de on e off em segundos
/*
Objetivo: entender o uso de funções
Passo 4 - Criar uma função que execute alguns comandos recebendo dois parâmetros de tempo on e off
*/
#define ledSaida 2 // cria um apelido "ledSaida" para o valor 2 (pino 2)
void setup() { // função executada uma única vez quando pressionado o reset
pinMode(ledSaida, OUTPUT); // inicializa o pino ledSaida como saída
}
void loop() { // função que fará o programa rodar executar as instruções listadas repetidas vezes
piscaLed(2,3); // executa os comandos que farão o led piscar com 2 segundos de tempo on e 3 segundos de tempo off
}
void piscaLed (int segundosOn, int segundosOff ){ // função que pisca o led com tempo de on/off definido pelos parâmetros
digitalWrite(ledSaida, HIGH); // liga o led. Coloca nível de tensão alto no pino ledSaida
delay(1000 * segundosOn); // espera s quantidade de tempo definida pela variável "segundos"
digitalWrite(ledSaida, LOW); // desliga o led. Coloca nível de tesão baixo no pino ledSaida
delay(1000 * segundosOff); // espera s quantidade de tempo definida pela variável "segundos"
}
Boa noite,muito legal a explicação do arduino!
ResponderExcluirparabéns...
ResponderExcluir