Library for SOMO II sound module (http://www.4dsystems.com.au/product/SOMO_II/) For use with stateScript (https://developer.mbed.org/users/mkarlsso/code/stateScript_v2/)
Dependents: stateScript_v2_karpovalab Nucleo_statescript stateScript_v2
Diff: SOMO.cpp
- Revision:
- 0:a4f14eadd0df
diff -r 000000000000 -r a4f14eadd0df SOMO.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SOMO.cpp Thu Jan 28 16:39:06 2016 +0000 @@ -0,0 +1,52 @@ +// SOMO II sound module http://www.4dsystems.com.au/product/SOMO_II/ +// Datasheet http://www.4dsystems.com.au/productpages/SOMO-II/downloads/SOMO-II_datasheet_R_1_2.pdf +#include "mbed.h" +#include "SOMO.h" + +//constructor +SOMO::SOMO(PinName TXPin, PinName RXPin): _serialSOMO(TXPin,RXPin){ + init(); +} + + +void SOMO::init(){ //configure the mbed for SOMO board + _serialSOMO.baud(9600); +} + +void SOMO::playTrackName(char name[]){ //added so SOMO and smartWAV have same functions and can therefore be used interchangeably +} + +/* +mp3 sound files should be placed in "01" folder in the root directory of SD card. The filenames should start with number between 001 and 099 +followed by up to 5 characters (the freakin' datasheet says up to 32 characters, don't listen to it, it's a liar and a con artist!) +examples: root/01/001left.mp3, root/01/002right.mp3, root/01/099abcde.mp3 +*/ +void SOMO::playTrackNum(unsigned char track){ //play specific track number + unsigned char play[8] = {0x7E, 0x0F, 0x00, 0x01, track, 0xFF, (240-track), 0xEF}; + for (int i = 0; i <8; i++){ + _serialSOMO.putc(play[i]); + } +} + +void SOMO::stopTrack(){ //Stop playing any active song + unsigned char stop[8] = {0x7E, 0x16, 0x00, 0x00, 0x00, 0xFF, 0xEA, 0xEF}; + for (int i = 0; i <8; i++){ + _serialSOMO.putc(stop[i]); + } +} + +void SOMO::volume(unsigned char vol){ //change volume between 0 and 30 + if (vol>0 && vol<31){ + unsigned char changeVol[8] = {0x7E, 0x06, 0x00, 0x00, vol, 0xFF, (250-vol), 0xEF}; + for (int i = 0; i <8; i++){ + _serialSOMO.putc(changeVol[i]); + } + } +} + +void SOMO::reset(){ //reset SOMO module + unsigned char reset[8] = {0x7E, 0x0C, 0x00, 0x00, 0x00, 0xFF, 0xF4, 0xEF}; + for (int i = 0; i <8; i++){ + _serialSOMO.putc(reset[i]); + } +}