Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Automação Industrial / Programação de Sistemas Supervisórios / Aula
O foco dessa prática não é ensinar a programar em Arduino, mas como você já tem um bom conhecimento em programação não será difícil entender o código. Desse modo, vou apresentá-lo, com todos os comentários para facilitar o entendimento e a manutenção.
Código 1 – A programação do Arduino#include <SimpleModbusSlave.h> // inclusão da biblioteca do protocolo modbus
//Definindo variaveis e seus respectivos pinos no arduino
//Digitais
const int led_B = 3; //pinos digitais onde está ligado no arduino
const int led_G = 4;
const int led_R = 5;
const int Botao1 = 6; //
const int Botao2 = 7; //
const int buzzer = 2;
//Analogicos
const int LM35 = A0; //pinos analógicos onde está ligado no arduino
const int Potenciometro = A1;
const int LDR = A2;
//----------------------------------------------------------------
//Cria um vetor com todos os dados que serão enviados pelo protocolo
enum
{
Led_R,// endereço offset 0
Led_G, // endereço offset 1
Led_B, // endereço offset 2
Buzzer, // endereço offset 3
EstadoBotao1, // endereço offset 4
EstadoBotao2, // endereço offset 5
temp,// endereço offset 6
pot,// endereço offset 7
luz, // endereço offset 8
HOLDING_REGS_SIZE
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
// No setup definimos as variaveis que são entradas e saídas
void setup() {
Serial.begin(9600); // inicia a porta serial
modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);// configura o protocolo modbus
modbus_update_comms(9600, SERIAL_8N1, 1);
pinMode(Buzzer, OUTPUT);// configuraos pinos como entrada ou saída
pinMode(led_R, OUTPUT);
pinMode(led_G, OUTPUT);
pinMode(led_B, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(Botao2, INPUT);
}
void loop(){
modbus_update();
//Leitura dos botões
holdingRegs[EstadoBotao1] = digitalRead(Botao1);
holdingRegs[EstadoBotao2] = digitalRead(Botao2);
//Leitura dos sensores
holdingRegs[luz] = analogRead(LDR);// Ler valor do sensor de luminosidade e envia para o ScadaBR
holdingRegs[pot] = analogRead(Potenciometro);// Ler valor do potenciometro e envia para o ScadaBR
holdingRegs[temp] = analogRead(LM35);// Ler valor do sensore de temperatura e envia para o ScadaBR, posteriormente deve ser configurado no ScadaBR a conversão de |temp * 0.1075268817| para apresentar o valor em °C da forma correta
//Recebendo os dados digitais
digitalWrite(buzzer, holdingRegs[Buzzer]); //recebe o dado enviado pelo ScadaBr e envia para porta do arduino.
digitalWrite(led_R, holdingRegs[Led_R]);
digitalWrite(led_G, holdingRegs[Led_G]);
digitalWrite(led_B, holdingRegs[Led_B]);
}
A programação do Arduino é feita em sua própria IDE (Integrated Development Environment), mas também tem suporte para ser usada em outras. Após digitar o código e conectar sua placa, você deverá fazer algumas configurações no menu ferramentas, lá você deve configurar a placa (Mega), o processador (Atmega2560) e a porta. A seleção da porta vai depender em geral da escolha computador, mas desde já adianto que não é a COM1, o ideal é verificar quais portas existem antes de colocar a placa, e ver qual passa a existir quando a placa é conectada, pois é nesse instante que o computador atribui a ela uma porta. Na Figura 14 observe o menu. Após a configuração, basta clicar no ícone
Versão 5.3 - Todos os Direitos reservados