Controller firmware for a mobile robot, having a K64F MCU on board. Please read README.md for details.

Dependents:   robotkocsi_OS

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?

UserRevisionLine numberNew 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 }