segunda-feira, 1 de setembro de 2025

EX05 - Arduino Finder Opta - Digital Inputs and USB-C Port

O Opta possui uma porta USB-C integrada que pode ser usada para programar o microcontrolador do dispositivo e para registro de dados com dispositivos de armazenamento em massa, como pen drives USB.

Entradas Digitais: A faixa de tensão de entrada para cada terminal de entrada digital é a seguinte:
  • Faixa de tensão de entrada : 0 a +24 VDC
As entradas digitais Opta também suportam sensores de nível lógico de 0 a +10 VCC.
Os terminais de entrada podem ser usados ​​por meio das funções integradas da linguagem de programação do Arduino. Para usar os terminais de entrada como entradas digitais:
  • Adicione a instrução na função pinMode (pinName, INPUT) do seu esboço .setup()
O esboço abaixo mostra como monitorar estados digitais nos terminais de entrada I1, I2e do Opta I3. Ele inicializa uma conexão serial, obtém leituras de cada terminal definido e as interpreta como estados digitais HIGH ou LOW. Esses estados são então enviados para o Monitor Serial do Arduino IDE. 
/**
Opta's Digital Input Terminals
Name: opta_digital_inputs_and_USB-C_Port_example.ino
Purpose: This sketch demonstrates the use of I1, I2, and I3 input
terminals as digital inputs and USB-C Port on Opta.
@author Prof. Sinésio Raimundo Gomes
@version 2.0 23/09/25
*/
// Array of terminals.
const int TERMINALS[] = {A0, A1, A2};
// Number of terminals.
const int NUM_PINS = 3;
void setup() {
// Initialize serial communication at 9600 bits per second.
Serial.begin(9600);
// Set the mode of the pins as digital inputs.
for (int i = 0; i < NUM_PINS; i++) {
pinMode(TERMINALS[i], INPUT);
}
}
void loop() {
// Loop through each of the terminal, read the terminal digital value, and print the result.
for (int i = 0; i < NUM_PINS; i++) {
readAndPrint(TERMINALS[i], i + 1);
}
// Delay for a second before reading the terminals again.
delay(1000);
}
// This function reads the digital value from the specified pin and prints the result.
void readAndPrint(int terminal, int terminalNumber) {
// Read the input value from the digital pin.
int terminalValue = digitalRead(terminal);
// Print the terminal value.
Serial.print("I");
Serial.print(terminalNumber);
Serial.print(" value: ");
Serial.println(terminalValue);
}
As leituras de estado são repetidas a cada segundo, permitindo monitorar as alterações em tempo real.

Aplicação 05: USB-C Port do Opta .
Nome: Opta's_USB-C_Port.ino .
Objetivo: Este esboço demonstra o uso do USB-C Port dos dispositivos Opta.

© Direitos de autor. 2025: Gomes; Sinésio Raimundo. Última atualização: 26/09/2025

domingo, 31 de agosto de 2025

EX04 - Arduino Finder Opta - User Relays

Os dispositivos Opta (todas as variantes) têm quatro relés normalmente abertos (NA) de 10 A capazes de atuar em cargas com uma tensão nominal de 250 VCA e até uma tensão de comutação máxima de 400 VCA.

Os relés de saída podem ser usados ​​por meio das funções integradas da linguagem de programação Arduino. Para usar um relé de saída como saída digital:
  • Adicione a instrução na função pinMode (relayOutput, OUTPUT)do seu esboço .setup()
  • Para alterar o status do relé de saída ( LOW ou HIGH):
  • Adicione seus esboços digitalWrite (relayOutput, LOW) ou digitalWrite (relayOutput, HIGH) instruções.
As saídas de relé programáveis ​​pelo usuário são mapeadas conforme descrito na tabela a seguir:
Saída de relé Opta™Mapeamento de pinos do Arduino
OUTPUT 1D0/RELAY1
OUTPUT 2D1/RELAY2
OUTPUT 3D2/RELAY3
OUTPUT 4D3/RELAY4
O esboço abaixo testa os relés de saída e os LEDs de status de um dispositivo Opta™. O esboço inicializa as saídas de relé e os LEDs de usuário como saídas; em seguida, o esboço liga e desliga cada relé de saída e seu LED de status correspondente em sequência, com um atraso de um segundo entre cada mudança de estado. Isso nos permite verificar visualmente o funcionamento correto dos relés de saída e dos LEDs de usuário.
/*
Opta's Output Relays
Name: opta_outputs_relays_example.ino
Purpose: This sketch tests the output relays of Opta devices.
@author Prof. Sinésio Raimundo Gomes
@version 2.0 22/09/25
*/
// Arrays of relays and user LEDs
int relayOutputs[] = {D0, D1, D2, D3};
int userLeds[] = {LED_D0, LED_D1, LED_D2, LED_D3};
// Compute the number of relays/LEDs based on the size of the relayPins array
int numRelays = 4;
void setup() {
for(int i = 0; i < numRelays; i++) {
// Sets the mode of the relays and user LEDs as outputs
pinMode(relayOutputs[i], OUTPUT);
pinMode(userLeds[i], OUTPUT);
}
}
void loop() {
// For each relay/user LED: turn it on, wait for a second, turn it off, wait for another second
for(int i = 0; i < numRelays; i++) {
digitalWrite(relayOutputs[i], HIGH);
digitalWrite(userLeds[i], HIGH);
delay(1000);
digitalWrite(relayOutputs[i], LOW);
digitalWrite(userLeds[i], LOW);
delay(1000);
}
}

