/* STM32 Blue Pill project using the STM32 Arduino Core (stm32duino) */
// Tentukan pin LED, biasanya onboard LED terhubung ke pin PC13
const int ledPin = PC13;
const int accPin = PB12;
const int doortPin = PB13;
const int ambtPin = PB9;
bool accState = false;
bool previousaccState = false;
unsigned long switchOffTime = 0;
void setup() {
// Set pin mode
pinMode(ledPin, OUTPUT);
pinMode(accPin, INPUT);
pinMode(doortPin, INPUT);
pinMode(ambtPin, OUTPUT);
digitalWrite(ambtPin, LOW);
// Initialize serial communication
Serial.begin(9600);
}
void loop() {
// Baca status pin
int accStatus = digitalRead(accPin);
int doortStatus = digitalRead(doortPin);
// Debug print status pin ke Serial Monitor
Serial.print("accPin: ");
Serial.print(accStatus);
Serial.print(" doortPin: ");
Serial.println(doortStatus);
// Cek kondisi: accPin LOW dan doortPin LOW
if (accStatus == LOW && doortStatus == HIGH) {
digitalWrite(ambtPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
// Set ambtPin LOW dan matikan LED
digitalWrite(ambtPin, LOW);
digitalWrite(ledPin, LOW);
}
// Cek kondisi: accPin LOW dan doortPin LOW
if (accStatus == HIGH && doortStatus == LOW) {
digitalWrite(ambtPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
// Set ambtPin LOW dan matikan LED
digitalWrite(ambtPin, LOW);
digitalWrite(ledPin, LOW);
}
// Cek kondisi: accPin LOW dan doortPin LOW
if (accStatus == HIGH && doortStatus == HIGH) {
digitalWrite(ambtPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
// Set ambtPin LOW dan matikan LED
digitalWrite(ambtPin, LOW);
digitalWrite(ledPin, LOW);
}
// Baca status sakelar
accState = digitalRead(accPin) == LOW;
if (accState && !previousaccState) {
// Sakelar dinyalakan, nyalakan LED
digitalWrite(ambtPin, HIGH);
} else if (!accState && previousaccState) {
// Sakelar dimatikan, catat waktu pematian sakelar
switchOffTime = millis();
}
if (!accState && (millis() - switchOffTime >= 10000)) {
// Sudah 1 menit sejak sakelar dimatikan, matikan LED
digitalWrite(ambtPin, LOW);
}
// Simpan status sakelar sebelumnya
previousaccState = accState;
// Tambahkan delay untuk menghindari pembacaan terlalu cepat
//lde
delay(100);
}
Loading
stm32-bluepill
stm32-bluepill