Vic Van Roie / Mbed 2 deprecated STEM_Nucleo_start

Dependencies:   mbed

Committer:
VicOnCampusGeel
Date:
Thu Feb 09 08:28:08 2017 +0000
Revision:
0:d6c40db60579
start;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VicOnCampusGeel 0:d6c40db60579 1 // -----------NEC Pulscode Timing ----------------------------------------------
VicOnCampusGeel 0:d6c40db60579 2 const float IR_Frequentie=38000.0; // 38kHZ IR frequentie
VicOnCampusGeel 0:d6c40db60579 3 const float IR_ON=0.5; // stuur dutycycle 50% vervangt IR=0;
VicOnCampusGeel 0:d6c40db60579 4 const float IR_OFF=0.0; // stuur dutycycle 0% vervangt IR=1;
VicOnCampusGeel 0:d6c40db60579 5 // Dutycle aansturing via de basis van de transistor en PWM signaal
VicOnCampusGeel 0:d6c40db60579 6 // vervangt aansturing via de emittor via IR=0 of IR=1 via pin TX
VicOnCampusGeel 0:d6c40db60579 7 // D3 MOET wel als DigitalOut IR(D3) pin gedefinieerd worden
VicOnCampusGeel 0:d6c40db60579 8 // D3 MOET laag staan om te kunnen zenden
VicOnCampusGeel 0:d6c40db60579 9 // voor meer bereik, de extra testpin (anode van de diode) aan massa leggen
VicOnCampusGeel 0:d6c40db60579 10
VicOnCampusGeel 0:d6c40db60579 11 const int NEC_Time=562; // in microsec
VicOnCampusGeel 0:d6c40db60579 12 const int NEC_Start_IRON=562*16;// in microsec
VicOnCampusGeel 0:d6c40db60579 13 const int NEC_Start_IROFF=562*8;// in microsec
VicOnCampusGeel 0:d6c40db60579 14 const int NEC_FrameTime=108; // ms
VicOnCampusGeel 0:d6c40db60579 15
VicOnCampusGeel 0:d6c40db60579 16 unsigned int NEC_Code=0xFB04F708; // NEC center toets
VicOnCampusGeel 0:d6c40db60579 17
VicOnCampusGeel 0:d6c40db60579 18 // FB04 High bytes = toetscode
VicOnCampusGeel 0:d6c40db60579 19 // F708 low Bytes Fabrikant code voor NEC
VicOnCampusGeel 0:d6c40db60579 20 // wordt low bit first en low byte first uitgezonden
VicOnCampusGeel 0:d6c40db60579 21
VicOnCampusGeel 0:d6c40db60579 22 // IRLED=IR_OFF; // Stop sending IR Carrier. Zet PWM dutycycle op 0%
VicOnCampusGeel 0:d6c40db60579 23 // IRLED=IR_ON ; // Send IR Carrier. Zet PWM dutycycle op 50%
VicOnCampusGeel 0:d6c40db60579 24
VicOnCampusGeel 0:d6c40db60579 25 // -----------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 26 Timer Frame_timer; // Frame_timer voor frame timing
VicOnCampusGeel 0:d6c40db60579 27 Timer timer; // bittime counter
VicOnCampusGeel 0:d6c40db60579 28
VicOnCampusGeel 0:d6c40db60579 29 //---------------------------------------------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 30 void IR_Code_L0() // Logisch=0 IR Code van de fabrikant
VicOnCampusGeel 0:d6c40db60579 31 {
VicOnCampusGeel 0:d6c40db60579 32 timer.reset();
VicOnCampusGeel 0:d6c40db60579 33 IRLED=IR_ON ; // Send IR Carrier
VicOnCampusGeel 0:d6c40db60579 34 while (timer.read_us()< NEC_Time) { // Light on = 1TU for Nec
VicOnCampusGeel 0:d6c40db60579 35 /* Keep sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 36 }
VicOnCampusGeel 0:d6c40db60579 37 timer.reset();
VicOnCampusGeel 0:d6c40db60579 38 IRLED=IR_OFF ; // Stop sending IR Carrier
VicOnCampusGeel 0:d6c40db60579 39 while (timer.read_us()< NEC_Time) { // Light off = 1TU for Nec
VicOnCampusGeel 0:d6c40db60579 40 /* Stop sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 41 }
VicOnCampusGeel 0:d6c40db60579 42 }
VicOnCampusGeel 0:d6c40db60579 43 //---------------------------------------------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 44 void IR_Code_L1() // // Logisch=1 IR Code van de fabrikant
VicOnCampusGeel 0:d6c40db60579 45 {
VicOnCampusGeel 0:d6c40db60579 46 timer.reset();
VicOnCampusGeel 0:d6c40db60579 47 IRLED=IR_ON ; // Send IR Carrier
VicOnCampusGeel 0:d6c40db60579 48 while (timer.read_us()< NEC_Time) {// Light on = 1TU for Nec
VicOnCampusGeel 0:d6c40db60579 49 /* Keep sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 50 }
VicOnCampusGeel 0:d6c40db60579 51 timer.reset();
VicOnCampusGeel 0:d6c40db60579 52 IRLED=IR_OFF ; // Stop sending IR Carrier
VicOnCampusGeel 0:d6c40db60579 53 while (timer.read_us()< (NEC_Time*3)) { // Light off = 3TU for NEC
VicOnCampusGeel 0:d6c40db60579 54 /* Stop sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 55 }
VicOnCampusGeel 0:d6c40db60579 56 }
VicOnCampusGeel 0:d6c40db60579 57 //---------------------------------------------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 58 void stuur_Code( unsigned int NEC_Code)
VicOnCampusGeel 0:d6c40db60579 59 {
VicOnCampusGeel 0:d6c40db60579 60 // stuur de NEC_code, met NEC timing
VicOnCampusGeel 0:d6c40db60579 61 // inclusief Header frame
VicOnCampusGeel 0:d6c40db60579 62 // code + 1 extra bit
VicOnCampusGeel 0:d6c40db60579 63 // repeat code ( na de frame time)
VicOnCampusGeel 0:d6c40db60579 64
VicOnCampusGeel 0:d6c40db60579 65 int bit=0;
VicOnCampusGeel 0:d6c40db60579 66 IR_disable=0 ; // om de emitter op massa te trekken
VicOnCampusGeel 0:d6c40db60579 67 // zodat via de basis verder kan gestuurd worden
VicOnCampusGeel 0:d6c40db60579 68 IRLED.period(1.0/IR_Frequentie); //Drive IR LED data pin with 38Khz PWM Carrier
VicOnCampusGeel 0:d6c40db60579 69 IRLED = IR_OFF; // Dutycycle 0% op basis van de transistor
VicOnCampusGeel 0:d6c40db60579 70 Frame_timer.start(); // Frametime counter
VicOnCampusGeel 0:d6c40db60579 71 timer.start(); // bittime counter
VicOnCampusGeel 0:d6c40db60579 72
VicOnCampusGeel 0:d6c40db60579 73 // ----- Start sending Command frame --------------------------
VicOnCampusGeel 0:d6c40db60579 74 IRLED=IR_ON ; // Send IR Carrier. Op Basis van de transistor Dutycycle 50%
VicOnCampusGeel 0:d6c40db60579 75 Frame_timer.reset();
VicOnCampusGeel 0:d6c40db60579 76 timer.reset();
VicOnCampusGeel 0:d6c40db60579 77 while (timer.read_us()< NEC_Start_IRON) {// Light on
VicOnCampusGeel 0:d6c40db60579 78 /* Keep sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 79 }
VicOnCampusGeel 0:d6c40db60579 80 timer.reset();
VicOnCampusGeel 0:d6c40db60579 81 IRLED=IR_OFF ; // Stop sending IR Carrier
VicOnCampusGeel 0:d6c40db60579 82 while (timer.read_us()< NEC_Start_IROFF) { // Light off
VicOnCampusGeel 0:d6c40db60579 83 /* Stop sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 84 }
VicOnCampusGeel 0:d6c40db60579 85 // -- Start sending 32 NEC Code ------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 86 for (int i=0; i < 32; i++) {
VicOnCampusGeel 0:d6c40db60579 87 bit= (NEC_Code &1); // low bit first
VicOnCampusGeel 0:d6c40db60579 88 NEC_Code=(NEC_Code>>1); // volgende te versturen bit klaarzetten
VicOnCampusGeel 0:d6c40db60579 89 if (bit) {
VicOnCampusGeel 0:d6c40db60579 90 IR_Code_L1(); // stuur logisch 1
VicOnCampusGeel 0:d6c40db60579 91 } else {
VicOnCampusGeel 0:d6c40db60579 92 IR_Code_L0(); // stuur logisch 0
VicOnCampusGeel 0:d6c40db60579 93 }
VicOnCampusGeel 0:d6c40db60579 94 }
VicOnCampusGeel 0:d6c40db60579 95 IR_Code_L1(); // stuur logisch 1 send 1 trailing bit
VicOnCampusGeel 0:d6c40db60579 96 // --- Start sending IR=1 Frametime -----------------------------------------
VicOnCampusGeel 0:d6c40db60579 97 IRLED=IR_OFF; // Stop sending IR Carrier
VicOnCampusGeel 0:d6c40db60579 98 while (Frame_timer.read_ms()< NEC_FrameTime) { // Light off
VicOnCampusGeel 0:d6c40db60579 99 /* Stop sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 100 }
VicOnCampusGeel 0:d6c40db60579 101 // --- Start sending Repeat frame -----------------------------------------
VicOnCampusGeel 0:d6c40db60579 102 timer.reset();
VicOnCampusGeel 0:d6c40db60579 103 IRLED=IR_ON ; // Send IR Carrier
VicOnCampusGeel 0:d6c40db60579 104 while (timer.read_us()< NEC_Start_IRON) {// Light on
VicOnCampusGeel 0:d6c40db60579 105 /* Keep sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 106 }
VicOnCampusGeel 0:d6c40db60579 107 timer.reset();
VicOnCampusGeel 0:d6c40db60579 108 IRLED=IR_OFF ; // Stop sending IR Carrier
VicOnCampusGeel 0:d6c40db60579 109 while (timer.read_us()< (NEC_Start_IROFF/2)) { // Light off
VicOnCampusGeel 0:d6c40db60579 110 /* Stop sending Ir signaal */
VicOnCampusGeel 0:d6c40db60579 111 }
VicOnCampusGeel 0:d6c40db60579 112 IR_Code_L0(); // stuur logisch 0
VicOnCampusGeel 0:d6c40db60579 113 IR_disable=1 ; // om de emitter op 1 te trekken
VicOnCampusGeel 0:d6c40db60579 114 // IR transmitter valt af
VicOnCampusGeel 0:d6c40db60579 115
VicOnCampusGeel 0:d6c40db60579 116 // --- Stop sending Repeat frame ------------------------------
VicOnCampusGeel 0:d6c40db60579 117 Frame_timer.stop();
VicOnCampusGeel 0:d6c40db60579 118 timer.stop();
VicOnCampusGeel 0:d6c40db60579 119 }