working led blinking properly well
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user