Pieter Vandevoorde
/
mbed-os-example-red_green_blue
blinky with 3 colors
Fork of mbed-os-example-mbed5-blinky by
main.cpp@19:ff7ac8de56f9, 2018-01-06 (annotated)
- Committer:
- Pieter56
- Date:
- Sat Jan 06 11:27:36 2018 +0000
- Revision:
- 19:ff7ac8de56f9
- Parent:
- 18:d15cf1cad4c9
Test versie
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jonathan Austin |
0:2757d7abb7d9 | 1 | #include "mbed.h" |
Pieter56 | 19:ff7ac8de56f9 | 2 | #include "Thread.h" |
Pieter56 | 19:ff7ac8de56f9 | 3 | |
Pieter56 | 19:ff7ac8de56f9 | 4 | // For FRDM board K64F |
Pieter56 | 19:ff7ac8de56f9 | 5 | #if defined TARGET_K64F |
Pieter56 | 19:ff7ac8de56f9 | 6 | #define button_pressed 0 |
Pieter56 | 19:ff7ac8de56f9 | 7 | #define led_on 0 |
Pieter56 | 19:ff7ac8de56f9 | 8 | #define led_off 1 |
Pieter56 | 19:ff7ac8de56f9 | 9 | #define USERBUTTON SW2 |
Pieter56 | 19:ff7ac8de56f9 | 10 | #define RED_LED LED1 |
Pieter56 | 19:ff7ac8de56f9 | 11 | #define BLUE_LED LED2 |
Pieter56 | 19:ff7ac8de56f9 | 12 | #define GREEN_LED LED3 |
Pieter56 | 19:ff7ac8de56f9 | 13 | #endif |
Jonathan Austin |
0:2757d7abb7d9 | 14 | |
Pieter56 | 19:ff7ac8de56f9 | 15 | // For NUCLEO-F429ZI |
Pieter56 | 19:ff7ac8de56f9 | 16 | #if defined TARGET_STM32F429ZI |
Pieter56 | 19:ff7ac8de56f9 | 17 | #define button_pressed 1 |
Pieter56 | 19:ff7ac8de56f9 | 18 | #define led_on 1 |
Pieter56 | 19:ff7ac8de56f9 | 19 | #define led_off 0 |
Pieter56 | 19:ff7ac8de56f9 | 20 | #define USERBUTTON USER_BUTTON |
Pieter56 | 19:ff7ac8de56f9 | 21 | #define RED_LED LED3 |
Pieter56 | 19:ff7ac8de56f9 | 22 | #define BLUE_LED LED2 |
Pieter56 | 19:ff7ac8de56f9 | 23 | #define GREEN_LED LED1 |
Pieter56 | 19:ff7ac8de56f9 | 24 | #endif |
Pieter56 | 19:ff7ac8de56f9 | 25 | |
Pieter56 | 19:ff7ac8de56f9 | 26 | DigitalOut red_led(RED_LED, led_off); // RED |
Pieter56 | 19:ff7ac8de56f9 | 27 | DigitalOut green_led(GREEN_LED, led_off); // GREEN |
Pieter56 | 19:ff7ac8de56f9 | 28 | DigitalOut blue_led(BLUE_LED, led_off); // BLUE |
Pieter56 | 19:ff7ac8de56f9 | 29 | DigitalIn button(USERBUTTON); |
Pieter56 | 19:ff7ac8de56f9 | 30 | |
Jonathan Austin |
1:846c97078558 | 31 | // main() runs in its own thread in the OS |
Jonathan Austin |
1:846c97078558 | 32 | // (note the calls to Thread::wait below for delays) |
Pieter56 | 18:d15cf1cad4c9 | 33 | |
Pieter56 | 19:ff7ac8de56f9 | 34 | // Connect to serial USB |
Pieter56 | 19:ff7ac8de56f9 | 35 | Serial pc(USBTX, USBRX, 115200); |
Pieter56 | 19:ff7ac8de56f9 | 36 | |
Pieter56 | 19:ff7ac8de56f9 | 37 | void led_thread() { |
Pieter56 | 18:d15cf1cad4c9 | 38 | uint16_t color = 0; |
Jonathan Austin |
0:2757d7abb7d9 | 39 | while (true) { |
Pieter56 | 18:d15cf1cad4c9 | 40 | color++; |
Pieter56 | 18:d15cf1cad4c9 | 41 | color = color & 0x7; |
Pieter56 | 19:ff7ac8de56f9 | 42 | red_led = color & 0x1; |
Pieter56 | 19:ff7ac8de56f9 | 43 | green_led = color & 0x2; |
Pieter56 | 19:ff7ac8de56f9 | 44 | pc.printf("Color is: %d\r\n", color); |
Pieter56 | 19:ff7ac8de56f9 | 45 | Thread::wait(1000); |
Jonathan Austin |
0:2757d7abb7d9 | 46 | } |
Jonathan Austin |
0:2757d7abb7d9 | 47 | } |
Jonathan Austin |
1:846c97078558 | 48 | |
Pieter56 | 19:ff7ac8de56f9 | 49 | |
Pieter56 | 19:ff7ac8de56f9 | 50 | int main() { |
Pieter56 | 19:ff7ac8de56f9 | 51 | //Create a thread to execute the function led_thread |
Pieter56 | 19:ff7ac8de56f9 | 52 | Thread::Thread thread1; |
Pieter56 | 19:ff7ac8de56f9 | 53 | thread1.start(&led_thread); |
Pieter56 | 19:ff7ac8de56f9 | 54 | uint8_t b_reg = 0; |
Pieter56 | 19:ff7ac8de56f9 | 55 | |
Pieter56 | 19:ff7ac8de56f9 | 56 | // Main thread |
Pieter56 | 19:ff7ac8de56f9 | 57 | while (true) { |
Pieter56 | 19:ff7ac8de56f9 | 58 | if (button_pressed == button) { |
Pieter56 | 19:ff7ac8de56f9 | 59 | b_reg = b_reg << 1; |
Pieter56 | 19:ff7ac8de56f9 | 60 | b_reg |= 1; |
Pieter56 | 19:ff7ac8de56f9 | 61 | if ((b_reg & 0x17) == 0x17) { |
Pieter56 | 19:ff7ac8de56f9 | 62 | blue_led = led_on; |
Pieter56 | 19:ff7ac8de56f9 | 63 | pc.putc('*'); |
Pieter56 | 19:ff7ac8de56f9 | 64 | } else { |
Pieter56 | 19:ff7ac8de56f9 | 65 | pc.putc('-'); |
Pieter56 | 19:ff7ac8de56f9 | 66 | } |
Pieter56 | 19:ff7ac8de56f9 | 67 | } |
Pieter56 | 19:ff7ac8de56f9 | 68 | else { |
Pieter56 | 19:ff7ac8de56f9 | 69 | b_reg = 0; |
Pieter56 | 19:ff7ac8de56f9 | 70 | blue_led = led_off; |
Pieter56 | 19:ff7ac8de56f9 | 71 | } |
Pieter56 | 19:ff7ac8de56f9 | 72 | Thread::wait(100); |
Pieter56 | 19:ff7ac8de56f9 | 73 | |
Pieter56 | 19:ff7ac8de56f9 | 74 | } |
Pieter56 | 19:ff7ac8de56f9 | 75 | } |
Pieter56 | 19:ff7ac8de56f9 | 76 |