Controller firmware for a mobile robot, having a K64F MCU on board. Please read README.md for details.
lights.cpp@0:260ca1f1cba7, 2018-05-30 (annotated)
- Committer:
- dralisz82
- Date:
- Wed May 30 15:10:20 2018 +0000
- Revision:
- 0:260ca1f1cba7
Controller firmware for a mobile robot, having a K64F MCU on board.; ; See README.md for details;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dralisz82 | 0:260ca1f1cba7 | 1 | #include "lights.h" |
dralisz82 | 0:260ca1f1cba7 | 2 | |
dralisz82 | 0:260ca1f1cba7 | 3 | Lights::Lights() {} |
dralisz82 | 0:260ca1f1cba7 | 4 | |
dralisz82 | 0:260ca1f1cba7 | 5 | Lights::Lights(PinName pIL, PinName pIR, PinName pHL, PinName pHB, PinName pRL, PinName pBL) { |
dralisz82 | 0:260ca1f1cba7 | 6 | // create DigitalOut objects |
dralisz82 | 0:260ca1f1cba7 | 7 | do_indexLeft = new DigitalOut(pIL); |
dralisz82 | 0:260ca1f1cba7 | 8 | do_indexRight = new DigitalOut(pIR); |
dralisz82 | 0:260ca1f1cba7 | 9 | do_headLight = new DigitalOut(pHL); |
dralisz82 | 0:260ca1f1cba7 | 10 | do_highBeam = new DigitalOut(pHB); |
dralisz82 | 0:260ca1f1cba7 | 11 | do_reversingLight = new DigitalOut(pRL); |
dralisz82 | 0:260ca1f1cba7 | 12 | do_brakeLight = new DigitalOut(pBL); |
dralisz82 | 0:260ca1f1cba7 | 13 | |
dralisz82 | 0:260ca1f1cba7 | 14 | // initialize flags |
dralisz82 | 0:260ca1f1cba7 | 15 | f_indexLeft = false; |
dralisz82 | 0:260ca1f1cba7 | 16 | f_indexRight = false; |
dralisz82 | 0:260ca1f1cba7 | 17 | |
dralisz82 | 0:260ca1f1cba7 | 18 | indexThread = new Thread(indexThread_main, this); |
dralisz82 | 0:260ca1f1cba7 | 19 | printf("Lights created\n"); |
dralisz82 | 0:260ca1f1cba7 | 20 | } |
dralisz82 | 0:260ca1f1cba7 | 21 | |
dralisz82 | 0:260ca1f1cba7 | 22 | Lights::~Lights() { |
dralisz82 | 0:260ca1f1cba7 | 23 | delete indexThread; |
dralisz82 | 0:260ca1f1cba7 | 24 | delete do_indexLeft; |
dralisz82 | 0:260ca1f1cba7 | 25 | delete do_indexRight; |
dralisz82 | 0:260ca1f1cba7 | 26 | delete do_headLight; |
dralisz82 | 0:260ca1f1cba7 | 27 | delete do_highBeam; |
dralisz82 | 0:260ca1f1cba7 | 28 | delete do_reversingLight; |
dralisz82 | 0:260ca1f1cba7 | 29 | delete do_brakeLight; |
dralisz82 | 0:260ca1f1cba7 | 30 | } |
dralisz82 | 0:260ca1f1cba7 | 31 | |
dralisz82 | 0:260ca1f1cba7 | 32 | /** |
dralisz82 | 0:260ca1f1cba7 | 33 | * blinking indexes |
dralisz82 | 0:260ca1f1cba7 | 34 | */ |
dralisz82 | 0:260ca1f1cba7 | 35 | void Lights::indexThread_main(void const *argument) { |
dralisz82 | 0:260ca1f1cba7 | 36 | Lights* self = (Lights*)argument; |
dralisz82 | 0:260ca1f1cba7 | 37 | |
dralisz82 | 0:260ca1f1cba7 | 38 | while (true) { |
dralisz82 | 0:260ca1f1cba7 | 39 | if(self->f_indexLeft) |
dralisz82 | 0:260ca1f1cba7 | 40 | self->do_indexLeft->write(!self->do_indexLeft->read()); |
dralisz82 | 0:260ca1f1cba7 | 41 | else |
dralisz82 | 0:260ca1f1cba7 | 42 | self->do_indexLeft->write(0); |
dralisz82 | 0:260ca1f1cba7 | 43 | if(self->f_indexRight) |
dralisz82 | 0:260ca1f1cba7 | 44 | self->do_indexRight->write(!self->do_indexRight->read()); |
dralisz82 | 0:260ca1f1cba7 | 45 | else |
dralisz82 | 0:260ca1f1cba7 | 46 | self->do_indexRight->write(0); |
dralisz82 | 0:260ca1f1cba7 | 47 | Thread::wait(500); |
dralisz82 | 0:260ca1f1cba7 | 48 | } |
dralisz82 | 0:260ca1f1cba7 | 49 | } |
dralisz82 | 0:260ca1f1cba7 | 50 | |
dralisz82 | 0:260ca1f1cba7 | 51 | void Lights::indexLeft() { |
dralisz82 | 0:260ca1f1cba7 | 52 | f_indexLeft = true; |
dralisz82 | 0:260ca1f1cba7 | 53 | f_indexRight = false; |
dralisz82 | 0:260ca1f1cba7 | 54 | } |
dralisz82 | 0:260ca1f1cba7 | 55 | |
dralisz82 | 0:260ca1f1cba7 | 56 | void Lights::indexRight() { |
dralisz82 | 0:260ca1f1cba7 | 57 | f_indexLeft = false; |
dralisz82 | 0:260ca1f1cba7 | 58 | f_indexRight = true; |
dralisz82 | 0:260ca1f1cba7 | 59 | } |
dralisz82 | 0:260ca1f1cba7 | 60 | |
dralisz82 | 0:260ca1f1cba7 | 61 | void Lights::indexOff() { |
dralisz82 | 0:260ca1f1cba7 | 62 | f_indexLeft = false; |
dralisz82 | 0:260ca1f1cba7 | 63 | f_indexRight = false; |
dralisz82 | 0:260ca1f1cba7 | 64 | } |
dralisz82 | 0:260ca1f1cba7 | 65 | |
dralisz82 | 0:260ca1f1cba7 | 66 | void Lights::hazardLightsOn() { |
dralisz82 | 0:260ca1f1cba7 | 67 | f_indexLeft = true; |
dralisz82 | 0:260ca1f1cba7 | 68 | f_indexRight = true; |
dralisz82 | 0:260ca1f1cba7 | 69 | } |
dralisz82 | 0:260ca1f1cba7 | 70 | |
dralisz82 | 0:260ca1f1cba7 | 71 | void Lights::hazardLightsOff() { |
dralisz82 | 0:260ca1f1cba7 | 72 | indexOff(); |
dralisz82 | 0:260ca1f1cba7 | 73 | } |
dralisz82 | 0:260ca1f1cba7 | 74 | |
dralisz82 | 0:260ca1f1cba7 | 75 | void Lights::headLightOn() { |
dralisz82 | 0:260ca1f1cba7 | 76 | do_headLight->write(1); |
dralisz82 | 0:260ca1f1cba7 | 77 | } |
dralisz82 | 0:260ca1f1cba7 | 78 | |
dralisz82 | 0:260ca1f1cba7 | 79 | void Lights::headLightOff() { |
dralisz82 | 0:260ca1f1cba7 | 80 | do_headLight->write(0); |
dralisz82 | 0:260ca1f1cba7 | 81 | } |
dralisz82 | 0:260ca1f1cba7 | 82 | |
dralisz82 | 0:260ca1f1cba7 | 83 | void Lights::headLightToggle() { |
dralisz82 | 0:260ca1f1cba7 | 84 | do_headLight->write(!do_headLight->read()); |
dralisz82 | 0:260ca1f1cba7 | 85 | } |
dralisz82 | 0:260ca1f1cba7 | 86 | |
dralisz82 | 0:260ca1f1cba7 | 87 | void Lights::highBeamOn() { |
dralisz82 | 0:260ca1f1cba7 | 88 | do_highBeam->write(1); |
dralisz82 | 0:260ca1f1cba7 | 89 | } |
dralisz82 | 0:260ca1f1cba7 | 90 | |
dralisz82 | 0:260ca1f1cba7 | 91 | void Lights::highBeamOff() { |
dralisz82 | 0:260ca1f1cba7 | 92 | do_highBeam->write(0); |
dralisz82 | 0:260ca1f1cba7 | 93 | } |
dralisz82 | 0:260ca1f1cba7 | 94 | |
dralisz82 | 0:260ca1f1cba7 | 95 | void Lights::highBeamToggle() { |
dralisz82 | 0:260ca1f1cba7 | 96 | do_highBeam->write(!do_highBeam->read()); |
dralisz82 | 0:260ca1f1cba7 | 97 | } |
dralisz82 | 0:260ca1f1cba7 | 98 | |
dralisz82 | 0:260ca1f1cba7 | 99 | void Lights::reversingLightOn() { |
dralisz82 | 0:260ca1f1cba7 | 100 | do_reversingLight->write(1); |
dralisz82 | 0:260ca1f1cba7 | 101 | } |
dralisz82 | 0:260ca1f1cba7 | 102 | |
dralisz82 | 0:260ca1f1cba7 | 103 | void Lights::reversingLightOff() { |
dralisz82 | 0:260ca1f1cba7 | 104 | do_reversingLight->write(0); |
dralisz82 | 0:260ca1f1cba7 | 105 | } |
dralisz82 | 0:260ca1f1cba7 | 106 | |
dralisz82 | 0:260ca1f1cba7 | 107 | void Lights::brakeLightOn() { |
dralisz82 | 0:260ca1f1cba7 | 108 | do_brakeLight->write(1); |
dralisz82 | 0:260ca1f1cba7 | 109 | } |
dralisz82 | 0:260ca1f1cba7 | 110 | |
dralisz82 | 0:260ca1f1cba7 | 111 | void Lights::brakeLightOff() { |
dralisz82 | 0:260ca1f1cba7 | 112 | do_brakeLight->write(0); |
dralisz82 | 0:260ca1f1cba7 | 113 | } |