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.
Diff: main.cpp
- Revision:
- 0:6622ba57fee8
diff -r 000000000000 -r 6622ba57fee8 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Nov 15 11:28:47 2015 +0000
@@ -0,0 +1,151 @@
+#include "mbed.h"
+
+Timeout timer;
+
+typedef enum{
+ DO,
+ RE,
+ MI,
+ FA,
+ SOL,
+ LA,
+ SI,
+ DO1,
+ }Nota;
+
+ Nota selected_nota = DO1;
+
+DigitalOut pwm_green(D8); // IO used by pwm_io function
+DigitalOut pwm_red(D7);
+DigitalOut pwm_blue(D2);
+
+int on_delay = 0;
+int off_delay = 0;
+
+void toggleOff_green();
+void toggleOff_blue();
+void toggleOff_red();
+
+void toggleOn_green() {
+ pwm_green = 1;
+ timer.attach_us(toggleOff_green, on_delay);
+}
+
+void toggleOn_red() {
+ pwm_red = 1;
+ timer.attach_us(toggleOff_red, on_delay);
+}
+
+void toggleOn_blue() {
+ pwm_blue = 1;
+ timer.attach_us(toggleOff_blue, on_delay);
+}
+
+void toggleOff_green() {
+ pwm_green = 0;
+ timer.attach_us(toggleOn_green, off_delay);
+}
+
+void toggleOff_red() {
+ pwm_red = 0;
+ timer.attach_us(toggleOn_red, off_delay);
+}
+
+void toggleOff_blue() {
+ pwm_blue = 0;
+ timer.attach_us(toggleOn_blue, off_delay);
+}
+
+// p_us = signal period in micro_seconds
+// dc = signal duty-cycle (0.0 to 1.0)
+void pwm_io_green(int p_us, float dc) {
+ timer.detach();
+ if ((p_us == 0) || (dc == 0)) {
+ pwm_green = 0;
+ return;
+ }
+ if (dc >= 1) {
+ pwm_green = 1;
+ return;
+ }
+ on_delay = (int)(p_us * dc);
+ off_delay = p_us - on_delay;
+ toggleOn_green();
+}
+
+void pwm_io_red(int p_us, float dc) {
+ timer.detach();
+ if ((p_us == 0) || (dc == 0)) {
+ pwm_red = 0;
+ return;
+ }
+ if (dc >= 1) {
+ pwm_red = 1;
+ return;
+ }
+ on_delay = (int)(p_us * dc);
+ off_delay = p_us - on_delay;
+ toggleOn_red();
+}
+
+void pwm_io_blue(int p_us, float dc) {
+ timer.detach();
+ if ((p_us == 0) || (dc == 0)) {
+ pwm_blue = 0;
+ return;
+ }
+ if (dc >= 1) {
+ pwm_blue = 1;
+ return;
+ }
+ on_delay = (int)(p_us * dc);
+ off_delay = p_us - on_delay;
+ toggleOn_blue();
+}
+
+int main() {
+
+ pwm_io_green(20, 0.50); // 20ms - 25%
+ pwm_io_blue(20, 0.50);
+ pwm_io_red(20, 0.50);
+
+ while(1) {
+ switch (selected_nota){
+ case DO: pwm_io_red(20, 1.00);
+ pwm_io_green(20, 0.00); // 20ms - 25%
+ pwm_io_blue(20, 0.00);
+
+ break;
+ case RE: pwm_io_red(20, 1.00);
+ pwm_io_green(20, 0.60); // 20ms - 25%
+ pwm_io_blue(20, 0.00);
+ break;
+ case MI: pwm_io_red(20, 1.00);
+ pwm_io_green(20, 1.00); // 20ms - 25%
+ pwm_io_blue(20, 0.00);
+ break;
+ case FA: pwm_io_red(20, 0.00);
+ pwm_io_green(20, 1.00); // 20ms - 25%
+ pwm_io_blue(20, 0.00);
+ break;
+ case SOL: pwm_io_red(20, 0.00);
+ pwm_io_green(20, 0.00); // 20ms - 25%
+ pwm_io_blue(20, 1.00);
+ break;
+ case LA: pwm_io_red(20, 0.20);
+ pwm_io_green(20, 0.00); // 20ms - 25%
+ pwm_io_blue(20, 0.60);
+ break;
+ case SI: pwm_io_red(20, 1.00);
+ pwm_io_green(20, 0.00); // 20ms - 25%
+ pwm_io_blue(20, 1.00);
+ break;
+ case DO1: pwm_io_red(20, 1.00);
+ pwm_io_green(20, 1.00); // 20ms - 25%
+ pwm_io_blue(20, 1.00);
+ break;
+
+ }
+ }
+}
+
\ No newline at end of file