Sikil

Committer:
maetugr
Date:
Fri Jan 15 09:51:57 2021 +0000
Revision:
0:ca4ecd424807
LED brightness works asynchronously

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maetugr 0:ca4ecd424807 1 /* Sikil
maetugr 0:ca4ecd424807 2 */
maetugr 0:ca4ecd424807 3
maetugr 0:ca4ecd424807 4 #include "mbed.h"
maetugr 0:ca4ecd424807 5 #include "platform/mbed_thread.h"
maetugr 0:ca4ecd424807 6
maetugr 0:ca4ecd424807 7 int main()
maetugr 0:ca4ecd424807 8 {
maetugr 0:ca4ecd424807 9 DigitalOut led(LED1);
maetugr 0:ca4ecd424807 10 Serial computer(USBTX, USBRX);
maetugr 0:ca4ecd424807 11
maetugr 0:ca4ecd424807 12 computer.baud(9600);
maetugr 0:ca4ecd424807 13 computer.printf("Press 'u' to turn LED brightness up, 'd' to turn it down\n");
maetugr 0:ca4ecd424807 14
maetugr 0:ca4ecd424807 15 float brightness{1.f};
maetugr 0:ca4ecd424807 16 static constexpr int duty_cycle_ms{10};
maetugr 0:ca4ecd424807 17
maetugr 0:ca4ecd424807 18 while (true) {
maetugr 0:ca4ecd424807 19 if (computer.readable()) {
maetugr 0:ca4ecd424807 20 char letter = computer.getc();
maetugr 0:ca4ecd424807 21
maetugr 0:ca4ecd424807 22 if((letter == 'u') && (brightness < 1.f)) {
maetugr 0:ca4ecd424807 23 brightness += 0.1f;
maetugr 0:ca4ecd424807 24 led = brightness;
maetugr 0:ca4ecd424807 25 }
maetugr 0:ca4ecd424807 26
maetugr 0:ca4ecd424807 27 if((letter == 'd') && (brightness > 0.f)) {
maetugr 0:ca4ecd424807 28 brightness -= 0.1f;
maetugr 0:ca4ecd424807 29 led = brightness;
maetugr 0:ca4ecd424807 30 }
maetugr 0:ca4ecd424807 31 }
maetugr 0:ca4ecd424807 32
maetugr 0:ca4ecd424807 33 led = 1;
maetugr 0:ca4ecd424807 34 thread_sleep_for(brightness * duty_cycle_ms);
maetugr 0:ca4ecd424807 35 led = 0;
maetugr 0:ca4ecd424807 36 thread_sleep_for((1.f - brightness) * duty_cycle_ms);
maetugr 0:ca4ecd424807 37 }
maetugr 0:ca4ecd424807 38 }