A programação do microcontrolador Arduino é feita através de uma interface gráfica chamada Arduino Software (IDE) que pode ser baixada no endereço https://www.arduino.cc/en/Main/Software. Há versões para ambientes Windows, Mac e linux. No site também encontrase diversos tutoriais de instalação além de um fórum onde podese tirar dúvidas relacionadas à programação ou dificuldades com projetos. Além da página oficial inúmeros outros fóruns auxiliam na solução de problemas envolvendo projetos com Arduino.
Após a instalação, o IDE apresenta um aspecto parecido com o apresentado abaixo, que pode depender da versão do software e do ambiente (Windows, Mac ou linux). A figura mostra as principais funções e comandos da janela do IDE. Figura 82 Interface gráfica Arduíno IDE. Fonte: http://projetoardroid.blogspot.com.br/p/arduino.html
Com o IDE instalado e aberto devese selecionar o modelo de Arduino usado. Para isso selecionase na interface o menu (traduzido para língua portuguesa): ferramentas → placa → Arduino Uno (modelo usado neste projeto). A figura abaixo mostra esse procedimento em uma interface em inglês.
Figura 83 Seleção do modelo de Arduino. Fonte: http://www.hobbytronics.co.uk/arduinoinstallation
Após selecionar o modelo basta copiar o código FOTODUINO_control_1_0.ino (apêndice B) utilizado neste projeto e colar no ambiente de programação salvandoo em seguida. A figura abaixo mostra o aspecto da interface com o código do projeto já pronto.
Figura 84 Interface com o programa do projeto ainda com nome provisório.
Com o código salvo podemos carregálo no Arduino através do botão carregar (upload
erros de sintaxe. Se nenhum erro for encontrado, a compilação gera o software que será carregado no Arduino.
Caso você tente carregar um código no Arduino sem que o amperímetro esteja conectado ao computador surgirá uma mensagem de erro. Se for o caso conecte e tente novamente. Também poderá surgir mensagens de erro se a placa ou a porta serial selecionada não forem corretas. Verifique o modelo de placa selecionada e a porta, se necessário tente outra porta
.
Se tudo ocorrer adequadamente, aparecerá uma mensagem com o tamanho do arquivo e outros detalhes no console do compilador. A imagem abaixo mostra o botão de carregamento e as mensagens que indicam o fim do carregamento. Figura 85 Mensagens de carregamento do IDE. Fonte: https://www.pololu.com/docs/0J61/6.2
Alternativamente é possível fazer a programação com aplicativos online. Um destes, chamado Codebender (https://codebender.cc/home), roda em navegadores de internet sem a necessidade de instalação no computador. Ao acessar o site você será orientado a cadastrarse, depois selecionar a placa, que já deve estar conectada, depois disso é só usar as ferramentas do site para carregar o programa no Arduino. A figura abaixo mostra o aspecto da interface gráfica do Codebender
rodando no navegador Chrome em um computador com Ubuntu linux.
Figura 86 Interface da página do Codebender.
3.2. FOTODUINO_control_1_0.ino
O código FOTODUINO_control_1_0.ino. ao ser compilado e carregado no microcontrolador, pelo Arduino IDE é responsável por todo processamento de sinais no Arduino, comando das lâmpadas, da fonte AT e comunicação com o computador. Diferentemente de um programa típico de computador, o código no Arduino roda em um loop contínuo, onde o programa principal e as subrotinas são executadas repetidamente, permitindo que funcione dinamicamente.
O programa compilado roda no microcontrolador Atmega328 do Arduino e é composto por vários blocos de comandos que descreveremos a seguir (No apêndice B o código aparece com comentários ao lado das linhas de comando). O diagrama da figura abaixo mostra a função de cada um dos blocos do código. No primeiro bloco de Título e comentários iniciais (que são desconsiderados pelo compilador) temos informações sobre a versão e indicações sobre a compilação. No segundo bloco, Definição de variáveis
, temos a declaração de variáveis utilizadas
pelo programa. Em seguida, no bloco Função principal
, que roda apenas uma vez
na inicialização do microcontrolador, e ainda uma interrupção para a leitura da porta analógica A0 que recebe o sinal do amperímetro e o laço principal que roda enquanto o Arduino estiver ligado.
Figura 87 Diagrama de blocos do código do Arduino.
Na função principal temos a configuração da comunicação serial. Neste caso, tanto o código do Arduino quanto o código do Processing devem ter a comunicação serial configurada, com a mesma taxa de transferência (115200). A configuração do pino de PWM e dos pinos de controle da lâmpadas como saídas digitais (no caso dos pinos das lâmpadas) também é realizada aqui, juntamente com os registradores responsáveis pelo controle do pulso PWM (para maiores informações sobre esses registradores e sua configuração acesse
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM). Por último são configurados os registradores que controlam o filtro de 60 Hz.
Após a Função principal temos um pequeno bloco de comandos com uma função (ISR(TIMER1_COMPA_vect)
) responsável pela interrupção do código e
leitura do pino A0 ligado ao amperímetro. A leitura é armazenada na variável “ val” definida anteriormente e a variável “isNewVal”
é definida como verdadeira (valor = 1)
indicando ao programa que uma nova leitura foi realizada para que seu valor seja tradado pelo filtro de 60 Hz e encaminhado à porta serial para o envio ao computador.
No laço principal, vemos o bloco do filtro de 60 Hz (obtido de
https://sensorseverywhere.wordpress.com/2012/01/10/60hzfilterworks/), que remove o sinal das fontes de alimentação provenientes das redes elétricas no entorno que são uma importante fonte de interferência. Após a filtragem, o sinal é
encaminhado, pelo comando Serial.println(), ao computador pela porta serial. Ao mesmo tempo, o Arduino monitora a porta serial pelo comando Serial.available(), aguardando comandos para ligar ou desligar as lâmpadas proveniente da interface de controle.