const int BUTTON_PIN = PC13;
const int LED_PIN = PA5;
void setup() {
pinMode(LED_PIN, OUTPUT);
// ВАЖНО: INPUT, а не INPUT_PULLUP!
// Внутренняя подтяжка (~40 кОм) исказит работу RC-фильтра.
// Подтяжку уже делает наш резистор R1 (10 кОм) к питанию 3.3В
// через кнопку (в разомкнутом состоянии).
//
// НО! В схеме выше R1 соединяет кнопку с PC13, а подтяжка к 3.3В
// происходит через внутреннюю подтяжку МК. Поэтому используем INPUT_PULLUP,
// но учитываем, что R1 и внутренний резистор работают параллельно.
//
// Для ИДЕАЛЬНОЙ работы RC-фильтра лучше подключить R1 к 3.3В явно:
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
// Просто читаем пин. Дребезга уже нет - он убран аппаратно.
if (digitalRead(BUTTON_PIN) == LOW) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}Loading
st-nucleo-c031c6
st-nucleo-c031c6