Aplicação 04: User Relays do Opta .
Nome: Opta's_Output_Relays.ino .
Objetivo: Este esboço demonstra o uso dos Relés de saída dos dispositivos Opta.

© Direitos de autor. 2025: Gomes; Sinésio Raimundo. Última atualização: 26/09/2025

segunda-feira, 25 de agosto de 2025

EX03 - Arduino Finder Opta - User Button

Todos os dispositivos Opta possuem um botão programável pelo usuário integrado; este botão é mapeado como BTN_USER no núcleo Opta. O botão possui um resistor pull-up interno, o que significa que seu valor padrão (enquanto não estiver pressionado) é HIGH.
O botão programável pelo usuário pode ser usado por meio das funções integradas da linguagem de programação Arduino.
Para usar o botão do usuário, primeiro defina-o como uma entrada digital: Adicione a instrução na função pinMode(BTN_USER, INPUT)do seu esboço .setup( )
Para ler o status do botão do usuário: Adicione as digitalRead (BTN_USER) instruções no seu esboço.
O esboço abaixo mostra como usar o botão de usuário programável da Opta para controlar a sequência de LEDs de D0 status D3.

/**
Opta's User Button Example
Name: opta_user_button_example.ino
Purpose: Configures Opta's user-programmable button to control the user LEDs.
This example includes debouncing for the user button.
@author Prof. Sinésio Raimundo Gomes
@version 2.0 23/09/25
*/
// Current and previous state of the button.
int buttonState = 0;
int lastButtonState = 0;
// Counter to keep track of the LED sequence.
int counter = 0;
// Variables to implement button debouncing.
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50; // In ms
// Array to store LED pins.
int LEDS[] = {LED_D0, LED_D1, LED_D2, LED_D3};
int NUM_LEDS = 4;
void setup() {
// Initialize Opta user LEDs.
for(int i = 0; i < NUM_LEDS; i++) {
pinMode(LEDS[i], OUTPUT);
}
pinMode(BTN_USER, INPUT);
}
void loop() {
int reading = digitalRead(BTN_USER);
// Check if button state has changed.
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
// Debouncing routine.
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
// Only increment the counter if the new button state is HIGH.
if (buttonState == HIGH) {
if(counter < NUM_LEDS){
counter++;
}
else{
counter = 0;
}
}
}
}
// Save the current state as the last state, for next time through the loop.
lastButtonState = reading;
// Control LED states.
changeLights();
}
/**
Control the status LEDs based on a counter value.
Turns off all LEDs first, then turns on the LED
corresponding to the current counter value.
@param None.
*/
void changeLights() {
// Turn off all user LEDs.
for(int i = 0; i < NUM_LEDS; i++) {
digitalWrite(LEDS[i], LOW);
}
// Turn on the selected user LED.
if(counter > 0) {
digitalWrite(LEDS[counter - 1], HIGH);
}
}

O esboço inicializa o estado dos LEDs e do botão do usuário, juntamente com variáveis ​​para o debouncing do botão. Este esboço lê continuamente o estado do botão do usuário, debouncing a entrada do botão para evitar disparos falsos devido a ruído elétrico e incrementa um contador cada vez que o botão é pressionado.
Em seguida, ele passa o controle para a changeLights ( ) função. Esta função primeiro desliga todos os LEDs e, em seguida, dependendo do valor do contador, liga o LED correspondente. A cada pressionamento de botão, o contador é incrementado e um LED diferente acende, retornando ao início após o último LED.
Agora você deve conseguir controlar a sequência de LEDs de status pressionando o botão de usuário programável do Opta.

Aplicação 03: User Button do Opta .
Nome: Opta_User_Button_example.ino .
Objetivo: Este esboço demonstra o uso do botão de usuário dos dispositivos Opta.

© Direitos de autor. 2025: Gomes; Sinésio Raimundo. Última atualização: 26/09/2025