5-Conversando com o Arduino

Criar uma Loja Virtual Grátis
5-Conversando com o Arduino

 5 – CONVERSANDO COM O ARDUINO

O nosso microprocessador "conversa" na Linguagem C++. Existem palavras específicas no seu "dicionário" para que ele entenda o que queremos.

 

ALERTA!!!

As explicações que virão a seguir muitas vezes estão fora da verdade técnica.

Lembre-se que tem por objetivo o leigo entender o "mecanismo" da coisa.

Procure informações mais exatas na própria internet.

 

A linguagem para conversar com o Arduino segue basicamente nossa linguagem: existem verbos (ordens, comando ou instruções) e objetos sobre os quais a ação age. Os "objetos" são valores, comparações, condições, entradas ou saída de informações.

O sistema é digital, isto é, reconhece tensões positivas ( + , 1 ou HIGH) e tensões negativas ( - , 0 ou LOW). O Arduino trabalha com uma tensão de 5,0 Volts, mas pode ser alimentado com até 12,0 Volts (ele reduz para 5,0 Volts).

O Arduino precisa saber QUANDO você termina uma instrução (uma ordem e seu objeto). Isto é feito colocando um ponto e vírgula ";"

Existem 3 áreas de trabalho nele:

- uma de "inicialização" onde serão dados nomes aos objetos, valores e programas de uma biblioteca para acionamentos de sensores ou outros atuadores, seguida de

- outra área, o "setup", onde o Arduino será informado de quais são seus pinos e se serão usados para entrada oou saída de informações. Nesta área ainda serão informadas outras situações de comunicação externa ou como os objetos serão iniciados. Esta área inicia com uma chave "{" e termina com outra "}" Isso é importante para que o Arduino saiba por onde está andando.

- O "loop" é a área onde ele executa as instruções repetidamente. É aqui onde será colocada a "programação" que controla os atuadores, os sensores e os movimentos da "máquina". Obrigatoriamente termina e começa com chaves { instrução 1 e objeto ; instrução 2 e objeto ; ... ;}

Ainda existe a possibilidade de serem feitas subrotinas, também entre chaves, que podem ou não ser chamadas a partir do "loop" principal.

As áreas de setup, loop e subrotinas devem ser iniciadas pela palavra "void", e algum objeto ou condição na qual ela deve ser executada, entre parênteses.

Iremos ensaiando a linguagem aos poucos, à medida que usamos.

 

ANDANDO PARA FRENTE

Queremos que o motor 1, M1, ande para frente e sua ponte H está ligada nos pinos 5 e 6 do Arduino (volte e consulte a tabela das polaridades que devem ser aplicadas e o chassi do carro, no item "4-Montando uma Máquina"). Portanto podemos dizer que o pino 5 deve receber uma tensão positiva e o pino 6 negativa (NUNCA ambas positivas, pois dará curto-circuito na ponte. Outro tipo de ponte pode ter polaridade invertida).

digitalWrite (5,HIGH);

digitalWrite (6,LOW);

 

Pronto, ordenamos que o Arduino coloque digitalWrite e sinal positivo (HIGH ou 1) no pino 5 e negativo (LOW ou 0) no pino 6. Observe a estrutura da instrução: comando (condições) fim de instrução digitalWrite (5, HIGH);

Ainda poderia ser escrito assim

 

digitalWrite (5,1);

digitalWrite (6,0);

 

Atenção:

- uma vírgula separa os dados das condições do comando (5 , HIGH)

- não use caracteres e acentuação da língua portuguesa. Isto foi criado para o inglês!

 Mas, onde escreveremos tudo isso?

 

Por enquanto usaremos o "Bloco de Notas" do Windows, ou outro processador de texto que te interesse.

Sugiro que comece agora e vá seguindo o que a apostila mostra.

 

Se usar duas barras // a linguagem entende que isso é uma observação e não deve ser usada como instrução. Muito útil para você saber o que está ordenando.

digitalWrite (5,1); // sinal alto ou positivo

digitalWrite (6,0); // sinal baixo ou negativo

Observe na imagem do chassi do carro que o motor 1, M1, ou esquerdo, deve girar no sentido antihorário para que o carro vá para frente. Se isso não ocorrer, você tem duas opções:

- ou inverte os sinais HIGH e LOW nos pinos 5 e 6

- ou inverte os fios que ligam a ponte ao motor.

Quando o programa ficar maior, com mais linhas de instrução, você perceberá que é mais fácil inverter os fios do que mudar TODAS as linhas !

