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