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

Nenhum comentário:

Postar um comentário