New project

Dependencies:   mbed TextLCD

Committer:
jasminealice
Date:
Wed Jun 13 20:50:26 2018 +0000
Revision:
23:bb57966cb776
Parent:
21:31647d80614f
Child:
24:418711ed8c52
Last changes 13/6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasminealice 18:f5824ba95892 1 #include "Train.h"
jasminealice 18:f5824ba95892 2
jasminealice 21:31647d80614f 3 Train::Train(const unsigned int newaddress, const unsigned int newinst, int pos)
jasminealice 18:f5824ba95892 4 {
jasminealice 18:f5824ba95892 5 //ctor
jasminealice 18:f5824ba95892 6 address = newaddress;
jasminealice 20:32ba0a5f2d02 7 inst = newinst;
jasminealice 21:31647d80614f 8 position = pos;
jasminealice 21:31647d80614f 9 dirClockwise = false;
jasminealice 21:31647d80614f 10 nrPacket = 20;
jasminealice 18:f5824ba95892 11 }
jasminealice 18:f5824ba95892 12
jasminealice 18:f5824ba95892 13 Train::~Train()
jasminealice 18:f5824ba95892 14 {
jasminealice 18:f5824ba95892 15 //dtor
jasminealice 18:f5824ba95892 16 }
jasminealice 18:f5824ba95892 17
jasminealice 18:f5824ba95892 18 int Train::getPosition(){
jasminealice 18:f5824ba95892 19
jasminealice 18:f5824ba95892 20 return position;
jasminealice 18:f5824ba95892 21 }
jasminealice 20:32ba0a5f2d02 22
jasminealice 23:bb57966cb776 23 void Train::sendCommand(){
jasminealice 23:bb57966cb776 24 //lcd.cls();
jasminealice 23:bb57966cb776 25 //lcd.printf("Send command");
jasminealice 23:bb57966cb776 26 //lcd.printf("%d", inst);
jasminealice 20:32ba0a5f2d02 27 DCC_send_command(address, inst, nrPacket);
jasminealice 20:32ba0a5f2d02 28
jasminealice 20:32ba0a5f2d02 29 }
jasminealice 20:32ba0a5f2d02 30
jasminealice 21:31647d80614f 31 void Train::changeSpeed(unsigned int speed){
jasminealice 21:31647d80614f 32 inst = speed;
jasminealice 21:31647d80614f 33 }
jasminealice 21:31647d80614f 34
jasminealice 21:31647d80614f 35 void Train::Stop(){
jasminealice 23:bb57966cb776 36 inst = 0x40;
jasminealice 23:bb57966cb776 37 DCC_send_command(address, inst, nrPacket);
jasminealice 21:31647d80614f 38 }
jasminealice 21:31647d80614f 39
jasminealice 21:31647d80614f 40 unsigned int Train::getSpeed(){
jasminealice 21:31647d80614f 41 return inst;
jasminealice 21:31647d80614f 42 }
jasminealice 21:31647d80614f 43
jasminealice 21:31647d80614f 44 void Train::setPosition(int pos){
jasminealice 21:31647d80614f 45 position = pos;
jasminealice 21:31647d80614f 46 }
jasminealice 23:bb57966cb776 47
jasminealice 23:bb57966cb776 48 bool Train::isClockwise(){
jasminealice 23:bb57966cb776 49 return dirClockwise;
jasminealice 23:bb57966cb776 50 }
jasminealice 23:bb57966cb776 51
jasminealice 23:bb57966cb776 52 void Train::changeDirection(){
jasminealice 23:bb57966cb776 53 dirClockwise = !dirClockwise;
jasminealice 23:bb57966cb776 54 }
jasminealice 21:31647d80614f 55
jasminealice 21:31647d80614f 56 bool Train::checkInterupt(int pos){
jasminealice 21:31647d80614f 57 switch(pos){
jasminealice 21:31647d80614f 58 case 0:
jasminealice 21:31647d80614f 59 if(position == 13 || position == 1)
jasminealice 21:31647d80614f 60 return true;
jasminealice 21:31647d80614f 61 break;
jasminealice 21:31647d80614f 62 case 1:
jasminealice 21:31647d80614f 63 if(position == 0 || position == 2)
jasminealice 21:31647d80614f 64 return true;
jasminealice 21:31647d80614f 65 break;
jasminealice 21:31647d80614f 66 case 2:
jasminealice 21:31647d80614f 67 if(position == 1 || position == 3 || position == 4)
jasminealice 21:31647d80614f 68 return true;
jasminealice 21:31647d80614f 69 break;
jasminealice 21:31647d80614f 70 case 3:
jasminealice 21:31647d80614f 71 if(position == 9 || position == 2)
jasminealice 21:31647d80614f 72 return true;
jasminealice 21:31647d80614f 73 break;
jasminealice 21:31647d80614f 74 case 4:
jasminealice 21:31647d80614f 75 if(position == 6 || position == 2)
jasminealice 21:31647d80614f 76 return true;
jasminealice 21:31647d80614f 77 break;
jasminealice 21:31647d80614f 78 case 5:
jasminealice 21:31647d80614f 79 if(position == 11 || position == 6)
jasminealice 21:31647d80614f 80 return true;
jasminealice 21:31647d80614f 81 break;
jasminealice 21:31647d80614f 82 case 6:
jasminealice 21:31647d80614f 83 if(position == 7 || position == 4 || position == 5)
jasminealice 21:31647d80614f 84 return true;
jasminealice 21:31647d80614f 85 break;
jasminealice 21:31647d80614f 86 case 7:
jasminealice 21:31647d80614f 87 if(position == 8 || position == 6)
jasminealice 21:31647d80614f 88 return true;
jasminealice 21:31647d80614f 89 break;
jasminealice 21:31647d80614f 90 case 8:
jasminealice 21:31647d80614f 91 if(position == 7 || position == 9 || position == 10)
jasminealice 21:31647d80614f 92 return true;
jasminealice 21:31647d80614f 93 break;
jasminealice 21:31647d80614f 94 case 9:
jasminealice 21:31647d80614f 95 if(position == 3 || position == 8)
jasminealice 21:31647d80614f 96 return true;
jasminealice 21:31647d80614f 97 break;
jasminealice 21:31647d80614f 98 case 10:
jasminealice 21:31647d80614f 99 if(position == 8 || position == 12)
jasminealice 21:31647d80614f 100 return true;
jasminealice 21:31647d80614f 101 break;
jasminealice 21:31647d80614f 102 case 11:
jasminealice 21:31647d80614f 103 if(position == 5 || position == 12)
jasminealice 21:31647d80614f 104 return true;
jasminealice 21:31647d80614f 105 break;
jasminealice 21:31647d80614f 106 case 12:
jasminealice 21:31647d80614f 107 if(position == 11 || position == 13 || position == 10)
jasminealice 21:31647d80614f 108 return true;
jasminealice 21:31647d80614f 109 break;
jasminealice 21:31647d80614f 110 case 13:
jasminealice 21:31647d80614f 111 if(position == 0 || position == 12)
jasminealice 21:31647d80614f 112 return true;
jasminealice 21:31647d80614f 113 break;
jasminealice 21:31647d80614f 114 default:
jasminealice 21:31647d80614f 115 lcd.cls();
jasminealice 21:31647d80614f 116 lcd.printf("Train not right one");
jasminealice 21:31647d80614f 117 break;
jasminealice 21:31647d80614f 118 }
jasminealice 21:31647d80614f 119 return false;
jasminealice 20:32ba0a5f2d02 120 }