Agora fazemos a mesma coisa para o motor 2, M2 ou direito. Mas antes, vamos lembrar que estas instruções estarão dentro da área de "loop".

void loop() { // a chave indica o inicio do loop

digitalWrite (5,HIGH); // motor esquerdo

digitalWrite (6,LOW); // motor esquerdo

digitalWrite (10,HIGH); // motor direito

digitalWrite (11,LOW); // motor direito

} // esta chave fecha o fim do loop

 

Pronto?

NÃÃÃÃO !!!!

Você não informou ao Arduino quais dos seus 20 pinos são aqueles que ele usará para o motor. Esta informação deverá ser dada na área de "setup" assim, antes de começar o loop, ele saberá o que os pinos fazem!

Dica: use tabulação (espaços) nas linhas de instrução para ver claramente o que está entre as chaves de inicio e fim de área de trabalho.

O motor direito M2 deve girar no sentido horário. Mesmos acertos que o M1, ou inverta as condições LOW e HIGH ou inverta os fios entre ponte e motor.

void setup() { // a chave indica o inicio do setup

pinMode(5,OUTPUT); // o modo do pino 5 será saída de informação do motor 1.

pinMode(6,OUTPUT); // mesmo raciocínio para os demais…

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

} // esta chave fecha o fim do setup

void loop() { // a chave indica o inicio do loop

digitalWrite (5,HIGH); // motor esquerdo para frente

digitalWrite (6,LOW); // motor esquerdo

digitalWrite (10,HIGH); // motor direito para frente

digitalWrite (11,LOW); // motor direito

 

} // esta chave fecha o fim do loop

REVERTENDO A MARCHA

É necessário inverter as polarizações da ponte (e do motor, mas sem desmontar o carro para isso, claro. É mais fácil fazer nas instruções no loop.

void loop() { // a chave indica o inicio do loop

digitalWrite (5,HIGH); // motor esquerdo para frente

digitalWrite (6,LOW); // motor esquerdo

digitalWrite (10,HIGH); // motor direito para frente

digitalWrite (11,LOW); // motor direito

 

digitalWrite (5,LOW); // motor esquerdo para trás

digitalWrite (6,HIGH); // motor esquerdo

digitalWrite (10,LOW); // motor direito para trás

digitalWrite (11,HIGH); // motor direito

 

} // esta chave fecha o fim do loop

Pronto, agora o carro vai para frente e para trás?

NÃÃÃÃO !!!!

A placa tem um "relógio" que a faz ocilar a 16 MHz. Executa um ciclo de instrução 16 milhões de vezes por segundo e ele vai passar pelo loop nesta "velocidade"! Podemos dizer que o motor nem tem tempo de iniciar a rotação e já tem que reverter!

Então teremos que dizer a ele quanto tempo deve esperar enquanto anda para frente, antes de reverter a rotação.

     delay(3000); // o tempo é medido em milisegundos, então 3000 milisegundos = 3 segundos

Observe a estrutura da instrução: comando(valor) fim da instrução .

Vamos colocar tempo menor para o movimento para trás. 

void loop() { // a chave indica o inicio do loop

digitalWrite (5,HIGH); // motor esquerdo para frente

digitalWrite (6,LOW); // motor esquerdo

digitalWrite (10,HIGH); // motor direito para frente

digitalWrite (11,LOW); // motor direito

 

delay(3000); // espera 3 segundos antes de passar para a próxima instrução

 

digitalWrite (5,LOW); // motor esquerdo para trás

digitalWrite (6,HIGH); // motor esquerdo

digitalWrite (10,LOW); // motor direito para trás

digitalWrite (11,HIGH); // motor direito

 

delay(2000); // espera 2 segundos antes de passar para a próxima instrução

 

} // esta chave fecha o fim do loop, retorna ao inicio

Agora o carro anda 3 segundos para frente, depois 2 segundos para trás. Aí reinicia o ciclo andando para frente.

111-frente_re

Agora você tem uma idéia de como "conversar" com o Arduino na linguagem C++.

Nosso vocabulário tem, por enquanto, apenas 6 palavras de comando void setup loop pinMode INPUT digitalWrite delay e alguns sinais para organizar as instruções { ( HIGH , LOW ) } ; //

Antes de sair apressadamente em busca das palavras desta linguagem e como usá-las, acompanhe mais um pouco esta "apostilinha".

 


Voltar: https://clpires.comunidades.net/4-montando-uma-maquina
Próxima: 6-parecia fácil, mais conversa com o arduino
Início do arduino
contato: clpires13@gmail.com