fatboyslim / Mbed 2 deprecated buttontest

Dependencies:   FRDM-TFC mbed

Committer:
bbbobbbieo
Date:
Wed Feb 25 15:32:56 2015 +0000
Revision:
14:f43b386b8b5d
Parent:
13:6ad980fd3394
Child:
15:830209e846d5
hopefully active rear wheel turning?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bbbobbbieo 3:c7caa058fc50 1 //#include "mbed.h"
bbbobbbieo 1:21d40d90b2f0 2 #include "TFC.h"
bbbobbbieo 0:d57117b2188d 3
bbbobbbieo 0:d57117b2188d 4 DigitalOut myled(LED1);
bbbobbbieo 0:d57117b2188d 5
bbbobbbieo 14:f43b386b8b5d 6 int main()
bbbobbbieo 1:21d40d90b2f0 7 {
bbbobbbieo 7:455e7dd338ee 8 //run this before anything
bbbobbbieo 2:d8a51492b646 9 TFC_Init();
bbbobbbieo 14:f43b386b8b5d 10
bbbobbbieo 7:455e7dd338ee 11 //variables
bbbobbbieo 4:7584ff0426f1 12 float current_servo_position = 0;
bbbobbbieo 6:44d1079f076c 13 float current_left_motor_speed = 0;
bbbobbbieo 6:44d1079f076c 14 float current_right_motor_speed = 0;
bbbobbbieo 6:44d1079f076c 15 bool rear_motor_enable_flag = true;
bbbobbbieo 7:455e7dd338ee 16 bool linescan_ping_pong = false;
bbbobbbieo 9:2b028ee421ad 17 bool linescan_enable = true;
bbbobbbieo 14:f43b386b8b5d 18
bbbobbbieo 11:d65d6d7fc85e 19 int black_values_list[128];
bbbobbbieo 11:d65d6d7fc85e 20 int black_value_count = 0;
bbbobbbieo 11:d65d6d7fc85e 21 int black_center_value = 0;
bbbobbbieo 11:d65d6d7fc85e 22 int sum_black = 0;
bbbobbbieo 14:f43b386b8b5d 23 int violence_level = 0;
bbbobbbieo 14:f43b386b8b5d 24
bbbobbbieo 14:f43b386b8b5d 25
bbbobbbieo 9:2b028ee421ad 26 //uint16_t MyImage0Buffer[2][128];
bbbobbbieo 9:2b028ee421ad 27 //uint16_t MyImage1Buffer[2][128];
bbbobbbieo 14:f43b386b8b5d 28
bbbobbbieo 14:f43b386b8b5d 29
bbbobbbieo 7:455e7dd338ee 30 // major loop
bbbobbbieo 14:f43b386b8b5d 31 while(1) {
bbbobbbieo 14:f43b386b8b5d 32
bbbobbbieo 14:f43b386b8b5d 33 if (TFC_ReadPushButton(0) != 0 ) {
bbbobbbieo 14:f43b386b8b5d 34 /*(TFC_BAT_LED0_ON;
bbbobbbieo 14:f43b386b8b5d 35 wait(0.004);
bbbobbbieo 14:f43b386b8b5d 36 TFC_BAT_LED0_OFF;
bbbobbbieo 14:f43b386b8b5d 37 wait(0.004);*/
bbbobbbieo 14:f43b386b8b5d 38
bbbobbbieo 14:f43b386b8b5d 39 current_servo_position = current_servo_position-.005;
bbbobbbieo 14:f43b386b8b5d 40 if(current_servo_position <= -0.4)
bbbobbbieo 14:f43b386b8b5d 41 current_servo_position = -0.4;
bbbobbbieo 14:f43b386b8b5d 42 TFC_SetServo(0, current_servo_position);
bbbobbbieo 14:f43b386b8b5d 43 }// end check button0
bbbobbbieo 14:f43b386b8b5d 44
bbbobbbieo 14:f43b386b8b5d 45 else {
bbbobbbieo 14:f43b386b8b5d 46 //TFC_BAT_LED0_ON;
bbbobbbieo 14:f43b386b8b5d 47 }
bbbobbbieo 14:f43b386b8b5d 48
bbbobbbieo 14:f43b386b8b5d 49 if (TFC_ReadPushButton(1) != 0 ) {
bbbobbbieo 14:f43b386b8b5d 50 /*TFC_BAT_LED1_ON;
bbbobbbieo 14:f43b386b8b5d 51 wait(0.004);
bbbobbbieo 14:f43b386b8b5d 52 TFC_BAT_LED1_OFF;
bbbobbbieo 14:f43b386b8b5d 53 wait(0.004);*/
bbbobbbieo 14:f43b386b8b5d 54
bbbobbbieo 14:f43b386b8b5d 55 current_servo_position = current_servo_position+.005;
bbbobbbieo 14:f43b386b8b5d 56 if(current_servo_position >= 0.4)
bbbobbbieo 14:f43b386b8b5d 57 current_servo_position = 0.4;
bbbobbbieo 14:f43b386b8b5d 58 TFC_SetServo(0, current_servo_position);
bbbobbbieo 14:f43b386b8b5d 59 }// end check button1
bbbobbbieo 14:f43b386b8b5d 60
bbbobbbieo 14:f43b386b8b5d 61 else {
bbbobbbieo 14:f43b386b8b5d 62 //TFC_BAT_LED1_ON;
bbbobbbieo 14:f43b386b8b5d 63 }
bbbobbbieo 14:f43b386b8b5d 64
bbbobbbieo 14:f43b386b8b5d 65
bbbobbbieo 14:f43b386b8b5d 66 if(rear_motor_enable_flag) {
bbbobbbieo 14:f43b386b8b5d 67 TFC_HBRIDGE_ENABLE;
bbbobbbieo 14:f43b386b8b5d 68 //current_left_motor_speed = current_left_motor_speed + .3*(TFC_ReadPot(0));
bbbobbbieo 14:f43b386b8b5d 69 //current_right_motor_speed = current_right_motor_speed + .3*(TFC_ReadPot(1));
bbbobbbieo 14:f43b386b8b5d 70
bbbobbbieo 14:f43b386b8b5d 71 //current_left_motor_speed = .3*(TFC_ReadPot(0));
bbbobbbieo 14:f43b386b8b5d 72 //current_right_motor_speed = .3*(TFC_ReadPot(1));
bbbobbbieo 14:f43b386b8b5d 73
bbbobbbieo 14:f43b386b8b5d 74 current_left_motor_speed = (TFC_ReadPot(0));
bbbobbbieo 14:f43b386b8b5d 75 current_right_motor_speed = (TFC_ReadPot(1));
bbbobbbieo 14:f43b386b8b5d 76
bbbobbbieo 14:f43b386b8b5d 77 violence_level = int(TFC_GetDIP_Switch());
bbbobbbieo 14:f43b386b8b5d 78
bbbobbbieo 14:f43b386b8b5d 79 if (violence_level==1)
bbbobbbieo 7:455e7dd338ee 80 {
bbbobbbieo 14:f43b386b8b5d 81 current_left_motor_speed = .2;
bbbobbbieo 14:f43b386b8b5d 82 current_right_motor_speed = .2;
bbbobbbieo 14:f43b386b8b5d 83 }
bbbobbbieo 14:f43b386b8b5d 84
bbbobbbieo 14:f43b386b8b5d 85 if(current_left_motor_speed >= 0.4)
bbbobbbieo 14:f43b386b8b5d 86 current_left_motor_speed= 0.4;
bbbobbbieo 14:f43b386b8b5d 87 if(current_right_motor_speed >= 0.4)
bbbobbbieo 14:f43b386b8b5d 88 current_right_motor_speed= 0.4;
bbbobbbieo 14:f43b386b8b5d 89 if(current_left_motor_speed <= -0.4)
bbbobbbieo 14:f43b386b8b5d 90 current_left_motor_speed= -0.4;
bbbobbbieo 14:f43b386b8b5d 91 if(current_right_motor_speed <= -0.4)
bbbobbbieo 14:f43b386b8b5d 92 current_right_motor_speed= -0.4;
bbbobbbieo 14:f43b386b8b5d 93
bbbobbbieo 14:f43b386b8b5d 94 TFC_SetMotorPWM(current_left_motor_speed, current_right_motor_speed);
bbbobbbieo 14:f43b386b8b5d 95 }// end motor enabled
bbbobbbieo 14:f43b386b8b5d 96 else {
bbbobbbieo 14:f43b386b8b5d 97 TFC_HBRIDGE_DISABLE;
bbbobbbieo 14:f43b386b8b5d 98 }// end motor disabled
bbbobbbieo 14:f43b386b8b5d 99
bbbobbbieo 14:f43b386b8b5d 100 if (linescan_enable) {
bbbobbbieo 14:f43b386b8b5d 101 if (TFC_LineScanImageReady !=0) {
bbbobbbieo 14:f43b386b8b5d 102
bbbobbbieo 14:f43b386b8b5d 103 if (linescan_ping_pong) { //checking channel 0
bbbobbbieo 14:f43b386b8b5d 104 //...
bbbobbbieo 14:f43b386b8b5d 105 //uint8_t shitnum = uint8_t(*TFC_LineScanImage0>>3);
bbbobbbieo 14:f43b386b8b5d 106 uint8_t shitnum = 1;
bbbobbbieo 14:f43b386b8b5d 107 if (*(TFC_LineScanImage0+64) > 800)
bbbobbbieo 14:f43b386b8b5d 108 shitnum = 15;
bbbobbbieo 14:f43b386b8b5d 109 else if((*(TFC_LineScanImage0+64) > 450))
bbbobbbieo 14:f43b386b8b5d 110 shitnum = 7;
bbbobbbieo 14:f43b386b8b5d 111 else if((*(TFC_LineScanImage0+64) > 400))
bbbobbbieo 14:f43b386b8b5d 112 shitnum = 3;
bbbobbbieo 14:f43b386b8b5d 113 else
bbbobbbieo 14:f43b386b8b5d 114 shitnum = 1;
bbbobbbieo 14:f43b386b8b5d 115
bbbobbbieo 14:f43b386b8b5d 116 TFC_SetBatteryLED(shitnum);
bbbobbbieo 14:f43b386b8b5d 117
bbbobbbieo 14:f43b386b8b5d 118 // checking for center line?
bbbobbbieo 14:f43b386b8b5d 119 for (uint16_t i=0; i<128; i++) {
bbbobbbieo 14:f43b386b8b5d 120 if ((*(TFC_LineScanImage0+i) < 300)) {
bbbobbbieo 14:f43b386b8b5d 121 black_values_list[black_value_count] = i;
bbbobbbieo 14:f43b386b8b5d 122 black_value_count++;
bbbobbbieo 14:f43b386b8b5d 123 }
bbbobbbieo 14:f43b386b8b5d 124 }
bbbobbbieo 14:f43b386b8b5d 125
bbbobbbieo 14:f43b386b8b5d 126 for(int i=0; i<black_value_count; i++) {
bbbobbbieo 14:f43b386b8b5d 127 sum_black += black_values_list[i];
bbbobbbieo 14:f43b386b8b5d 128 }
bbbobbbieo 14:f43b386b8b5d 129
bbbobbbieo 14:f43b386b8b5d 130 black_center_value= sum_black / black_value_count;
bbbobbbieo 14:f43b386b8b5d 131
bbbobbbieo 14:f43b386b8b5d 132 if (black_center_value < 64) {
bbbobbbieo 14:f43b386b8b5d 133
bbbobbbieo 14:f43b386b8b5d 134
bbbobbbieo 14:f43b386b8b5d 135 //current_servo_position= float(-0.2);
bbbobbbieo 14:f43b386b8b5d 136 /*if(black_center_value < 40)
bbbobbbieo 14:f43b386b8b5d 137 current_servo_position = current_servo_position-.0004;
bbbobbbieo 14:f43b386b8b5d 138 else
bbbobbbieo 14:f43b386b8b5d 139 current_servo_position = current_servo_position-.0001;*/
bbbobbbieo 14:f43b386b8b5d 140
bbbobbbieo 14:f43b386b8b5d 141 //current_servo_position= float(.009375*black_center_value-(.6));
bbbobbbieo 14:f43b386b8b5d 142 //current_servo_position= float(.00625*black_center_value-(.4));
bbbobbbieo 14:f43b386b8b5d 143 current_servo_position= float(.015625*black_center_value-(1));
bbbobbbieo 14:f43b386b8b5d 144 if(current_servo_position <= -0.4)
bbbobbbieo 14:f43b386b8b5d 145 current_servo_position = -0.4;
bbbobbbieo 14:f43b386b8b5d 146 TFC_SetServo(0, current_servo_position);
bbbobbbieo 11:d65d6d7fc85e 147
bbbobbbieo 11:d65d6d7fc85e 148
bbbobbbieo 14:f43b386b8b5d 149 current_left_motor_speed = current_left_motor_speed - float(64-black_center_value)*.0025;
bbbobbbieo 14:f43b386b8b5d 150 current_right_motor_speed = current_right_motor_speed + float(64-black_center_value)*.0025;
bbbobbbieo 14:f43b386b8b5d 151
bbbobbbieo 14:f43b386b8b5d 152 TFC_SetMotorPWM(current_left_motor_speed, current_right_motor_speed);
bbbobbbieo 14:f43b386b8b5d 153
bbbobbbieo 7:455e7dd338ee 154 }
bbbobbbieo 14:f43b386b8b5d 155
bbbobbbieo 14:f43b386b8b5d 156 if (black_center_value > 64) {
bbbobbbieo 14:f43b386b8b5d 157 //current_servo_position = current_servo_position+.0001;
bbbobbbieo 14:f43b386b8b5d 158 //current_servo_position= float();
bbbobbbieo 14:f43b386b8b5d 159 //current_servo_position= float(0.2);
bbbobbbieo 14:f43b386b8b5d 160 /*if(black_center_value > 88)
bbbobbbieo 14:f43b386b8b5d 161 current_servo_position = current_servo_position+.0004;
bbbobbbieo 14:f43b386b8b5d 162 else
bbbobbbieo 14:f43b386b8b5d 163 current_servo_position = current_servo_position+.0001;*/
bbbobbbieo 14:f43b386b8b5d 164
bbbobbbieo 14:f43b386b8b5d 165 //current_servo_position= float(.009375*black_center_value-(.6));
bbbobbbieo 14:f43b386b8b5d 166 //current_servo_position= float(.00625*black_center_value-(.4));
bbbobbbieo 14:f43b386b8b5d 167 current_servo_position= float(.015625*black_center_value-(1));
bbbobbbieo 14:f43b386b8b5d 168 if( current_servo_position >= +0.4)
bbbobbbieo 14:f43b386b8b5d 169 current_servo_position = +0.4;
bbbobbbieo 14:f43b386b8b5d 170 TFC_SetServo(0, current_servo_position);
bbbobbbieo 14:f43b386b8b5d 171
bbbobbbieo 14:f43b386b8b5d 172 current_left_motor_speed = current_left_motor_speed + float(black_center_value-64)*.0025;
bbbobbbieo 14:f43b386b8b5d 173 current_right_motor_speed = current_right_motor_speed - float(black_center_value-64)*.0025;
bbbobbbieo 14:f43b386b8b5d 174
bbbobbbieo 14:f43b386b8b5d 175 TFC_SetMotorPWM(current_left_motor_speed, current_right_motor_speed);
bbbobbbieo 14:f43b386b8b5d 176
bbbobbbieo 14:f43b386b8b5d 177 }
bbbobbbieo 14:f43b386b8b5d 178
bbbobbbieo 14:f43b386b8b5d 179 black_value_count = 0;
bbbobbbieo 14:f43b386b8b5d 180 black_center_value = 0;
bbbobbbieo 14:f43b386b8b5d 181 sum_black = 0;
bbbobbbieo 14:f43b386b8b5d 182
bbbobbbieo 14:f43b386b8b5d 183 // end checking for center line
bbbobbbieo 14:f43b386b8b5d 184
bbbobbbieo 14:f43b386b8b5d 185
bbbobbbieo 14:f43b386b8b5d 186 linescan_ping_pong = false;
bbbobbbieo 14:f43b386b8b5d 187 } // end checking channel 0
bbbobbbieo 14:f43b386b8b5d 188 else { //checking channel 1
bbbobbbieo 14:f43b386b8b5d 189 //...
bbbobbbieo 14:f43b386b8b5d 190 //TFC_SetBatteryLED(*TFC_LineScanImage1+4);
bbbobbbieo 14:f43b386b8b5d 191 linescan_ping_pong = true;
bbbobbbieo 14:f43b386b8b5d 192 }
bbbobbbieo 14:f43b386b8b5d 193
bbbobbbieo 14:f43b386b8b5d 194
bbbobbbieo 7:455e7dd338ee 195 TFC_LineScanImageReady ==0; // since we used it, we reset the flag
bbbobbbieo 14:f43b386b8b5d 196 }// end imageready
bbbobbbieo 14:f43b386b8b5d 197 }// end linescan stuff
bbbobbbieo 0:d57117b2188d 198 }
bbbobbbieo 0:d57117b2188d 199 }
bbbobbbieo 8:946806df7347 200
bbbobbbieo 8:946806df7347 201
bbbobbbieo 8:946806df7347 202
bbbobbbieo 8:946806df7347 203 // shit code
bbbobbbieo 8:946806df7347 204
bbbobbbieo 8:946806df7347 205 //this block is the worst image processing algorithm ever
bbbobbbieo 8:946806df7347 206 /*
bbbobbbieo 8:946806df7347 207 black_values_list[];
bbbobbbieo 8:946806df7347 208 black_value_count = 0;
bbbobbbieo 8:946806df7347 209 black_center_value = 0;
bbbobbbieo 8:946806df7347 210 sum_black = 0;
bbbobbbieo 8:946806df7347 211
bbbobbbieo 8:946806df7347 212 for (int i=0; i<128; i++)
bbbobbbieo 8:946806df7347 213 {
bbbobbbieo 14:f43b386b8b5d 214 if (camera_data[i]< 100)
bbbobbbieo 8:946806df7347 215 {
bbbobbbieo 8:946806df7347 216 black_values_list[black_value_count] = i;
bbbobbbieo 8:946806df7347 217 black_value_count++;
bbbobbbieo 8:946806df7347 218 }
bbbobbbieo 8:946806df7347 219 }
bbbobbbieo 8:946806df7347 220
bbbobbbieo 8:946806df7347 221 for(int i=0; i<black_value_count; i++)
bbbobbbieo 8:946806df7347 222 {
bbbobbbieo 8:946806df7347 223 sum_black += black_values_list[i];
bbbobbbieo 8:946806df7347 224 }
bbbobbbieo 8:946806df7347 225
bbbobbbieo 8:946806df7347 226 black_center_value= sum_black / black_value_count;
bbbobbbieo 8:946806df7347 227
bbbobbbieo 8:946806df7347 228 if (black_center_value > 64)
bbbobbbieo 8:946806df7347 229 servo_left();
bbbobbbieo 8:946806df7347 230
bbbobbbieo 8:946806df7347 231 if (black_center_value < 64)
bbbobbbieo 8:946806df7347 232 servo_right();
bbbobbbieo 8:946806df7347 233 */
bbbobbbieo 8:946806df7347 234
bbbobbbieo 8:946806df7347 235