Você está na página 1de 7

3.

2 FUNÇÕES

Desde o começo desse livro você está lendo a palavra


função, e chegou o momento de desmistificar esse conceito.

Imagine que você precise escrever um algoritmo descreva


a rota para seu trabalho, ou uma receita de bolo. Você poderia
criar um algoritmo que diga: Ande duas quadras, vire à esquerda
depois a direita; ou então, adicione 2 colheres de açúcar, 3
xicaras de farinha, 2 ovos e então bata tudo.

Até aí tudo bem, vai funcionar perfeitamente. Agora e se


você precisasse escrever esse algoritmo várias vezes? Uma
maneira é você copiar toda a receita, ou toda a rota, e colar ela
várias vezes dentro do mesmo código.

Porém essa não é a maneira mais eficaz de se criar um


código que precisa se repetido várias vezes. Foi para isso que as
funções foram criadas.

Usando o exemplo da receita de bolo, bastaria você criar


uma função com a receita, e depois se precisasse repeti-la, ao
invés de se copiar a receita inteira várias vezes, é só pedir para
que a função seja executada várias vezes.

Isso encurta muito o tamanho dos nossos códigos, e facilita


muito a legibilidade do código.

Um algoritmo bem escrito, possui cada função bem


definida, para que o programador olhe para determinada
função, e já saiba exatamente o que ela está fazendo.

Assim como você olha para o void setup e já sabe que ele é
executado só uma vez.

96
E assim como você também olha para o void loop e sabe que
essa função se repete enquanto o Arduíno estiver ligado; as
funções que você criar devem ser bem autoexplicativas.

SINTAXE:

void nome_da_funcao () {

//código a ser executado

Para se chamar uma função basta colocar o nome dela com


parênteses: nome_da_funcao();

EXEMPLO:
void setup() {
pinMode(13, OUTPUT); // Define o pino 13 como saída
}
void loop() {
changeLights(); // Chama a função

// Quando a função é finalizada o código continua aqui.

delay(15000); /* Aguarda 15 segundos depois que função é


executada */
}

// Função
void changeLights() {

// Liga o LED
digitalWrite(13, HIGH);

// Aguarda 1 segundo com o LED ligado


delay(1000);

// Desliga o LED
digitalWrite(13, LOW);

// Aguarda 1 segundo com o LED desligado


delay(1000);
} // Fim da função, retorna para o loop.

97
PROJETO#7 - Arduino Controlando
Sinaleiro:
Construa um sinaleiro usando LEDs verde, vermelho e
amarelo

Componentes:
• 1 – Resistor de10k-ohm
• 1 – Pushbutton
• 3 – Resistor 220-ohm
• 1 – Protoboard
• Jumpers de conexão
• 1 – LED Vermelho
• 1 – LED Amarelo
• 1 – LED Verde

Diagrama:

98
int red = 10;
int yellow = 9;
int green = 8;

void setup() {
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}

void loop() {
changeLights();
delay(15000);
}

void changeLights() {

// Verde desligado, amarelo ligado por 3 segundos


digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
delay(3000);

// Desliga o Amarelo e liga o Vermelho por 5 segundos


digitalWrite(yellow, LOW);
digitalWrite(red, HIGH);
delay(5000);

// Desliga o Vermelho e liga o Verde


digitalWrite(yellow, LOW);
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
delay(3000);

99
PROJETO#8 – Controlando um LED pela
luminosidade do ambiente:

Usando um Fotoresistor para controlar intensidade de


brilho de um LEDs de acordo com a quantidade de luz presente
no ambiente.

Um Fotoresistor é um componente que varia sua


resistência de acordo com a quantidade de luz que incide sobre o
mesmo. Vamos usar essa propriedade para controlar um LED.

Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm
• 1 - 330 Ω Resistor
• 1 - 10K Ω Resistor
• 1 - Fotoresistor
• Jumpers

Diagrama:

100
// Constantes que armazenam as pinagens, para facilitar o
código

const int sensorPin = 0;


const int ledPin = 9;

// Vamos setar algumas variáveis globalmente


int lightLevel;

int calibratedlightLevel;

int maxThreshold = 0; // usado para setar o máximo de luz

int minThreshold = 1023; // usado para setar o mínimo de


luz

void setup()
{
pinMode(ledPin, OUTPUT);// Seta o pino do LED como SAÍDA
Serial.begin(9600);
}

void loop()
{
lightLevel = analogRead(sensorPin); // lê a porta
Serial.print(lightLevel);
//autoRange(); // executa a função autoRange

calibratedlightLevel = map(lightLevel, 0, 1023, 0,


255); //muda a escala de leitura de 0 a 1023 para 0 a 255

Serial.print("\t"); // imprime um tab


Serial.print(calibratedlightLevel);
analogWrite(ledPin, calibratedlightLevel); // Seta o
brilho do LED de acordo com o valor lido.
}

/*
Essa função seta o valor das variáveis minThreshold e
maxThreshold para o nível de luz do ambiente. Mova sua mão
em cima do sensor para calibrar.
O sensor irá perceber o range total de luz e vai
autocalibrar as entradas
*/

void autoRange()
{
if (lightLevel < minThreshold)
minThreshold = lightLevel;

if (lightLevel > maxThreshold)

101
maxThreshold = lightLevel;

// uma vez calibrado você pode inserir diretamente os


valores dentro da função map

lightLevel = map(lightLevel, minThreshold, maxThreshold,


0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}

102

Você também pode gostar