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: tone.cpp
- Revision:
- 0:2b4c66b3f6aa
- Child:
- 1:3b00679c208a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tone.cpp Sun Nov 19 06:08:29 2017 +0000 @@ -0,0 +1,381 @@ +#include "mbed.h" +#include "tone.h" +/* + tone.h + Written by Leong Kum Loong. + 19 Nov 2017, REV. 0 + + All routines and functions in this library are written by me solely with the purpose + of implementing an identical "tone" library that was introduced by Arduino IDE. + The mario_example routine "notes" are reference to the work of Gregory Kielian + an Electrical Engineer at Google ATAP Skunkworks via Avalon + from his Mario.ino sketch for Arduino. +*/ + +PwmOut speaker(p26); + +void tone(int frequency, int duration_ms){ + float period = (float)1/(float)frequency; + speaker.period(period); + speaker.pulsewidth(period/(float)(2)); + wait_ms(duration_ms); //If tone sounds weird, try modify delay here. + speaker = 0; +} + +static void delay(int millis){ + wait_ms(millis * 0.7); //If play speed sounds weird, try modify delay here. +} + +void mario_example() { + tone(660,100); + delay(150); + tone(660,100); + delay(300); + tone(660,100); + delay(300); + tone(510,100); + delay(100); + tone(660,100); + delay(300); + tone(770,100); + delay(550); + tone(380,100); + delay(575); + + tone(510,100); + delay(450); + tone(380,100); + delay(400); + tone(320,100); + delay(500); + tone(440,100); + delay(300); + tone(480,80); + delay(330); + tone(450,100); + delay(150); + tone(430,100); + delay(300); + tone(380,100); + delay(200); + tone(660,80); + delay(200); + tone(760,50); + delay(150); + tone(860,100); + delay(300); + tone(700,80); + delay(150); + tone(760,50); + delay(350); + tone(660,80); + delay(300); + tone(520,80); + delay(150); + tone(580,80); + delay(150); + tone(480,80); + delay(500); + + tone(510,100); + delay(450); + tone(380,100); + delay(400); + tone(320,100); + delay(500); + tone(440,100); + delay(300); + tone(480,80); + delay(330); + tone(450,100); + delay(150); + tone(430,100); + delay(300); + tone(380,100); + delay(200); + tone(660,80); + delay(200); + tone(760,50); + delay(150); + tone(860,100); + delay(300); + tone(700,80); + delay(150); + tone(760,50); + delay(350); + tone(660,80); + delay(300); + tone(520,80); + delay(150); + tone(580,80); + delay(150); + tone(480,80); + delay(500); + + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,150); + delay(300); + tone(380,100); + delay(150); + tone(430,100); + delay(150); + + tone(500,100); + delay(300); + tone(430,100); + delay(150); + tone(500,100); + delay(100); + tone(570,100); + delay(220); + + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,200); + delay(300); + + tone(1020,80); + delay(300); + tone(1020,80); + delay(150); + tone(1020,80); + delay(300); + + tone(380,100); + delay(300); + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,150); + delay(300); + tone(380,100); + delay(150); + tone(430,100); + delay(150); + + tone(500,100); + delay(300); + tone(430,100); + delay(150); + tone(500,100); + delay(100); + tone(570,100); + delay(420); + + tone(585,100); + delay(450); + + tone(550,100); + delay(420); + + tone(500,100); + delay(360); + + tone(380,100); + delay(300); + tone(500,100); + delay(300); + tone(500,100); + delay(150); + tone(500,100); + delay(300); + + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,150); + delay(300); + tone(380,100); + delay(150); + tone(430,100); + delay(150); + + tone(500,100); + delay(300); + tone(430,100); + delay(150); + tone(500,100); + delay(100); + tone(570,100); + delay(220); + + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,200); + delay(300); + + tone(1020,80); + delay(300); + tone(1020,80); + delay(150); + tone(1020,80); + delay(300); + + tone(380,100); + delay(300); + tone(500,100); + delay(300); + + tone(760,100); + delay(100); + tone(720,100); + delay(150); + tone(680,100); + delay(150); + tone(620,150); + delay(300); + + tone(650,150); + delay(300); + tone(380,100); + delay(150); + tone(430,100); + delay(150); + + tone(500,100); + delay(300); + tone(430,100); + delay(150); + tone(500,100); + delay(100); + tone(570,100); + delay(420); + + tone(585,100); + delay(450); + + tone(550,100); + delay(420); + + tone(500,100); + delay(360); + + tone(380,100); + delay(300); + tone(500,100); + delay(300); + tone(500,100); + delay(150); + tone(500,100); + delay(300); + + tone(500,60); + delay(150); + tone(500,80); + delay(300); + tone(500,60); + delay(350); + tone(500,80); + delay(150); + tone(580,80); + delay(350); + tone(660,80); + delay(150); + tone(500,80); + delay(300); + tone(430,80); + delay(150); + tone(380,80); + delay(600); + + tone(500,60); + delay(150); + tone(500,80); + delay(300); + tone(500,60); + delay(350); + tone(500,80); + delay(150); + tone(580,80); + delay(150); + tone(660,80); + delay(550); + + tone(870,80); + delay(325); + tone(760,80); + delay(600); + + tone(500,60); + delay(150); + tone(500,80); + delay(300); + tone(500,60); + delay(350); + tone(500,80); + delay(150); + tone(580,80); + delay(350); + tone(660,80); + delay(150); + tone(500,80); + delay(300); + tone(430,80); + delay(150); + tone(380,80); + delay(600); + + tone(660,100); + delay(150); + tone(660,100); + delay(300); + tone(660,100); + delay(300); + tone(510,100); + delay(100); + tone(660,100); + delay(300); + tone(770,100); + delay(550); + tone(380,100); + delay(575); +}