blinky with 3 colors

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

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?

UserRevisionLine numberNew 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