WIP: keep local changes before merging remote

This commit is contained in:
Filipriec
2025-11-13 14:42:47 +01:00
parent 915c573b27
commit 3c11e1dff8
9 changed files with 320 additions and 47 deletions

View File

@@ -2,58 +2,31 @@
#include "mbed.h"
#define MAXIMUM_BUFFER_SIZE 32
DigitalOut led(LED1);
Ticker ticker;
class Led {
private:
DigitalOut led;
Ticker ticker;
float period;
public:
Led(PinName pin) : led(pin), period(1.0) {
led = 0;
}
void setBlinkPeriod(float period) {
this->period = period;
ticker.detach();
if (period > 0) {
auto us = std::chrono::microseconds(static_cast<long long>(period * 1000000));
ticker.attach(callback(this, &Led::tickerHandler), us);
}
}
void tickerHandler() {
led = !led;
}
};
void toggle_led() { led = !led; }
int main() {
Led myLed(LED1);
static BufferedSerial serial_port(USBTX, USBRX);
serial_port.set_baud(9600);
serial_port.set_format(8, BufferedSerial::None, 1);
char buf[MAXIMUM_BUFFER_SIZE] = {0};
char msg[] = "Zadaj cislicu 0-9:\r\n";
serial_port.write(msg, sizeof(msg));
while(1) {
if (uint32_t num = serial_port.read(buf, sizeof(buf))) {
BufferedSerial serial(USBTX, USBRX);
serial.set_baud(9600);
char buf[32];
char msg[] = "Zadajte cislicu 1-9:\r\n";
serial.write(msg, sizeof(msg));
// Use explicit chrono type for full compatibility
ticker.attach(&toggle_led, std::chrono::seconds(1));
while (1) {
if (uint32_t num = serial.read(buf, sizeof(buf))) {
char c = buf[0];
if (c >= '0' && c <= '9') {
int digit = c - '0';
float newPeriod = (float)digit;
myLed.setBlinkPeriod(newPeriod);
serial_port.write(buf, num);
if (c >= '1' && c <= '9') {
int period = c - '0';
ticker.detach();
ticker.attach(&toggle_led, std::chrono::seconds(period));
}
}
ThisThread::sleep_for(150ms);
ThisThread::sleep_for(100ms);
}
}