Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:9f2b4b5956c0, committed 2022-03-17
- Comitter:
- cspista
- Date:
- Thu Mar 17 13:03:30 2022 +0000
- Commit message:
- Final version
Changed in this revision
diff -r 000000000000 -r 9f2b4b5956c0 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 17 13:03:30 2022 +0000 @@ -0,0 +1,73 @@ +#include "mbed.h" +#include "rtos.h" +PwmOut rled(D3); +PwmOut gled(D5); +PwmOut bled(D6); +DigitalOut led_common(D4); + +typedef struct { + float red; + float green; + float blue; +} message_t; + +Mail <message_t,4> mbox; //Mailbox for 4 messages + +void led_thread(void const *argument) { + rled.period_ms(20); //Set period to 20 ms + rled.write(1.0f); //Initialize to 0% duty cycle + gled.period_ms(20); //Set period to 20 ms + gled.write(1.0f); //Initialize to 0% duty cycle + bled.period_ms(20); //Set period to 20 ms + bled.write(1.0f); //Initialize to 0% duty cycle + while (true) { + osEvent evt = mbox.get(); //Wait for a message + if(evt.status == osEventMail) { + message_t *mymessage = (message_t*)evt.value.p; + rled = 1.0f - mymessage->red; + gled = 1.0f - mymessage->green; + bled = 1.0f - mymessage->blue; + mbox.free(mymessage); //Free up memory + } + } +} + +float frand(void) { + int32_t rv = 0x8000 -(rand()&0xFFFF); + return (rv*rv/1073741824.0f); +} + +int main (void) { + float RGB1[3]; + float RGB2[3]; + float INC[3]; + led_common = 1; // for commono anode... + Thread thread2(led_thread); +//--- Create a random color --------------------- + for (int x=0; x<3; x++) { + RGB1[x] = frand(); + } + + while (true) { +//--- Create a new random color ----------------- + for (int x=0; x<3; x++) { + RGB2[x] = frand(); + } +//--- Determine increments to go from color 1 to color 2 in 25 steps + for (int x=0; x<3; x++) { + INC[x] = (RGB1[x] - RGB2[x]) / 25; + } +//--- Send color codes to thread2 --------------- + for (int s=0; s<25; s++) { + message_t *message = mbox.alloc(); //Allocate memory + message->red = RGB1[0]; + message->green = RGB1[1]; + message->blue = RGB1[2]; + mbox.put(message); //Send data as message + Thread::wait(100); + for (int x=0; x<3; x++) { + RGB1[x] -= INC[x]; //Approach to second colour + } + } + } +} \ No newline at end of file
diff -r 000000000000 -r 9f2b4b5956c0 mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Thu Mar 17 13:03:30 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed-rtos/#5713cbbdb706
diff -r 000000000000 -r 9f2b4b5956c0 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Mar 17 13:03:30 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file