p3r3.com » Arduino e Programação

Arduino e Programação

4.1 A programação do Arduino

A programação do arduino, é feita em um ambiente de desenvolvimento integrado de software. Esse ambiente é um programa onde se faz os códigos e a transferência para uma placa arduino. Um código de arduino contém várias instruções que são em inglês. A placa arduino segue essas instruções. Essas instruções são chamadas de funções.

Todo programa de arduino tem duas funções, uma que é a void setup() e a outra que é a void loop(). A void setup() é uma função que é executada apenas quando começa o programa e serve para configurar os pinos da placa e estabecer a comunicação serial com um computador. A outra void loop() é uma função que executa os comandos que são colocados nela infinitamente.

A função pinMode(número do pino, Input/Output) é colocada na void setup() e serve para configurar um pino como sendo saida ou entrada. A função digitalWrite(numero do pino, 0/1) é colocada na void loop() e serve para escrever em um pino digital 0 ou 1(0V ou 5V). A função digitalRead(numero do pino) é colocada na void loop() e serve para ler em um pino digital 0 ou 1(0V ou 5V).

A função analogWrite(número do pino, 0 a 255) é colocada na void loop() e serve para escrever em um pino analógico ou PWM um valor entre 0 até 255(0V até 5V). A função analogRead(número do pino) é colocada na void loop() e serve para ler em um pino analógico um valor entre 0 até 255(0V até 5V). As variáveis podem ser int que é um inteiro, long que é um inteiro maior, byte que é um inteiro entre 0 e 255 e float que é um fracionário.

Existem as funções de tempo que são: delay(ms), delayMicroseconds(us) e millis(). A delay(ms) para o programa por um período de ms milisegundos. A delayMicroseconds(us) para o programa por um periodo de us microsegundos. Por ultimo a millis() guarda o tempo em milisegundos desde que a placa arduino foi ligada.

Para saber quanto tempo um pino digital passa de um estado para outro atraves da função pulseIn(pino, valor, espera), onde os parametros são pino que é o numero do pino, valor do pulso que será medido e espera(opicional) que determina apos microsegundos a função vai executar. Essa função retorna o tempo em microsegundos que um determinado pino digital muda de 0 para 1 ou vice-versa.

A comunicação serial é feita atraves dos comandos: Serial.begin(taxa), Serial.end(), Serial.available(), Serial.read(), Serial.print(valor, formato) e Serial.println(valor, formato). A Serial.begin(taxa) é colocada na void setup() e serve para estabelecer a comunicação serial e o parâmetro taxa siginifica a velocidade com que as informações serão transmitidas. A Serial.end() é colocada na void setup() e serve para desabilitar a comunicação serial. A Serial.available() é colocada na void loop() e serve para saber se tem alguma coisa na porta serial. A Serial.read() é colocada na void loop() e serve para ler alguma coisa na porta serial. A Serial.print(valor, formato) é colocada na void loop() e serve para imprimir alguma coisa na porta serial. A Serial.println(valor, formato) faz a mesma coisa só que pulando uma linha.

É possível instalar bibliotecas no ambiente de desenvolvimento integrado de software. Existem diversas bibliotecas disponíveis na internet. Tudo que se precisa fazer é colocar a biblioteca em uma pasta chamada libraries. Com uma biblioteca é possivel colocar mais funções em um programa. No programa é preciso incluir a biblioteca com a função #include<nomedabiblioteca>.

Em um programa arduino existem diversas funções lógicas como: se, senão, escolha, caso, enquanto, faça e para. Essas funções servem para dar instruções ao arduino. Elas são escritas em inglês no programa e são: if, else, switch, case, while, do e for, respectivamente.

Exemplos de projetos com o Arduino

Acendendo e apagando o led da porta digital 13 que é o led L no Arduino Uno

Figura 8 - Exemplo de Código

Figura 8 – Exemplo de Código

Neste código, primeiro é definido uma variável do tipo inteira que é led e recebe o valor 13 que é o número do pino. Na função void setup(), essa variável é colocada como saída. Por último na função void loop() o pino é colocado em estado alto, espera 1 segundo, é colocado em estado baixo, espera mais 1 segundo e começa tudo novamente.

