Funções do Arduino
Pesquisas Acadêmicas: Funções do Arduino. Pesquise 862.000+ trabalhos acadêmicosPor: hiltonbarboza • 22/9/2013 • Pesquisas Acadêmicas • 3.405 Palavras (14 Páginas) • 502 Visualizações
Funções do Arduino
Segmentar o código em funções possibilita ao programador criar partes modulares, que desempenham tarefas bem definidas, e então retornam para a área do código a partir de onde foram chamadas. O caso típico de criação de uma função é quando existe a necessidade de executar a mesma tarefa diversas vezes durante um programa.
Para programadores acostumados ao BASIC, funções do Arduino fornecem (e estendem) a utilidade do uso das subrotinas (GOSUB em BASIC).
Padronizar fragmentos de código em funções tem várias vantagens:
• Funções ajudam o programador permanecer organizado, muitas vezes, isso ajuda a montar o conceito do programa.
• Funções codificam a tarefa em um único lugar, para que a funcionalidade seja pensada e depurada uma única vez.
• As chances de erros em modificações reduzem drasticamente, no caso do código precisar ser alterado.
• Funções reduzem o tamanho dos Sketches (projetos criados na IDE do Arduino, do inglês: rascunhos), pois seções de código podem ser reutilizadas diversas vezes.
• Elas também tornam mais fácil reutilizar código, tornando-o mais modular, e com um efeito colateral benéfico: fica mais agradável de ler o código.
Existem duas funções mandatórias nos Sketches do Arduino: setup() e loop(). Outras funções podem ser criadas fora das chaves ({}) dessas duas funções. Como um exemplo, vamos criar uma função simples para multiplicar dois valores.
Exemplo
Para “chamar” nossa função simples de multiplicação, nós passamos os parâmetros do tipo de dados que a função está esperando:
void loop{
int i = 2;
int j = 3;
int k;
k = myMultiplyFunction(i, j); // k now contains 6
}
Nossa função precisa ser declarada fora de qualquer outra função, então “MinhaFuncaoMultiplicar()” pode ficar tanto acima quanto abaixo da função principal “loop()”.
O código completo deve ficar parecido com isto:
void setup(){
Serial.begin(9600);
}
void loop() {
int i = 2;
int j = 3;
int k;
k = myMultiplyFunction(i, j); // k now contains 6
Serial.println(k);
delay(500);
}
int myMultiplyFunction(int x, int y){
int result;
result = x * y;
return result;
}
Outro exemplo
Esta função abaixo fará a leitura de um sensor, cinco vezes, utilizando a função analogRead(); calculando a média das cinco leituras. Ela também converte os dados da leitura para 8 bits (0-255), e a inverte, invertendo assim a saída.
int ReadSens_and_Condition(){
int i;
int sval = 0;
for (i = 0; i < 5; i++){
sval = sval + analogRead(0); // sensor na porta analógica 0
}
sval = sval / 5; // média
sval = sval / 4; // converte para 8 bits (0 - 255)
sval = 255 - sval; // inverte a saída
return sval;
}
Para chamar a função, nós apenas fazemos a atribuição para uma variável.
int sens;
sens = ReadSens_and_Condition();
Referência Arduino - pinMode(), digitalWrite() e delay()
Função: pinMode()
Descrição
Configura a porta especificada para se comportar tanto como entrada ou saída. Veja o post sobre portas digitais para maiores detalhes.
Sintaxe
pinMode(pin, mode)
Parâmetros
pin: o número da porta que você deseja configurar
mode: INPUT para entrada e OUTPUT para saída
Retorna
Nada
Nota
As portas analógicas podem ser usadas como portas digitais, referindo-as como A0, A1 etc.
Função: digitalWrite()
Descrição
Altera o estado da porta para alto (HIGH) ou baixo (LOW) de uma porta digital.
Se a porta foi configurada como saída (OUTPUT) pela função pinMode(), sua voltagem será correspondente aos valores de 5V (ou 3.3V nas placas de 3.3V) para alto (HIGH), e 0V (GND) para baixo (LOW).
Se a porta é configurada como entrada (INPUT), escrever um valor alto (HIGH) com o digitalWrite() habilitará o resistor de elevação (pullup) interno de 20K (veja a postagem sobre portas digitais). Escrever um valor baixo (LOW) desabilitará o resistor de elevação. Este resistor de elevação é suficiente para acionar muito fracamente um LED, portanto se o LED funcionar, mas dessa forma fraca, esta é a causa mais provável. A solução é configurar a porta para saída (OUTPUT) através da função pinMode().
NOTA: A porta digital 13 é mais difícil de se utilizar como uma porta de entrada dentre as outras portas digitais, pois existe um LED ligado a ela, com um resistor em série,
...