#define RPin 11
#define GPin 10
#define BPin 9
#define RvalPin A0
#define GValPin A1
#define BValPin A2
void setup() {
Serial.begin(115200);
Serial.println("Hello, STM32 RGB Control!");
pinMode(RPin, OUTPUT);
pinMode(GPin, OUTPUT);
pinMode(BPin, OUTPUT);
digitalWrite(RPin, LOW);
digitalWrite(GPin, LOW);
digitalWrite(BPin, LOW);
}
void loop() {
// Read potentiometer values (0-1023)
int rVal = analogRead(RvalPin);
int gVal = analogRead(GValPin);
int bVal = analogRead(BValPin);
// Print values to Serial Monitor
Serial.print("R:"); Serial.print(rVal);
Serial.print(" G:"); Serial.print(gVal);
Serial.print(" B:"); Serial.println(bVal);
// Auto-control LEDs: ON if pot > 200 (~1V threshold)
digitalWrite(RPin, rVal > 200 ? HIGH : LOW);
digitalWrite(GPin, gVal > 200 ? HIGH : LOW);
digitalWrite(BPin, bVal > 200 ? HIGH : LOW);
// Handle serial commands (r/g/b for manual override)
if (Serial.available() > 0) {
char cmd = Serial.read();
Serial.print("Cmd: ");
Serial.println(cmd);
switch (cmd) {
case 'r': // Red only
digitalWrite(RPin, HIGH);
digitalWrite(GPin, LOW);
digitalWrite(BPin, LOW);
break;
case 'g': // Green only
digitalWrite(RPin, LOW);
digitalWrite(GPin, HIGH);
digitalWrite(BPin, LOW);
break;
case 'b': // Blue only
digitalWrite(RPin, LOW);
digitalWrite(GPin, LOW);
digitalWrite(BPin, HIGH);
break;
case '0': // All off
digitalWrite(RPin, LOW);
digitalWrite(GPin, LOW);
digitalWrite(BPin, LOW);
break;
}
}
delay(100); // Responsive update rate
}