const int ledPins[8] = {PA5, PA6, PB6, PB7, PB8, PB9};
const int buttonPin = PA0;
unsigned long previousMillis = 0;
const long interval = 1000;
int counter = 0;
int lastButtonState = HIGH;
bool buttonPressed = false;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Двоичный секундомер запущен");
displayBinary(counter);
}
void loop() {
handleButton();
handleTimer();
}
void handleButton() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
delay(50);
if (digitalRead(buttonPin) == LOW) {
counter = 0;
displayBinary(counter);
Serial.println("Сброс по кнопке");
}
}
lastButtonState = buttonState;
}
void handleTimer() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
counter++;
if (counter > 255) {
counter = 0;
}
displayBinary(counter);
Serial.print("Значение: ");
Serial.print(counter);
Serial.print(" (0b");
for (int i = 7; i >= 0; i--) {
Serial.print(bitRead(counter, i));
}
Serial.println(")");
}
}
void displayBinary(int number) {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], (number >> i) & 1);
}
}Loading
st-nucleo-c031c6
st-nucleo-c031c6