/********* 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: PWM LED
- Source Code NOT compiled for: Arduino Uno
- Source Code created on: 2025-10-12 12:16:46
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* 1) Use only core Arduino libraries; no hardware; */
/* match setup() and loop(). 2) Reference */
/* PROJECT_188; keep requirements generic until */
/* components are defined. 3) Tie requirements to */
/* LIBRARIES and PROTOTYPES; avoid sensor/actuator */
/* claims. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void reportStatus(void);
#ifndef LED_PIN
#define LED_PIN 9
#endif
#if (LED_PIN == 3) || (LED_PIN == 5) || (LED_PIN == 6) || (LED_PIN == 9) || (LED_PIN == 10) || (LED_PIN == 11)
#define LED_PWM_AVAILABLE 1
#else
#define LED_PWM_AVAILABLE 0
#endif
static uint8_t currentBrightness = 0; // internal brightness tracking (0-255 for PWM; 0/1 for non-PWM)
void setupLEDModule();
void ledOn();
void ledOff();
void ledToggle();
void ledSetBrightness(uint8_t level);
void demoBlink();
void setup(void)
{
// Initialize LED module and basic serial for status
setupLEDModule();
ledOff();
Serial.begin(9600);
Serial.println("PROJECT_188 UNO-only LED API initialized");
reportStatus();
}
void loop(void)
{
static unsigned long ledPrevMillis = 0;
unsigned long now = millis();
if (now - ledPrevMillis >= 500) {
ledPrevMillis = now;
ledToggle();
}
}
// Implementations
void setupLEDModule() {
pinMode(LED_PIN, OUTPUT);
if (LED_PWM_AVAILABLE) {
analogWrite(LED_PIN, 0);
currentBrightness = 0;
} else {
digitalWrite(LED_PIN, LOW);
currentBrightness = 0;
}
}
void ledOn() {
if (LED_PWM_AVAILABLE) {
currentBrightness = 255;
analogWrite(LED_PIN, 255);
} else {
digitalWrite(LED_PIN, HIGH);
currentBrightness = 1;
}
}
void ledOff() {
if (LED_PWM_AVAILABLE) {
currentBrightness = 0;
analogWrite(LED_PIN, 0);
} else {
digitalWrite(LED_PIN, LOW);
currentBrightness = 0;
}
}
void ledToggle() {
if (LED_PWM_AVAILABLE) {
currentBrightness = (currentBrightness == 0) ? 255 : 0;
analogWrite(LED_PIN, currentBrightness);
} else {
currentBrightness = (currentBrightness == 0) ? 1 : 0;
digitalWrite(LED_PIN, currentBrightness ? HIGH : LOW);
}
}
void ledSetBrightness(uint8_t level) {
if (level > 255) level = 255;
if (LED_PWM_AVAILABLE) {
currentBrightness = level;
analogWrite(LED_PIN, level);
} else {
if (level > 0) {
digitalWrite(LED_PIN, HIGH);
currentBrightness = 1;
} else {
digitalWrite(LED_PIN, LOW);
currentBrightness = 0;
}
}
}
void demoBlink() {
// Optional demonstration of the API (blocking sequence)
ledOn();
delay(100);
ledOff();
delay(100);
ledToggle();
delay(100);
ledToggle();
}
void reportStatus(void)
{
Serial.println("PROJECT_188 status: OK");
Serial.print("LED_PIN: ");
Serial.println(LED_PIN);
Serial.print("PWM available: ");
Serial.println(LED_PWM_AVAILABLE ? "yes" : "no");
Serial.println("API: ledOn(), ledOff(), ledToggle(), ledSetBrightness(uint8_t), setupLEDModule()");
}
/* END CODE */