CCCPaste

**Input Monitor** rev_01

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: **Input Monitor**
	- Source Code NOT compiled for: Arduino Uno
	- Source Code created on: 2025-02-15 20:53:00

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* The system shall initialize connected components */
	/* and execute a loop that monitors input signals, */
	/* triggering specific actions based on user */
	/* interactions with the hardware. */
/****** END SYSTEM REQUIREMENTS *****/

/* START CODE */

/****** DEFINITION OF LIBRARIES *****/
#include  // Added to support Keyboard functionality

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs(void); // Function prototype for updating outputs

/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t myLED_LED_PIN_D2 = 2; // LED pin
const int dah = 3;                  // Declaring paddle input pin for dah
const int dit = 4;                  // Declaring paddle input pin for dit (Updated to avoid conflict)

/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
/***** used to store raw data *****/
bool myLED_LED_PIN_D2_rawData = 0;

/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
/***** used to store data after characteristic curve transformation *****/
float myLED_LED_PIN_D2_phyData = 0.0;

int previousdahState = HIGH; 
int previousditState = HIGH; 

void setup(void)
{
    // Initialize connected components
    pinMode(myLED_LED_PIN_D2, OUTPUT);
    
    // Declare the inputs as input_pullup
    pinMode(dah, INPUT_PULLUP);  
    pinMode(dit, INPUT_PULLUP);  
    Keyboard.begin(); // Initialize Keyboard library
}

void loop(void)
{
    // Execute a loop that monitors input signals
    updateOutputs(); // Refresh output data

    // Checking the state of the inputs
    int dahState = digitalRead(dah);
    int ditState = digitalRead(dit);

    // Trigger specific actions based on user interactions
    // Replaces left paddle input with dit using "[" as defined by VBand website
    if (dahState == LOW && previousdahState == HIGH) {
        // and it's currently pressed:
        Keyboard.press(93);
        delay(50);
    }
    if (dahState == HIGH && previousdahState == LOW) {
        // and it's currently released:
        Keyboard.release(93);
        delay(50);
    }

    // Replaces right paddle input with dah using "]" as defined by VBand website
    if (ditState == LOW && previousditState == HIGH) {
        // and it's currently pressed:
        Keyboard.press(91);
        delay(50);
    }
    if (ditState == HIGH && previousditState == LOW) {
        // and it's currently released:
        Keyboard.release(91);
        delay(50);
    }

    // Update previous states
    previousdahState = dahState;
    previousditState = ditState;
}

void updateOutputs()
{
    digitalWrite(myLED_LED_PIN_D2, myLED_LED_PIN_D2_rawData);
}

/* END CODE */