Finn Quicke / Mbed 2 deprecated TDP3_ColourSensor_OOP

Dependencies:   mbed

Committer:
quickeman
Date:
Mon Mar 18 11:04:39 2019 +0000
Revision:
1:e4320a230347
Parent:
0:c3344ac96db1
Various updates; removed print statements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
quickeman 0:c3344ac96db1 1 // ColourSensor.cpp
quickeman 0:c3344ac96db1 2
quickeman 0:c3344ac96db1 3 #include "ColourSensor_H.h"
quickeman 0:c3344ac96db1 4 #include "mbed.h"
quickeman 0:c3344ac96db1 5
quickeman 0:c3344ac96db1 6 ColourSensor::ColourSensor(PinName If, PinName Which, PinName Out):
quickeman 0:c3344ac96db1 7 inIf(If), inWhich(Which), solenoid(Out) {
quickeman 0:c3344ac96db1 8 // Class constructor for colour sensor & solenoid
quickeman 0:c3344ac96db1 9 // Sets initial conditions of operation
quickeman 0:c3344ac96db1 10
quickeman 0:c3344ac96db1 11 initialConditions();
quickeman 0:c3344ac96db1 12 }
quickeman 0:c3344ac96db1 13
quickeman 0:c3344ac96db1 14 void ColourSensor::initialConditions() {
quickeman 0:c3344ac96db1 15 // set initial conditions & variables
quickeman 1:e4320a230347 16 //printf("Setting Initial Conditions\n\r");
quickeman 0:c3344ac96db1 17 detectedIf = 0;
quickeman 0:c3344ac96db1 18 detectedIfOld = 0;
quickeman 0:c3344ac96db1 19 newDetection = 0;
quickeman 0:c3344ac96db1 20 diskHave = 0;
quickeman 0:c3344ac96db1 21
quickeman 0:c3344ac96db1 22 solenoidState = 0;
quickeman 0:c3344ac96db1 23
quickeman 0:c3344ac96db1 24 toggleA = 0;
quickeman 0:c3344ac96db1 25 toggleB = 0;
quickeman 0:c3344ac96db1 26 toggleConst = 1;
quickeman 0:c3344ac96db1 27
quickeman 0:c3344ac96db1 28 solenoidSet(0);
quickeman 0:c3344ac96db1 29 }
quickeman 0:c3344ac96db1 30
quickeman 0:c3344ac96db1 31 void ColourSensor::solenoidSet(bool state) {
quickeman 0:c3344ac96db1 32 // Turns solenoid on/off, sets solenoid's pull strength
quickeman 0:c3344ac96db1 33 // state: pass 1 or 0 for solenoid ON or OFF respectively
quickeman 0:c3344ac96db1 34
quickeman 0:c3344ac96db1 35 if (state) {
quickeman 0:c3344ac96db1 36 solenoid.write(1);
quickeman 1:e4320a230347 37 //printf("Solenoid has been turn ON\n\r");
quickeman 0:c3344ac96db1 38 }
quickeman 0:c3344ac96db1 39
quickeman 0:c3344ac96db1 40 else {
quickeman 0:c3344ac96db1 41 solenoid.write(0);
quickeman 1:e4320a230347 42 //printf("Solenoid has been turned OFF\n\r");
quickeman 0:c3344ac96db1 43 }
quickeman 0:c3344ac96db1 44
quickeman 0:c3344ac96db1 45 solenoidState = state;
quickeman 0:c3344ac96db1 46 }
quickeman 0:c3344ac96db1 47
quickeman 0:c3344ac96db1 48 void ColourSensor::readIf() {
quickeman 0:c3344ac96db1 49 // Interrupt function (software): reads in colour detection state
quickeman 0:c3344ac96db1 50
quickeman 0:c3344ac96db1 51 // Update variables
quickeman 0:c3344ac96db1 52 detectedIfOld = detectedIf;
quickeman 0:c3344ac96db1 53 newDetection = 0;
quickeman 0:c3344ac96db1 54
quickeman 1:e4320a230347 55 //printf("Reading colour detection state\n\r");
quickeman 0:c3344ac96db1 56
quickeman 1:e4320a230347 57 detectedIf = !inIf.read();
quickeman 0:c3344ac96db1 58
quickeman 0:c3344ac96db1 59 if ((detectedIf && !detectedIfOld)) {
quickeman 0:c3344ac96db1 60 // if colour is newly detected
quickeman 0:c3344ac96db1 61 newDetection = 1;
quickeman 0:c3344ac96db1 62 toggleA = 1;
quickeman 1:e4320a230347 63 //printf("Colour newly detected\n\r");
quickeman 0:c3344ac96db1 64 }
quickeman 0:c3344ac96db1 65 }
quickeman 0:c3344ac96db1 66
quickeman 0:c3344ac96db1 67 void ColourSensor::readWhich() {
quickeman 0:c3344ac96db1 68 //Interrupt function (software): reads in which colour is detected
quickeman 0:c3344ac96db1 69
quickeman 1:e4320a230347 70 detectedWhich = !inWhich.read();
quickeman 0:c3344ac96db1 71
quickeman 1:e4320a230347 72 //printf("Colour detected; code: %d\n\r", detectedWhich);
quickeman 0:c3344ac96db1 73
quickeman 0:c3344ac96db1 74 toggleB = 1;
quickeman 0:c3344ac96db1 75 }
quickeman 0:c3344ac96db1 76
quickeman 0:c3344ac96db1 77 void ColourSensor::makeColourActive() {
quickeman 0:c3344ac96db1 78 // Interrupt function (software): reactivates colour processing
quickeman 0:c3344ac96db1 79 toggleConst = 1;
quickeman 0:c3344ac96db1 80
quickeman 1:e4320a230347 81 //printf("Colour processing Activated\n\r");
quickeman 0:c3344ac96db1 82 }
quickeman 0:c3344ac96db1 83
quickeman 0:c3344ac96db1 84 void ColourSensor::process() {
quickeman 0:c3344ac96db1 85 // Processes change of state in colour detection
quickeman 1:e4320a230347 86 //printf("Colour process() called\n\r");
quickeman 0:c3344ac96db1 87
quickeman 0:c3344ac96db1 88 if (!diskHave && newDetection) {
quickeman 0:c3344ac96db1 89 // If: No disk & colour newly detected, turn on solenoid
quickeman 1:e4320a230347 90 //printf("Colour detected; collecting disk\n\r");
quickeman 0:c3344ac96db1 91
quickeman 0:c3344ac96db1 92 solenoidSet(1);
quickeman 0:c3344ac96db1 93 diskHave = 1;
quickeman 0:c3344ac96db1 94 diskColour = detectedWhich;
quickeman 0:c3344ac96db1 95 }
quickeman 0:c3344ac96db1 96
quickeman 0:c3344ac96db1 97 else if ((diskHave && newDetection) && (detectedWhich == diskColour)) {
quickeman 0:c3344ac96db1 98 // If: Have disk & colour newly detected & disk colour is same as detected colour, turn off solenoid
quickeman 1:e4320a230347 99 //printf("Correct colour detected; depositing disk\n\r");
quickeman 0:c3344ac96db1 100 solenoidSet(0);
quickeman 0:c3344ac96db1 101 diskHave = 0;
quickeman 0:c3344ac96db1 102 }
quickeman 0:c3344ac96db1 103
quickeman 0:c3344ac96db1 104 else if ((diskHave && newDetection) && (detectedWhich != diskColour)) {
quickeman 0:c3344ac96db1 105 // If: Have disk & colour newly detected & disk colour is NOT same as detected colour, update variables
quickeman 1:e4320a230347 106 //printf("Wrong colour detected; keeping disk\n\r");
quickeman 0:c3344ac96db1 107 }
quickeman 0:c3344ac96db1 108
quickeman 0:c3344ac96db1 109 else {
quickeman 1:e4320a230347 110 //printf("Cool (y)\n\r");
quickeman 0:c3344ac96db1 111 }
quickeman 0:c3344ac96db1 112
quickeman 0:c3344ac96db1 113 // Temporarily disable colour processing
quickeman 1:e4320a230347 114 //printf("Disabling colour processing\n\r");
quickeman 0:c3344ac96db1 115 toggleConst = 0;
quickeman 0:c3344ac96db1 116 }