Recebendo e escrevendo dados na porta serial

Figura 9

Figura 9

Neste código, primeiro é definida uma variável do tipo inteira que é incomingByte e recebe o valor 0. Na função void setup(), é iniciada a porta serial. Por último na função void loop() se tiver alguma coisa na porta serial, a variável incomingByte vai receber o que tem lá e será impresso o que tem nessa variável na porta serial.

Acendendo e apagando um led com PWM

Figura 10

Figura 10

Neste código, primeiro é definido uma variável do tipo inteira que é i e recebe o valor 0, depois é colocado a função void ledOn(). Na função void setup(), o pino digital 10 é colocado como saída. Na função void ledOn() o pino digital irá receber o valor de i. Por último, na função void loop() tem um laço for para a variável i que vai de 0 a 255 e chama a função ledOn() e outro laço for para a variável i que vai de 255 a 0 e também chama a função ledOn().

Utilizando o sensor de linha

Figura 11

Figura 11

Neste código, primeiro é definido uma variável do tipo inteira que é led e recebe o valor 13 que é o número do pino. Na função void setup() a porta serial é iniciada e essa variável é colocada como saída. Por último na função void loop() é definido uma variável do tipo inteira que é sensorValue, essa variável vai receber o valor de um sensor de linha colocado no pino analógico A0, esse valor será impresso na porta serial, se esse valor for menor ou igual a 100,  o led acende, caso contrário, ele permanence apagado.

Utilizando o ultrasom

Figura 12

Figura 12

Neste código, é utilizado o sensor ultrasom que consiste em um emissor e um receptor de frequências muito alta, da faixa do ultrasom. O emissor é chamado de trigger e o receptor é o echo. Para se calcular a distância do sensor até um obstáculo, é preciso enviar um sinal pelo trigger e calcular quanto tempo leva para bater no obstáculo e voltar paro o echo. Como esse tempo é de ida e de volta, tem que ser dividido por 2. A velocidade do som no ar é aproximadamente 340m/s, com isso através da fórmula V=S/t é possível saber a distância. Após algumas conversões de unidades para que o resultado saia em cm temos que dividir o tempo em 29.4.

Utilizando motor de corrente contínua

Figura 13

Figura 13

Nesse código, primeiro são definidas 6 variáveis do tipo inteira que são: motorPin, incPin, decPin, val, incButton e decButton. As variáveis motorPin, incPin e decPin recebem os valores 3, 4 e 5, respectivamente, que são os números das portas digitais, já a variável val recebe o valor 0 e as variáveis incButton e decButton, o estado lógico baixo. Na função void setup() os pinos  digitais 4 e 5 são colocados como entrada que são dois botões e o pino digital 3 como saída que é um motor de corrente continua, o motor é desligado e é iniciado a porta serial. Por último, na função void loop(), as variáveis incButton e decButton recebem o estado lógico dos pinos digitais 4 e 5 respectivamente, se o estado lógico da variável incButton for alto, incrementa a variável val, se o estado lógico da variável decButton for alto, decrementa a variável val, imprime na porta serial o valor de val, da uma pausa de 100ms e escreve no pino digital 3 que é o motor de corrente contínua o valor de val.

Utilizando servo motor

Figura 15

Figura 14

Nesse código, primeiro é incluido a biblioteca do servo motor Servo.h, que já se encontra no software do arduino, é definido uma variável do tipo servo que é motor1 e uma variável do tipo inteiro que é pos e recebe 0. Na função void setup(), é utilizado uma função da biblioteca que é motor1.attach(8), essa função associa o pino digital 8 ao servo motor. Por último na função void loop() é construído um laço for para a variável pos que é a posição e vai de 0 até 180º e chama uma função da biblioteca que é motor1.write(pos), essa função escreve a posição no servo motor, pausa por 15ms e depois tem outro laço for para a mesma variável que vai de 180º a 0 e chama a mesma função da biblioteca que é motor1.write(pos) e pausa novamente por 15ms.

continue lendo…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *