working led blinking properly well

This commit is contained in:
Filipriec
2025-10-09 20:52:20 +02:00
parent de1b818732
commit d8dad2fc22
9 changed files with 379 additions and 25 deletions

View File

@@ -1,45 +1,50 @@
// main.cpp
#include "mbed.h"
// Blinking rate in milliseconds
#define BLINKING_RATE 500ms
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalIn button(PC_13);
void set_led_pattern(int pattern) {
switch (pattern) {
case 0:
led1 = 1; led2 = 0; led3 = 0;
break;
case 1:
led1 = 0; led2 = 1; led3 = 0;
break;
case 2:
led1 = 0; led2 = 0; led3 = 1;
break;
int another_press(int press_num) {
press_num += 1;
if (press_num >= 8) {
press_num = 0;
};
return press_num;
}
void set_led(int number) {
if ((number & 1) == 1){
led1 = 1;
}
else if ((number & 2) == 2){
led2 = 1;
}
else if ((number & 3) == 4){
led3 = 1;
}
}
int main()
{
int pattern = 0;
set_led_pattern(pattern);
int num_presses = 0;
while (true) {
if (button == 0){
pattern = (pattern + 1) % 3;
set_led_pattern(pattern);
led1 = 0;
led2 = 0;
led3 = 0;
while (button == 0) {
ThisThread::sleep_for(10ms);
}
if (button == 0) {
num_presses = another_press(num_presses);
set_led(num_presses);
ThisThread::sleep_for(150ms);
while (button == 0) {
ThisThread::sleep_for(10ms);
}
}
ThisThread::sleep_for(150ms);
}
}