// Relay pins
#define RELAY1 PB0
#define RELAY2 PB1
#define RELAY3 PB3
#define RELAY4 PB4
#define RELAY5 PB5
#define RELAY6 PB6
// Potentiometer analog pin (simulated current input)
#define CURRENT_INPUT_PIN PA0
void setup() {
Serial.begin(9600);
// Set all relay pins as output
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
pinMode(RELAY5, OUTPUT);
pinMode(RELAY6, OUTPUT);
}
void loop() {
int currentValue = analogRead(CURRENT_INPUT_PIN); // 0–4095
Serial.print("Current Value: ");
Serial.println(currentValue);
// Threshold values (based on 12-bit ADC range)
int level1 = 120; // ~15%
int level2 = 240; // ~30%
int level3 = 360; // ~50%
int level4 = 480; // ~65%
int level5 = 600; // ~80%
int level6 = 720; // ~100%
// Relay logic
digitalWrite(RELAY1, currentValue > level1 ? HIGH : LOW);
digitalWrite(RELAY2, currentValue > level2 ? HIGH : LOW);
digitalWrite(RELAY3, currentValue > level3 ? HIGH : LOW);
digitalWrite(RELAY4, currentValue > level4 ? HIGH : LOW);
digitalWrite(RELAY5, currentValue > level5 ? HIGH : LOW);
digitalWrite(RELAY6, currentValue > level6 ? HIGH : LOW);
delay(200); // short delay for stability
}
Loading
stm32-bluepill
stm32-bluepill