add sound support using the on-board speaker
This commit is contained in:
parent
d6d64f3edb
commit
a4ba24d6ef
@ -1,51 +1,327 @@
|
||||
basic.setLedColor(Colors.Blue)
|
||||
basic.pause(500)
|
||||
basic.setLedColor(Colors.Red)
|
||||
basic.pause(500)
|
||||
basic.setLedColor(Colors.Green)
|
||||
basic.pause(500)
|
||||
basic.setLedColor(Colors.Violet)
|
||||
basic.pause(500)
|
||||
// Für Elise...
|
||||
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(350);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(350);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(350);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(350);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(350);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
// play d3
|
||||
music.playTone(147, 300);
|
||||
basic.pause(350);
|
||||
//play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
//play a3
|
||||
music.playTone(220, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 900);
|
||||
basic.pause(1000);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play a3#
|
||||
music.playTone(233, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 900);
|
||||
basic.pause(1000);
|
||||
basic.pause(300);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(263, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
// play d3
|
||||
music.playTone(147, 300);
|
||||
basic.pause(400);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 900);
|
||||
basic.pause(1000);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 900);
|
||||
basic.pause(1000);
|
||||
// play g3
|
||||
music.playTone(196, 300);
|
||||
basic.pause(400);
|
||||
// play f4
|
||||
music.playTone(349, 300);
|
||||
basic.pause(400);
|
||||
//play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 900);
|
||||
basic.pause(1000);
|
||||
// play e3
|
||||
music.playTone(165, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 900);
|
||||
basic.pause(1000);
|
||||
// play d3
|
||||
music.playTone(147, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 900);
|
||||
basic.pause(1000);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(350);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(350);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(350);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(350);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
// play d3
|
||||
music.playTone(147, 300);
|
||||
basic.pause(350);
|
||||
//play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
//play a3
|
||||
music.playTone(220, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 900);
|
||||
basic.pause(1000);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(233, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 900);
|
||||
basic.pause(1000);
|
||||
basic.pause(300);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play d4#
|
||||
music.playTone(311, 300);
|
||||
basic.pause(400);
|
||||
// play e4
|
||||
music.playTone(330, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play d4
|
||||
music.playTone(294, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
// play d3
|
||||
music.playTone(147, 300);
|
||||
basic.pause(400);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 900);
|
||||
basic.pause(1000);
|
||||
// play f3
|
||||
music.playTone(175, 300);
|
||||
basic.pause(400);
|
||||
// play c4
|
||||
music.playTone(262, 300);
|
||||
basic.pause(400);
|
||||
// play b3
|
||||
music.playTone(247, 300);
|
||||
basic.pause(400);
|
||||
// play a3
|
||||
music.playTone(220, 900);
|
||||
basic.pause(1000);
|
||||
|
||||
// and again slightly different
|
||||
var notes = [
|
||||
Note.E5, Note.Eb5, Note.E5, Note.Eb5, Note.E5, Note.B5, Note.D5, Note.C5, Note.A5,
|
||||
Note.C5, Note.E5, Note.A5, Note.B5, Note.E5, Note.A5, Note.B5, Note.C5,
|
||||
Note.E5, Note.Eb5, Note.E5, Note.Eb5, Note.E5, Note.B5, Note.D5, Note.C5, Note.A5,
|
||||
Note.C5, Note.E5, Note.A5, Note.B5, Note.E5, Note.C5, Note.B5, Note.A5,
|
||||
Note.B5, Note.C5, Note.D5, Note.E5, Note.G, Note.F, Note.E5, Note.D5, Note.E5, Note.E5, Note.D5, Note.C5, Note.E5, Note.D5, Note.C5, Note.E5,
|
||||
Note.E5, Note.Eb5, Note.E5, Note.Eb5, Note.E5, Note.E5, Note.D5, Note.C5, Note.A5,
|
||||
Note.C5, Note.E5, Note.A5, Note.B5, Note.E5, Note.A5, Note.B5, Note.C5,
|
||||
Note.E5, Note.Eb5, Note.E5, Note.Eb5, Note.E5, Note.B5, Note.D5, Note.C5, Note.A5,
|
||||
Note.C5, Note.E5, Note.A5, Note.B5, Note.E5, Note.C5, Note.B5, Note.A5
|
||||
];
|
||||
|
||||
for (let note of notes) {
|
||||
music.playTone(note, 100);
|
||||
}
|
||||
|
||||
basic.setLedColor(Colors.Blue);
|
||||
basic.pause(500);
|
||||
basic.setLedColor(Colors.Red);
|
||||
basic.pause(500);
|
||||
basic.setLedColor(Colors.Green);
|
||||
basic.pause(500);
|
||||
basic.setLedColor(Colors.Violet);
|
||||
basic.pause(500);
|
||||
basic.setLedColor(0);
|
||||
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.showString("S")
|
||||
})
|
||||
basic.showString("S");
|
||||
});
|
||||
input.onGesture(Gesture.LogoUp, () => {
|
||||
basic.showString("U")
|
||||
})
|
||||
basic.showString("U");
|
||||
});
|
||||
input.onGesture(Gesture.LogoDown, () => {
|
||||
basic.showString("D")
|
||||
})
|
||||
basic.showString("D");
|
||||
});
|
||||
input.onGesture(Gesture.ScreenUp, () => {
|
||||
basic.showString("+")
|
||||
})
|
||||
basic.showString("+");
|
||||
});
|
||||
input.onGesture(Gesture.TiltRight, () => {
|
||||
basic.showString("R")
|
||||
})
|
||||
basic.showString("R");
|
||||
});
|
||||
input.onGesture(Gesture.FreeFall, () => {
|
||||
basic.showString("F")
|
||||
})
|
||||
basic.showString("F");
|
||||
});
|
||||
input.onGesture(Gesture.ScreenDown, () => {
|
||||
basic.showString("-")
|
||||
})
|
||||
basic.showString("-");
|
||||
});
|
||||
input.onGesture(Gesture.TiltLeft, () => {
|
||||
basic.showString("L")
|
||||
})
|
||||
basic.showString("L");
|
||||
});
|
||||
input.onGesture(Gesture.ThreeG, () => {
|
||||
basic.showString("3")
|
||||
})
|
||||
basic.showString("3");
|
||||
});
|
||||
input.onGesture(Gesture.SixG, () => {
|
||||
basic.showString("6")
|
||||
})
|
||||
basic.showString("6");
|
||||
});
|
||||
input.onPinPressed(TouchPin.P0, () => {
|
||||
basic.showNumber(0)
|
||||
})
|
||||
basic.showNumber(0);
|
||||
});
|
||||
input.onPinPressed(TouchPin.P1, () => {
|
||||
basic.showNumber(1)
|
||||
})
|
||||
basic.showNumber(1);
|
||||
});
|
||||
input.onPinPressed(TouchPin.P2, () => {
|
||||
basic.showNumber(2)
|
||||
})
|
||||
basic.showNumber(2);
|
||||
});
|
||||
input.onPinPressed(TouchPin.P3, () => {
|
||||
basic.showNumber(3)
|
||||
})
|
||||
basic.showNumber(3);
|
||||
});
|
||||
|
3
libs/core/dal.d.ts
vendored
3
libs/core/dal.d.ts
vendored
@ -153,6 +153,9 @@ declare const enum DAL {
|
||||
CALLIOPE_ID_IO_P14 = 38,
|
||||
CALLIOPE_ID_IO_P15 = 39,
|
||||
CALLIOPE_ID_IO_P22 = 40,
|
||||
CALLIOPE_ID_IO_P28 = 41,
|
||||
CALLIOPE_ID_IO_P29 = 42,
|
||||
CALLIOPE_ID_IO_P30 = 43,
|
||||
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
|
||||
MICROBIT_ID_NOTIFY_ONE = 1022,
|
||||
MICROBIT_ID_NOTIFY = 1023,
|
||||
|
6
libs/core/enums.d.ts
vendored
6
libs/core/enums.d.ts
vendored
@ -264,7 +264,9 @@ declare namespace motors {
|
||||
//P16 = MICROBIT_ID_IO_P16,
|
||||
P19 = 24, // MICROBIT_ID_IO_P19
|
||||
P20 = 25, // MICROBIT_ID_IO_P20
|
||||
P22 = 40, // CALLIOPE_ID_IO_P22
|
||||
P28 = 41, // CALLIOPE_ID_IO_P28
|
||||
P29 = 42, // CALLIOPE_ID_IO_P29
|
||||
P30 = 43, // CALLIOPE_ID_IO_P30
|
||||
}
|
||||
|
||||
|
||||
@ -275,6 +277,8 @@ declare namespace motors {
|
||||
P3 = 10, // MICROBIT_ID_IO_P3
|
||||
P4 = 11, // MICROBIT_ID_IO_P4
|
||||
P10 = 17, // MICROBIT_ID_IO_P10
|
||||
P29 = 42, // CALLIOPE_ID_IO_P29
|
||||
P30 = 43, // CALLIOPE_ID_IO_P30
|
||||
}
|
||||
|
||||
|
||||
|
@ -130,7 +130,7 @@ namespace music {
|
||||
let beatsPerMinute: number = 120;
|
||||
|
||||
/**
|
||||
* Plays a tone through pin ``P0`` for the given duration.
|
||||
* Plays a tone through ``speaker`` for the given duration.
|
||||
* @param frequency pitch of the tone to play in Hertz (Hz)
|
||||
* @param ms tone duration in milliseconds (ms)
|
||||
*/
|
||||
@ -138,20 +138,26 @@ namespace music {
|
||||
//% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
|
||||
//% parts="speaker"
|
||||
export function playTone(frequency: number, ms: number): void {
|
||||
pins.analogSetPitchPin(AnalogPin.P0);
|
||||
// TODO check timing
|
||||
pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
|
||||
pins.analogSetPitchPin(AnalogPin.P29);
|
||||
pins.analogPitch(frequency, ms);
|
||||
pins.digitalWritePin(DigitalPin.P28, 0); // switch off the motor driver
|
||||
}
|
||||
|
||||
/**
|
||||
* Plays a tone through pin ``P0``.
|
||||
* Plays a tone through ``speaker``.
|
||||
* @param frequency pitch of the tone to play in Hertz (Hz)
|
||||
*/
|
||||
//% help=music/ring-tone weight=80
|
||||
//% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
|
||||
//% parts="speaker"
|
||||
export function ringTone(frequency: number): void {
|
||||
pins.analogSetPitchPin(AnalogPin.P0);
|
||||
// TODO check timing
|
||||
pins.digitalWritePin(DigitalPin.P28, 1); // switch on the motor driver
|
||||
pins.analogSetPitchPin(AnalogPin.P29);
|
||||
pins.analogPitch(frequency, 0);
|
||||
pins.digitalWritePin(DigitalPin.P28, 0); // switch off the motor driver
|
||||
}
|
||||
|
||||
/**
|
||||
@ -192,7 +198,7 @@ namespace music {
|
||||
let beat = 60000 / beatsPerMinute;
|
||||
if (fraction == BeatFraction.Whole) return beat;
|
||||
else if (fraction == BeatFraction.Half) return beat / 2;
|
||||
else if (fraction == BeatFraction.Quarter) return beat / 4
|
||||
else if (fraction == BeatFraction.Quarter) return beat / 4;
|
||||
else if (fraction == BeatFraction.Eighth) return beat / 8;
|
||||
else return beat / 16;
|
||||
}
|
||||
|
@ -20,6 +20,9 @@ enum class DigitalPin {
|
||||
//P16 = MICROBIT_ID_IO_P16,
|
||||
P19 = MICROBIT_ID_IO_P19,
|
||||
P20 = MICROBIT_ID_IO_P20,
|
||||
P28 = CALLIOPE_ID_IO_P28,
|
||||
P29 = CALLIOPE_ID_IO_P29,
|
||||
P30 = CALLIOPE_ID_IO_P30
|
||||
};
|
||||
|
||||
enum class AnalogPin {
|
||||
@ -29,6 +32,8 @@ enum class AnalogPin {
|
||||
P3 = MICROBIT_ID_IO_P3,
|
||||
P4 = MICROBIT_ID_IO_P4,
|
||||
P10 = MICROBIT_ID_IO_P10,
|
||||
P29 = CALLIOPE_ID_IO_P29,
|
||||
P30 = CALLIOPE_ID_IO_P30
|
||||
};
|
||||
|
||||
enum class PulseValue {
|
||||
@ -74,6 +79,9 @@ MicroBitPin *getPin(int id) {
|
||||
case CALLIOPE_ID_IO_P14: return &uBit.io.CAL_P14;
|
||||
case CALLIOPE_ID_IO_P15: return &uBit.io.CAL_P15;
|
||||
case CALLIOPE_ID_IO_P22: return &uBit.io.CAL_P22;
|
||||
case CALLIOPE_ID_IO_P28: return &uBit.io.CAL_P28;
|
||||
case CALLIOPE_ID_IO_P29: return &uBit.io.CAL_P29;
|
||||
case CALLIOPE_ID_IO_P30: return &uBit.io.CAL_P30;
|
||||
default: return NULL;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user