Librairie contenant les fonctions nécessaires pour pouvoir contrôler les différents composants de la carte d'extension MyLab

Dependencies:   MMA7660FC LCD_lib

Dependents:   Example_MyLab_lib

Committer:
lucas_favre
Date:
Tue Mar 29 18:28:42 2016 +0000
Revision:
1:4659469cc20d
Child:
2:c3fedebb6c7e
Ajout de la librairie pour ?cran 128x32;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucas_favre 1:4659469cc20d 1 /*
lucas_favre 1:4659469cc20d 2 * MyLab.cpp
lucas_favre 1:4659469cc20d 3 * Librairie réalisé pour l'utilisation des composants de la carte d'extension MyLab
lucas_favre 1:4659469cc20d 4 *
lucas_favre 1:4659469cc20d 5 *
lucas_favre 1:4659469cc20d 6 * Author: Favre Lucas
lucas_favre 1:4659469cc20d 7 */
lucas_favre 1:4659469cc20d 8 #include "MyLab_Lib.h"
lucas_favre 1:4659469cc20d 9 #include "mbed.h"
lucas_favre 1:4659469cc20d 10 #include "lpc1769.h"
lucas_favre 1:4659469cc20d 11
lucas_favre 1:4659469cc20d 12
lucas_favre 1:4659469cc20d 13
lucas_favre 1:4659469cc20d 14 MyLab::MyLab(PinName Joy_c,PinName Joy_e,PinName Joy_n,PinName Joy_w,PinName Joy_s,PinName mic,PinName speaker,PinName capt_r,PinName capt_g,PinName capt_b) :
lucas_favre 1:4659469cc20d 15 _joystick (Joy_c,Joy_e,Joy_n,Joy_w,Joy_s), _micro(mic),_speaker(speaker),_r(capt_r),_g(capt_g),_b(capt_b) {
lucas_favre 1:4659469cc20d 16
lucas_favre 1:4659469cc20d 17
lucas_favre 1:4659469cc20d 18 for(int k=0; k<32; k++) {
lucas_favre 1:4659469cc20d 19 Analog_out_data[k] = int (65536.0 * ((1.0 + sin((float(k)/32.0*6.28318530717959)))/2.0));
lucas_favre 1:4659469cc20d 20 }
lucas_favre 1:4659469cc20d 21
lucas_favre 1:4659469cc20d 22 Acc.init();
lucas_favre 1:4659469cc20d 23
lucas_favre 1:4659469cc20d 24 }
lucas_favre 1:4659469cc20d 25
lucas_favre 1:4659469cc20d 26 // Lecture de la position du joystick
lucas_favre 1:4659469cc20d 27 // sous forme de chaîne caractère
lucas_favre 1:4659469cc20d 28
lucas_favre 1:4659469cc20d 29 void MyLab::JoyStick_Position(char pos[]){
lucas_favre 1:4659469cc20d 30
lucas_favre 1:4659469cc20d 31 result = ~_joystick.read() + 31 ;
lucas_favre 1:4659469cc20d 32 switch (result) {
lucas_favre 1:4659469cc20d 33 case 0:
lucas_favre 1:4659469cc20d 34 sprintf(pos,"North");
lucas_favre 1:4659469cc20d 35 break;
lucas_favre 1:4659469cc20d 36 case 1:
lucas_favre 1:4659469cc20d 37 sprintf(pos,"Center");
lucas_favre 1:4659469cc20d 38 break;
lucas_favre 1:4659469cc20d 39 case 7:
lucas_favre 1:4659469cc20d 40 sprintf(pos,"West");
lucas_favre 1:4659469cc20d 41 break;
lucas_favre 1:4659469cc20d 42 case 3:
lucas_favre 1:4659469cc20d 43 sprintf(pos,"South");
lucas_favre 1:4659469cc20d 44 break;
lucas_favre 1:4659469cc20d 45 case 15:
lucas_favre 1:4659469cc20d 46 sprintf(pos,"East");
lucas_favre 1:4659469cc20d 47 break;
lucas_favre 1:4659469cc20d 48 default:
lucas_favre 1:4659469cc20d 49 sprintf(pos,"");
lucas_favre 1:4659469cc20d 50 break;
lucas_favre 1:4659469cc20d 51 }
lucas_favre 1:4659469cc20d 52 return pos;
lucas_favre 1:4659469cc20d 53 }
lucas_favre 1:4659469cc20d 54 // Enregistrement de son sur le microphone SPU0414HR5H
lucas_favre 1:4659469cc20d 55 short * MyLab::Sound_Record(short * dat){
lucas_favre 1:4659469cc20d 56 wait(1);
lucas_favre 1:4659469cc20d 57 micCB=0;
lucas_favre 1:4659469cc20d 58
lucas_favre 1:4659469cc20d 59 for(int i=0;i<100;i++){ micCB+=_micro; }
lucas_favre 1:4659469cc20d 60 micCB/=100;
lucas_favre 1:4659469cc20d 61
lucas_favre 1:4659469cc20d 62 // Enregistrement sur le microphone
lucas_favre 1:4659469cc20d 63 for(int i=0;i<NUMDAT; i++){
lucas_favre 1:4659469cc20d 64 dat[i]=(int)((_micro-micCB)*32768);
lucas_favre 1:4659469cc20d 65 wait_us(DLY);
lucas_favre 1:4659469cc20d 66 }
lucas_favre 1:4659469cc20d 67 return dat;
lucas_favre 1:4659469cc20d 68 }
lucas_favre 1:4659469cc20d 69 // Lecture d'un son enregistré par le microphone sur
lucas_favre 1:4659469cc20d 70 // la sortie audio (port jack)
lucas_favre 1:4659469cc20d 71 void MyLab::Sound_Play(short * buffer){
lucas_favre 1:4659469cc20d 72
lucas_favre 1:4659469cc20d 73 for(int i=0;i<NUMDAT; i++){
lucas_favre 1:4659469cc20d 74 _speaker=((float)buffer[i])/32768*10+0.5;
lucas_favre 1:4659469cc20d 75 wait_us(DLY);
lucas_favre 1:4659469cc20d 76 }
lucas_favre 1:4659469cc20d 77 }
lucas_favre 1:4659469cc20d 78
lucas_favre 1:4659469cc20d 79 // Génération d'une note vers la sortie audio
lucas_favre 1:4659469cc20d 80 void MyLab::PlayNote(float frequency, float duration, float volume) {
lucas_favre 1:4659469cc20d 81 // scale samples using current volume level arg
lucas_favre 1:4659469cc20d 82 for(int k=0; k<32; k++) {
lucas_favre 1:4659469cc20d 83 Analog_scaled_data[k] = Analog_out_data[k] * volume;
lucas_favre 1:4659469cc20d 84 }
lucas_favre 1:4659469cc20d 85 // reset to start of sample array
lucas_favre 1:4659469cc20d 86 s = 0;
lucas_favre 1:4659469cc20d 87 // turn on timer interrupts to start sine wave output
lucas_favre 1:4659469cc20d 88 Sample_Period.attach(this,&MyLab::Sample_timer_interrupt, 1.0/(frequency*32.0));
lucas_favre 1:4659469cc20d 89 // play note for specified time
lucas_favre 1:4659469cc20d 90 wait(duration);
lucas_favre 1:4659469cc20d 91 // turns off timer interrupts
lucas_favre 1:4659469cc20d 92 Sample_Period.detach();
lucas_favre 1:4659469cc20d 93 // sets output to mid range - analog zero
lucas_favre 1:4659469cc20d 94 _speaker.write_u16(32768);
lucas_favre 1:4659469cc20d 95
lucas_favre 1:4659469cc20d 96 }
lucas_favre 1:4659469cc20d 97
lucas_favre 1:4659469cc20d 98 float MyLab::Luminosity_Mesure(){
lucas_favre 1:4659469cc20d 99 r = _r;
lucas_favre 1:4659469cc20d 100 g = _g;
lucas_favre 1:4659469cc20d 101 b = _b;
lucas_favre 1:4659469cc20d 102
lucas_favre 1:4659469cc20d 103 return r+g+b;
lucas_favre 1:4659469cc20d 104 }
lucas_favre 1:4659469cc20d 105
lucas_favre 1:4659469cc20d 106 float MyLab::Acc_X_Mesure(){
lucas_favre 1:4659469cc20d 107 return Acc.read_x();
lucas_favre 1:4659469cc20d 108 }
lucas_favre 1:4659469cc20d 109
lucas_favre 1:4659469cc20d 110 float MyLab::Acc_Y_Mesure(){
lucas_favre 1:4659469cc20d 111 return Acc.read_y();
lucas_favre 1:4659469cc20d 112 }
lucas_favre 1:4659469cc20d 113
lucas_favre 1:4659469cc20d 114 float MyLab::Acc_Z_Mesure(){
lucas_favre 1:4659469cc20d 115 return Acc.read_z();
lucas_favre 1:4659469cc20d 116 }
lucas_favre 1:4659469cc20d 117