New project

Dependencies:   mbed TextLCD

Committer:
jasminealice
Date:
Tue Jun 12 15:02:44 2018 +0000
Revision:
21:31647d80614f
Parent:
20:32ba0a5f2d02
Child:
22:c024b20a0e2d
Comments for logic

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasminealice 0:57cbecaac770 1 #include "mbed.h"
Kwame 2:9bb410612929 2 #include "TextLCD.h"
jasminealice 18:f5824ba95892 3 #include "MCP23017.h"
jasminealice 18:f5824ba95892 4 #include "Train.h"
jasminealice 20:32ba0a5f2d02 5 #include "Switch.h"
jasminealice 20:32ba0a5f2d02 6 #include "Track.h"
jasminealice 21:31647d80614f 7 #include "Detector.h"
KwamsC 10:cda57976225f 8
jasminealice 16:55c3c5727f14 9 //Board 1
jasminealice 16:55c3c5727f14 10 /*----------------------------------------------------------------------------
jasminealice 16:55c3c5727f14 11 Pin definitions
jasminealice 16:55c3c5727f14 12 *----------------------------------------------------------------------------*/
jasminealice 17:b7b5f40cebff 13 DigitalOut Track(p20); // train track
jasminealice 17:b7b5f40cebff 14
jasminealice 17:b7b5f40cebff 15 DigitalOut myled1(LED1);
KwamsC 14:a5fd98a957e6 16 DigitalOut myled2(LED2);
KwamsC 14:a5fd98a957e6 17 DigitalOut myled3(LED3);
KwamsC 14:a5fd98a957e6 18 DigitalOut myled4(LED4);
jasminealice 17:b7b5f40cebff 19 DigitalOut externalLed1(p15);
jasminealice 17:b7b5f40cebff 20 DigitalOut externalLed2(p16);
jasminealice 17:b7b5f40cebff 21 DigitalOut externalLed3(p17);
jasminealice 17:b7b5f40cebff 22 DigitalOut externalLed4(p18);
KwamsC 14:a5fd98a957e6 23
KwamsC 14:a5fd98a957e6 24 TextLCD lcd(p22, p21, p23, p24, p25, p26); // lcd
KwamsC 14:a5fd98a957e6 25
jasminealice 16:55c3c5727f14 26 //AnalogIn Ain(p20); // pot. met.
KwamsC 14:a5fd98a957e6 27 /* Train detectors d2, d21, d22 (trainstation) */
jasminealice 16:55c3c5727f14 28 // detect_21(p17);
jasminealice 16:55c3c5727f14 29 //DigitalIn detect_22(p16);
jasminealice 16:55c3c5727f14 30 //DigitalIn detect_2(p15);
KwamsC 10:cda57976225f 31
jasminealice 16:55c3c5727f14 32 DigitalIn sw1(p29);
jasminealice 16:55c3c5727f14 33 DigitalIn sw2(p30);
jasminealice 16:55c3c5727f14 34 DigitalIn sw3(p11);
jasminealice 16:55c3c5727f14 35 DigitalIn sw4(p12);
jasminealice 21:31647d80614f 36
jasminealice 16:55c3c5727f14 37 //InterruptIn sw1(p5);
jasminealice 17:b7b5f40cebff 38 InterruptIn inter0(p13);
jasminealice 17:b7b5f40cebff 39 InterruptIn inter1(p14);
jasminealice 18:f5824ba95892 40 MCP23017 *mcp;
jasminealice 17:b7b5f40cebff 41
jasminealice 17:b7b5f40cebff 42 /*----------------------------------------------------------------------------
jasminealice 17:b7b5f40cebff 43 Addresses
jasminealice 17:b7b5f40cebff 44 *----------------------------------------------------------------------------*/
jasminealice 21:31647d80614f 45 const unsigned int DCCaddress_silver = 0x01;
jasminealice 21:31647d80614f 46 const unsigned int DCCaddress_red = 0x03;
jasminealice 17:b7b5f40cebff 47 const unsigned int DCCaddress_switch = 0x06;
KwamsC 14:a5fd98a957e6 48
KwamsC 14:a5fd98a957e6 49 /*----------------------------------------------------------------------------
KwamsC 14:a5fd98a957e6 50 Train movement
KwamsC 14:a5fd98a957e6 51 *----------------------------------------------------------------------------*/
KwamsC 14:a5fd98a957e6 52 //move backwards/reverse
jasminealice 21:31647d80614f 53 const unsigned int DCCinst_reverse = 0x48; //reverse speed
KwamsC 14:a5fd98a957e6 54
jasminealice 15:8d96f7a06103 55 //speed dial forward
jasminealice 21:31647d80614f 56 const unsigned int DCCinst_step2 = 0x72; //step 2
jasminealice 18:f5824ba95892 57 //const unsigned int DCCinst_step4 = 0x73; //step 4
jasminealice 18:f5824ba95892 58 //const unsigned int DCCinst_step6 = 0x68; //step 6 1/4 speed
jasminealice 16:55c3c5727f14 59 const unsigned int DCCinst_step13 = 0x78; //step 13 1/2 speed
jasminealice 18:f5824ba95892 60 //const unsigned int DCCinst_step20 = 0x75; //step 20 3/4 speed
jasminealice 18:f5824ba95892 61 //const unsigned int DCCinst_step28 = 0x7F; //step 28 Full speed
jasminealice 17:b7b5f40cebff 62 const unsigned int DCCinst_switch1 = 0x81; //Activate switch1
jasminealice 17:b7b5f40cebff 63 const unsigned int DCCinst_switch2 = 0x82; //Activate switch2
jasminealice 17:b7b5f40cebff 64 const unsigned int DCCinst_switch3 = 0x84; //Activate switch3
jasminealice 17:b7b5f40cebff 65 const unsigned int DCCinst_switch4 = 0x88; //Activate switch4
jasminealice 17:b7b5f40cebff 66 const unsigned int DCCinst_deactive_switch = 0x80; //Deactivate switches
KwamsC 14:a5fd98a957e6 67 //stop
jasminealice 16:55c3c5727f14 68 const unsigned int DCCinst_stop = 0x40; //forward and stop 01100000
KwamsC 10:cda57976225f 69
jasminealice 18:f5824ba95892 70 //detectors addresses
jasminealice 18:f5824ba95892 71 const unsigned int detector_0 = 0xFFFE;
jasminealice 18:f5824ba95892 72 const unsigned int detector_0_1 = 0xFFFC;
jasminealice 18:f5824ba95892 73 const unsigned int detector_1 = 0xFFFD;
jasminealice 18:f5824ba95892 74
jasminealice 17:b7b5f40cebff 75 /*----------------------------------------------------------------------------
jasminealice 17:b7b5f40cebff 76 Function definitions
jasminealice 17:b7b5f40cebff 77 *----------------------------------------------------------------------------*/
jasminealice 18:f5824ba95892 78 bool readDetector(DigitalIn detector);
jasminealice 17:b7b5f40cebff 79 bool readSwitch(DigitalIn theSwitch);
jasminealice 18:f5824ba95892 80 void initialize_mcp();
jasminealice 16:55c3c5727f14 81
KwamsC 10:cda57976225f 82
jasminealice 21:31647d80614f 83 //Trains
jasminealice 21:31647d80614f 84 Train redTrain(DCCaddress_red, DCCinst_step13, 2);
jasminealice 21:31647d80614f 85 Train silverTrain(DCCaddress_silver,DCCinst_step13, 12);
jasminealice 21:31647d80614f 86 //Switches
jasminealice 21:31647d80614f 87 Switch switch1(DCCaddress_switch,DCCinst_switch1);
jasminealice 21:31647d80614f 88 //Switch switch2(DCCaddress_switch,DCCinst_switch2);
jasminealice 21:31647d80614f 89 Switch switch3(DCCaddress_switch,DCCinst_switch3);
jasminealice 21:31647d80614f 90 Switch switch4(DCCaddress_switch,DCCinst_switch4);
jasminealice 21:31647d80614f 91 //Detectors
jasminealice 21:31647d80614f 92 Detector dect;
jasminealice 21:31647d80614f 93
jasminealice 16:55c3c5727f14 94 /*----------------------------------------------------------------------------
jasminealice 16:55c3c5727f14 95 Main
jasminealice 16:55c3c5727f14 96 *----------------------------------------------------------------------------*/
jasminealice 16:55c3c5727f14 97 int main() {
jasminealice 16:55c3c5727f14 98 /*sw1.rise(&testInterupt2);
jasminealice 16:55c3c5727f14 99 sw1.fall(&testInterupt);
jasminealice 16:55c3c5727f14 100 inter0.rise(&riseFunction);
jasminealice 16:55c3c5727f14 101 inter1.rise(&riseFunction);*/
jasminealice 21:31647d80614f 102
jasminealice 21:31647d80614f 103 initialize_mcp();
jasminealice 21:31647d80614f 104 int res[2] = {2,4};
jasminealice 21:31647d80614f 105 dect.reserveDetector(res); //Run trains counterclockwise and reserve the
jasminealice 21:31647d80614f 106 int res2[2] = {12,13};
jasminealice 21:31647d80614f 107 dect.reserveDetector(res2);//detectors in front
jasminealice 20:32ba0a5f2d02 108
jasminealice 21:31647d80614f 109 while(1){
jasminealice 21:31647d80614f 110 if(readSwitch(sw1)){ //Control switches
jasminealice 20:32ba0a5f2d02 111 switch1.switchOn();
jasminealice 20:32ba0a5f2d02 112 lcd.printf("Switch 1 on");
jasminealice 20:32ba0a5f2d02 113 //switch2.switchOn(); // Need to turn it off immediately!!!
jasminealice 20:32ba0a5f2d02 114 switch3.switchOn();
jasminealice 20:32ba0a5f2d02 115 switch4.switchOn();
jasminealice 20:32ba0a5f2d02 116
jasminealice 20:32ba0a5f2d02 117 }
jasminealice 20:32ba0a5f2d02 118 else{
jasminealice 20:32ba0a5f2d02 119 //DCC_send_command(DCCaddress_switch,DCCinst_deactive_switch,10);
jasminealice 20:32ba0a5f2d02 120 switch1.switchOff();
jasminealice 20:32ba0a5f2d02 121 //switch2.switchOff();
jasminealice 20:32ba0a5f2d02 122 switch3.switchOff();
jasminealice 20:32ba0a5f2d02 123 switch4.switchOff();
jasminealice 20:32ba0a5f2d02 124 lcd.printf("Switch 1 off");
jasminealice 20:32ba0a5f2d02 125
jasminealice 20:32ba0a5f2d02 126 }
jasminealice 20:32ba0a5f2d02 127
jasminealice 21:31647d80614f 128 if(readSwitch(sw2)){ //run train
jasminealice 21:31647d80614f 129 redTrain.goForward();
jasminealice 21:31647d80614f 130 silverTrain.goForward();
jasminealice 20:32ba0a5f2d02 131 }
jasminealice 20:32ba0a5f2d02 132 else
jasminealice 20:32ba0a5f2d02 133 {
jasminealice 21:31647d80614f 134 redTrain.Stop();
jasminealice 21:31647d80614f 135 silverTrain.Stop();
jasminealice 20:32ba0a5f2d02 136 }
jasminealice 21:31647d80614f 137 if(!readSwitch(sw3)){ //Change speed
jasminealice 21:31647d80614f 138 if(silverTrain.getSpeed() == DCCinst_step2)
jasminealice 21:31647d80614f 139 silverTrain.changeSpeed(DCCinst_step13);
jasminealice 21:31647d80614f 140 else
jasminealice 21:31647d80614f 141 silverTrain.changeSpeed(DCCinst_step2);
jasminealice 21:31647d80614f 142
jasminealice 20:32ba0a5f2d02 143 }
jasminealice 21:31647d80614f 144 }
jasminealice 20:32ba0a5f2d02 145
jasminealice 20:32ba0a5f2d02 146 /*lcd.printf("Start the journey");
jasminealice 18:f5824ba95892 147 time_t tstart, tend;
jasminealice 18:f5824ba95892 148 initialize_mcp();
jasminealice 18:f5824ba95892 149 int data = mcp->readRegister(0x12);
jasminealice 18:f5824ba95892 150 lcd.printf("%d", data);
jasminealice 18:f5824ba95892 151 wait(2);
jasminealice 21:31647d80614f 152 */
jasminealice 16:55c3c5727f14 153 }
KwamsC 10:cda57976225f 154
KwamsC 14:a5fd98a957e6 155 /*----------------------------------------------------------------------------
KwamsC 14:a5fd98a957e6 156 Functions
KwamsC 14:a5fd98a957e6 157 *----------------------------------------------------------------------------*/
jasminealice 4:4b62680f91b5 158
jasminealice 21:31647d80614f 159
jasminealice 21:31647d80614f 160 bool testInterupt(){
jasminealice 21:31647d80614f 161 int pos = mcp->readRegister(0x12);
jasminealice 15:8d96f7a06103 162 lcd.cls();
jasminealice 21:31647d80614f 163 //Check which train got the interupt
jasminealice 21:31647d80614f 164 Train *temptrain;
jasminealice 21:31647d80614f 165 if(redTrain.checkInterupt(pos)){
jasminealice 21:31647d80614f 166 redTrain.setPosition(pos);
jasminealice 21:31647d80614f 167 temptrain = &redTrain;
jasminealice 21:31647d80614f 168 }
jasminealice 21:31647d80614f 169 else if(silverTrain.checkInterupt(pos)){
jasminealice 21:31647d80614f 170 silverTrain.setPosition(pos);
jasminealice 21:31647d80614f 171 temptrain = &silverTrain;
jasminealice 21:31647d80614f 172 }
jasminealice 21:31647d80614f 173 else{
jasminealice 21:31647d80614f 174 //WE HAVE A PROBLEM
jasminealice 21:31647d80614f 175 lcd.printf("WRONG DETECTOR DETECTED");
jasminealice 21:31647d80614f 176 return false;
jasminealice 21:31647d80614f 177 }
jasminealice 21:31647d80614f 178
jasminealice 21:31647d80614f 179 switch(pos){
jasminealice 21:31647d80614f 180 case 0:
jasminealice 21:31647d80614f 181 case 1:
jasminealice 21:31647d80614f 182 case 2:
jasminealice 21:31647d80614f 183 //IF Clock 2->1
jasminealice 21:31647d80614f 184 //Disable Switch2
jasminealice 21:31647d80614f 185 //Free 3,4,9
jasminealice 21:31647d80614f 186 //Move forward
jasminealice 21:31647d80614f 187 //IF CC
jasminealice 21:31647d80614f 188 //Check if 4 or 3 is reserved
jasminealice 21:31647d80614f 189 //IF NOT randomize which way to go
jasminealice 21:31647d80614f 190 //0.3 chance to enable the switch2, reserve 3,9 and go
jasminealice 21:31647d80614f 191 //0.7 chance to disable switch2, reserve 4 and go
jasminealice 21:31647d80614f 192 //IF 4 is reserved
jasminealice 21:31647d80614f 193 //Enable switch2, reserve 3,9 and go
jasminealice 21:31647d80614f 194 //IF 3 reserved
jasminealice 21:31647d80614f 195 //Disable switch2, reserve 4 and go
jasminealice 21:31647d80614f 196 case 3:
jasminealice 21:31647d80614f 197 //Clock: Goes from 3 to 2
jasminealice 21:31647d80614f 198 //Enable switch2
jasminealice 21:31647d80614f 199 //Reserve 0,1,2, 12, 13
jasminealice 21:31647d80614f 200 //Go forward
jasminealice 21:31647d80614f 201 //Other Clock: Goes from 3->9
jasminealice 21:31647d80614f 202 //disable switch2
jasminealice 21:31647d80614f 203 //free 0,1,2,12,13
jasminealice 21:31647d80614f 204 //Go forward
jasminealice 21:31647d80614f 205 case 4:
jasminealice 21:31647d80614f 206 //IF CC : goes towards 6
jasminealice 21:31647d80614f 207 //free nr 0,1,2,12, 13
jasminealice 21:31647d80614f 208 //Turn of switch3
jasminealice 21:31647d80614f 209 //Check if 6 is reserved
jasminealice 21:31647d80614f 210 //IF yes STOP
jasminealice 21:31647d80614f 211 //else reserve 6,7,8 and go forward
jasminealice 21:31647d80614f 212 //IF Clock goes towards 2
jasminealice 21:31647d80614f 213 //free nr 5,6, 7, 8
jasminealice 21:31647d80614f 214 //Turn of switch2
jasminealice 21:31647d80614f 215 //Check if 2 is reserved
jasminealice 21:31647d80614f 216 //IF yes STOP
jasminealice 21:31647d80614f 217 //else reserve 12,13,0,1,2 go forward
jasminealice 21:31647d80614f 218
jasminealice 21:31647d80614f 219 case 5:
jasminealice 21:31647d80614f 220 //Clock: Goes from 5->6
jasminealice 21:31647d80614f 221 //Enable switch3
jasminealice 21:31647d80614f 222 //Reserve 6,7,8
jasminealice 21:31647d80614f 223 //Go forward
jasminealice 21:31647d80614f 224 //Other Clock: Goes from 5->11
jasminealice 21:31647d80614f 225 //disable switch3
jasminealice 21:31647d80614f 226 //free 6,7,8
jasminealice 21:31647d80614f 227 //Go forward
jasminealice 21:31647d80614f 228 case 6:
jasminealice 21:31647d80614f 229 //IF CC
jasminealice 21:31647d80614f 230 //Disable switch3
jasminealice 21:31647d80614f 231 //Free 4,5,11
jasminealice 21:31647d80614f 232 //Move forward
jasminealice 21:31647d80614f 233 //IF Clock
jasminealice 21:31647d80614f 234 //Check if 4 or 5 is reserved
jasminealice 21:31647d80614f 235 //IF NOT randomize which way to go
jasminealice 21:31647d80614f 236 //0.3 chance to enable the switch3, reserve 5,11 and go
jasminealice 21:31647d80614f 237 //0.7 chance to disable switch3, reserve 4 and go
jasminealice 21:31647d80614f 238 //IF 4 is reserved
jasminealice 21:31647d80614f 239 //Enable switch3, reserve 5,11 and go
jasminealice 21:31647d80614f 240 //IF 5 reserved
jasminealice 21:31647d80614f 241 //Disable switch3, reserve 4 and go
jasminealice 21:31647d80614f 242
jasminealice 21:31647d80614f 243
jasminealice 21:31647d80614f 244 case 7:
jasminealice 21:31647d80614f 245 case 8:
jasminealice 21:31647d80614f 246 //IF Clock 8->7
jasminealice 21:31647d80614f 247 //Disable switch4
jasminealice 21:31647d80614f 248 //Free 3,9,10
jasminealice 21:31647d80614f 249 //Move forward
jasminealice 21:31647d80614f 250 //IF CC
jasminealice 21:31647d80614f 251 //Check if 9 or 10 is reserved
jasminealice 21:31647d80614f 252 //IF NOT randomize which way to go
jasminealice 21:31647d80614f 253 //0.3 chance to enable the switch4, reserve 3,9 and go
jasminealice 21:31647d80614f 254 //0.7 chance to disable switch4, reserve 10 and go
jasminealice 21:31647d80614f 255 //IF 10 is reserved
jasminealice 21:31647d80614f 256 //Enable switch4, reserve 3,9 and go
jasminealice 21:31647d80614f 257 //IF 9 reserved
jasminealice 21:31647d80614f 258 //Disable switch4, reserve 10 and go
jasminealice 21:31647d80614f 259 case 9:
jasminealice 21:31647d80614f 260 //Clock: Goes from 9 to 8
jasminealice 21:31647d80614f 261 //Enable switch4
jasminealice 21:31647d80614f 262 //Reserve 6,7,8
jasminealice 21:31647d80614f 263 //Go forward
jasminealice 21:31647d80614f 264 //Other Clock: Goes from 9->3
jasminealice 21:31647d80614f 265 //disable switch4
jasminealice 21:31647d80614f 266 //free 6,7,8
jasminealice 21:31647d80614f 267 //Go forward
jasminealice 21:31647d80614f 268 case 10:
jasminealice 21:31647d80614f 269 //IF CC
jasminealice 21:31647d80614f 270 //free nr 6,7,8,9
jasminealice 21:31647d80614f 271 //Turn off switch1
jasminealice 21:31647d80614f 272 //Check if 12 is reserved
jasminealice 21:31647d80614f 273 //IF yes STOP
jasminealice 21:31647d80614f 274 //else reserve 12,13,0,1,2 and go forward
jasminealice 21:31647d80614f 275 //IF Clock
jasminealice 21:31647d80614f 276 //Free nr 0,1,2,11, 12, 13
jasminealice 21:31647d80614f 277 //Turn off switch4
jasminealice 21:31647d80614f 278 //Check if 8 is reserved
jasminealice 21:31647d80614f 279 //IF yes STOP
jasminealice 21:31647d80614f 280 //else reserve 6,7,8 go forward
jasminealice 21:31647d80614f 281 case 11:
jasminealice 21:31647d80614f 282 //Clock: Goes from 11 to 12
jasminealice 21:31647d80614f 283 //Enable switch1
jasminealice 21:31647d80614f 284 //Reserve 0,1,2, 12, 13
jasminealice 21:31647d80614f 285 //Go forward
jasminealice 21:31647d80614f 286 //Other Clock: Goes from 11->5
jasminealice 21:31647d80614f 287 //disable switch1
jasminealice 21:31647d80614f 288 //free 0,1,2,12,13
jasminealice 21:31647d80614f 289 //Go forward
jasminealice 21:31647d80614f 290 case 12:
jasminealice 21:31647d80614f 291 //IF CC: 12->13
jasminealice 21:31647d80614f 292 //Disable switch1
jasminealice 21:31647d80614f 293 //Free 5,10,11
jasminealice 21:31647d80614f 294 //Move forward
jasminealice 21:31647d80614f 295 //IF Clock
jasminealice 21:31647d80614f 296 //Check if 11 or 10 is reserved
jasminealice 21:31647d80614f 297 //IF NOT randomize which way to go
jasminealice 21:31647d80614f 298 //0.3 chance to enable switch1, reserve 5,11 and go
jasminealice 21:31647d80614f 299 //0.7 chance to disable switch1, reserve 10 and go
jasminealice 21:31647d80614f 300 //IF 10 is reserved
jasminealice 21:31647d80614f 301 //Enable switch1, reserve 5,11 and go
jasminealice 21:31647d80614f 302 //IF 11 reserved
jasminealice 21:31647d80614f 303 //Disable switch1,reserve 10 and go
jasminealice 21:31647d80614f 304 case 13:
jasminealice 21:31647d80614f 305
jasminealice 21:31647d80614f 306 lcd.printf("In case ");
jasminealice 21:31647d80614f 307 lcd.printf("%d", pos);
jasminealice 21:31647d80614f 308 break;
jasminealice 21:31647d80614f 309 default:
jasminealice 21:31647d80614f 310 lcd.printf("Not in a valid case");
jasminealice 21:31647d80614f 311 break;
jasminealice 21:31647d80614f 312 }
jasminealice 21:31647d80614f 313
jasminealice 21:31647d80614f 314 return true;
jasminealice 15:8d96f7a06103 315 }
jasminealice 15:8d96f7a06103 316
jasminealice 21:31647d80614f 317 /*
jasminealice 15:8d96f7a06103 318 void testInterupt2(){
jasminealice 15:8d96f7a06103 319 lcd.cls();
jasminealice 15:8d96f7a06103 320 myled = 0;
jasminealice 15:8d96f7a06103 321 lcd.printf("In interupt2 function");
jasminealice 15:8d96f7a06103 322 lcd.printf("%d", sw1.read());
jasminealice 15:8d96f7a06103 323 myled4 = 1;
jasminealice 15:8d96f7a06103 324 }
jasminealice 15:8d96f7a06103 325
jasminealice 15:8d96f7a06103 326 void riseFunction(){
jasminealice 15:8d96f7a06103 327 lcd.printf("In rise function");
jasminealice 15:8d96f7a06103 328 lcd.printf("%d", inter1.read());
jasminealice 15:8d96f7a06103 329 }
jasminealice 15:8d96f7a06103 330
jasminealice 15:8d96f7a06103 331 void fallFunction(){
jasminealice 15:8d96f7a06103 332 lcd.printf("In fall function");
jasminealice 15:8d96f7a06103 333 lcd.printf("%d", inter1.read());
jasminealice 16:55c3c5727f14 334 }*/
jasminealice 16:55c3c5727f14 335
jasminealice 17:b7b5f40cebff 336 bool readSwitch(DigitalIn theSwitch){
jasminealice 17:b7b5f40cebff 337 int val = theSwitch.read();
jasminealice 16:55c3c5727f14 338 lcd.printf("%d", val);
jasminealice 16:55c3c5727f14 339 if(val == 1)
jasminealice 16:55c3c5727f14 340 return true;
jasminealice 16:55c3c5727f14 341 else
jasminealice 16:55c3c5727f14 342 return false;
tanjinamicky 13:78a2481fd65b 343 }
tanjinamicky 13:78a2481fd65b 344
jasminealice 18:f5824ba95892 345 bool readDetector(DigitalIn detector){
jasminealice 18:f5824ba95892 346 /*int val = detect.read();
jasminealice 18:f5824ba95892 347 if(val == 1)
jasminealice 15:8d96f7a06103 348 {
jasminealice 15:8d96f7a06103 349 lcd.cls();
jasminealice 18:f5824ba95892 350 lcd.printf("Detect: ");
jasminealice 18:f5824ba95892 351 lcd.printf("%d", val);
jasminealice 15:8d96f7a06103 352 return true;
jasminealice 16:55c3c5727f14 353 }*/
jasminealice 17:b7b5f40cebff 354 return false;
jasminealice 15:8d96f7a06103 355 }
tanjinamicky 13:78a2481fd65b 356
jasminealice 18:f5824ba95892 357 void initialize_mcp(){
jasminealice 18:f5824ba95892 358 mcp = new MCP23017(p28, p27, 0x40);
jasminealice 18:f5824ba95892 359 mcp->reset();
jasminealice 18:f5824ba95892 360 mcp->writeRegister(0x00, (unsigned char )0xff);
jasminealice 18:f5824ba95892 361 mcp->writeRegister(0x01, (unsigned char )0xff);
jasminealice 18:f5824ba95892 362 mcp->writeRegister(0x02, (unsigned char )0x00);
jasminealice 18:f5824ba95892 363 mcp->writeRegister(0x03, (unsigned char )0x00);
jasminealice 18:f5824ba95892 364 mcp->writeRegister(0x04, (unsigned char )0xff);
jasminealice 18:f5824ba95892 365 mcp->writeRegister(0x05, (unsigned char )0xff);
jasminealice 18:f5824ba95892 366 mcp->writeRegister(0x06, (unsigned char )0xff);
jasminealice 18:f5824ba95892 367 mcp->writeRegister(0x07, (unsigned char )0xff);
jasminealice 18:f5824ba95892 368 mcp->writeRegister(0x08, (unsigned char )0xff);
jasminealice 18:f5824ba95892 369 mcp->writeRegister(0x09, (unsigned char )0xff);
jasminealice 18:f5824ba95892 370 mcp->writeRegister(0x0a, (unsigned char )0x42);
jasminealice 18:f5824ba95892 371 mcp->writeRegister(0x0b, (unsigned char )0x42);
jasminealice 18:f5824ba95892 372 mcp->writeRegister(0x0c, (unsigned char )0x00);
jasminealice 18:f5824ba95892 373 mcp->writeRegister(0x0d, (unsigned char )0x00);
jasminealice 18:f5824ba95892 374 }