Matthias Praja
/
All-15Final
Bertl
Fork of All-15 by
main.cpp@16:b952b10f2f6e, 2015-07-07 (annotated)
- Committer:
- ladner
- Date:
- Tue Jul 07 22:43:49 2015 +0000
- Revision:
- 16:b952b10f2f6e
- Parent:
- 15:dbb2ef352057
Folge der Linie(2015)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ladner | 0:cce97dfa8e6b | 1 | #include "mbed.h" |
ladner | 0:cce97dfa8e6b | 2 | |
ladner | 0:cce97dfa8e6b | 3 | I2C i2c(p28, p27); |
ladner | 0:cce97dfa8e6b | 4 | BusOut myled(LED1,LED2,LED3,LED4); |
ladner | 0:cce97dfa8e6b | 5 | BusOut myrgb(P1_23,P1_25,P1_24); |
ladner | 0:cce97dfa8e6b | 6 | DigitalOut LedBlue(P1_28); |
ladner | 0:cce97dfa8e6b | 7 | BusIn myline(p18,p16,p19,p17); |
ladner | 0:cce97dfa8e6b | 8 | DigitalIn linecenter(p20); |
ladner | 0:cce97dfa8e6b | 9 | DigitalOut online(P1_6); |
ladner | 9:b627760fd5d9 | 10 | PwmOut MotorL_EN(P1_15); |
ladner | 0:cce97dfa8e6b | 11 | DigitalOut MotorL_FORWARD(P1_1); |
ladner | 0:cce97dfa8e6b | 12 | DigitalOut MotorL_REVERSE(P1_0); |
ladner | 9:b627760fd5d9 | 13 | PwmOut MotorR_EN(P0_21); |
ladner | 0:cce97dfa8e6b | 14 | DigitalOut MotorR_FORWARD(P1_3); |
ladner | 0:cce97dfa8e6b | 15 | DigitalOut MotorR_REVERSE(P1_4); |
ladner | 0:cce97dfa8e6b | 16 | DigitalOut Motor_SENSOR(P1_7); |
ladner | 0:cce97dfa8e6b | 17 | DigitalOut enable(P1_2); |
ladner | 0:cce97dfa8e6b | 18 | DigitalIn SensorL(P1_12); |
ladner | 0:cce97dfa8e6b | 19 | DigitalIn SensorR(P1_13); |
ladner | 15:dbb2ef352057 | 20 | float slow = 0.25; |
ladner | 15:dbb2ef352057 | 21 | float fast = 0.50; |
ladner | 2:1317061163f8 | 22 | int out_helper[8]; |
ladner | 0:cce97dfa8e6b | 23 | int main() |
ladner | 0:cce97dfa8e6b | 24 | { |
ladner | 2:1317061163f8 | 25 | out_helper[0]=0; |
ladner | 2:1317061163f8 | 26 | out_helper[1]=1; |
ladner | 2:1317061163f8 | 27 | out_helper[2]=3; |
ladner | 2:1317061163f8 | 28 | out_helper[3]=7; |
ladner | 2:1317061163f8 | 29 | out_helper[4]=15; |
ladner | 2:1317061163f8 | 30 | out_helper[5]=14; |
ladner | 2:1317061163f8 | 31 | out_helper[6]=12; |
ladner | 2:1317061163f8 | 32 | out_helper[7]=8; |
ladner | 2:1317061163f8 | 33 | |
ladner | 0:cce97dfa8e6b | 34 | enable = 0; |
ladner | 0:cce97dfa8e6b | 35 | online = 0; |
ladner | 0:cce97dfa8e6b | 36 | Motor_SENSOR=0; |
ladner | 0:cce97dfa8e6b | 37 | |
ladner | 0:cce97dfa8e6b | 38 | myrgb = 0x07;//7->aus |
ladner | 0:cce97dfa8e6b | 39 | LedBlue=1; |
ladner | 0:cce97dfa8e6b | 40 | myled = 0x00; |
ladner | 0:cce97dfa8e6b | 41 | |
ladner | 0:cce97dfa8e6b | 42 | MotorL_EN = 0; |
ladner | 0:cce97dfa8e6b | 43 | MotorL_FORWARD = 0; |
ladner | 0:cce97dfa8e6b | 44 | MotorL_REVERSE = 0; |
ladner | 0:cce97dfa8e6b | 45 | MotorR_EN = 0; |
ladner | 0:cce97dfa8e6b | 46 | MotorR_FORWARD = 0; |
ladner | 0:cce97dfa8e6b | 47 | MotorR_REVERSE = 0; |
ladner | 0:cce97dfa8e6b | 48 | |
ladner | 0:cce97dfa8e6b | 49 | i2c.start(); |
ladner | 0:cce97dfa8e6b | 50 | i2c.write(0x40); |
ladner | 0:cce97dfa8e6b | 51 | i2c.write(0x06); |
ladner | 0:cce97dfa8e6b | 52 | i2c.write(0x00); |
ladner | 0:cce97dfa8e6b | 53 | i2c.stop(); |
ladner | 0:cce97dfa8e6b | 54 | |
ladner | 0:cce97dfa8e6b | 55 | i2c.start(); |
ladner | 0:cce97dfa8e6b | 56 | i2c.write(0x40); |
ladner | 0:cce97dfa8e6b | 57 | i2c.write(0x02); |
ladner | 0:cce97dfa8e6b | 58 | i2c.write(~0x00); |
ladner | 0:cce97dfa8e6b | 59 | i2c.stop(); |
ladner | 0:cce97dfa8e6b | 60 | |
ladner | 1:28cfac75543f | 61 | int waiting = 0; |
ladner | 11:4084ae1f1be8 | 62 | int output = 0xff; |
ladner | 1:28cfac75543f | 63 | bool active = false; |
ladner | 1:28cfac75543f | 64 | |
ladner | 0:cce97dfa8e6b | 65 | while(1){ |
ladner | 1:28cfac75543f | 66 | if(active) |
ladner | 1:28cfac75543f | 67 | { |
ladner | 1:28cfac75543f | 68 | enable = 1; |
ladner | 1:28cfac75543f | 69 | online = 1; |
ladner | 15:dbb2ef352057 | 70 | if((myline==0&&linecenter==0)||(myline==15&&linecenter==1)) |
ladner | 9:b627760fd5d9 | 71 | { |
ladner | 9:b627760fd5d9 | 72 | active = false; |
ladner | 9:b627760fd5d9 | 73 | MotorL_EN = 0; |
ladner | 9:b627760fd5d9 | 74 | MotorL_FORWARD = 0; |
ladner | 9:b627760fd5d9 | 75 | MotorL_REVERSE = 0; |
ladner | 9:b627760fd5d9 | 76 | MotorR_EN = 0; |
ladner | 9:b627760fd5d9 | 77 | MotorR_FORWARD = 0; |
ladner | 9:b627760fd5d9 | 78 | MotorR_REVERSE = 0; |
ladner | 9:b627760fd5d9 | 79 | } |
ladner | 9:b627760fd5d9 | 80 | else |
ladner | 9:b627760fd5d9 | 81 | { |
ladner | 11:4084ae1f1be8 | 82 | output = 0xff; |
ladner | 14:7560cbb335f1 | 83 | if((myline&0x08)>0) |
ladner | 10:389c1c4c1f2b | 84 | { |
ladner | 10:389c1c4c1f2b | 85 | MotorR_FORWARD = 0; |
ladner | 10:389c1c4c1f2b | 86 | MotorR_EN=0; |
ladner | 11:4084ae1f1be8 | 87 | output=output&(~0x80); |
ladner | 10:389c1c4c1f2b | 88 | } |
ladner | 9:b627760fd5d9 | 89 | else |
ladner | 10:389c1c4c1f2b | 90 | { |
ladner | 10:389c1c4c1f2b | 91 | MotorR_FORWARD = 1; |
ladner | 14:7560cbb335f1 | 92 | if((myline&0x04)>0) |
ladner | 11:4084ae1f1be8 | 93 | { |
ladner | 15:dbb2ef352057 | 94 | MotorR_EN=slow; |
ladner | 11:4084ae1f1be8 | 95 | output=output&(~0x40); |
ladner | 11:4084ae1f1be8 | 96 | } |
ladner | 10:389c1c4c1f2b | 97 | else |
ladner | 15:dbb2ef352057 | 98 | MotorR_EN=fast; |
ladner | 10:389c1c4c1f2b | 99 | } |
ladner | 9:b627760fd5d9 | 100 | |
ladner | 14:7560cbb335f1 | 101 | if((myline&0x01)>0) |
ladner | 10:389c1c4c1f2b | 102 | { |
ladner | 10:389c1c4c1f2b | 103 | MotorL_EN=0; |
ladner | 10:389c1c4c1f2b | 104 | MotorL_FORWARD = 0; |
ladner | 11:4084ae1f1be8 | 105 | output=output&(~0x10); |
ladner | 10:389c1c4c1f2b | 106 | } |
ladner | 9:b627760fd5d9 | 107 | else |
ladner | 10:389c1c4c1f2b | 108 | { |
ladner | 12:070fc8ec44b6 | 109 | MotorL_FORWARD = 1; |
ladner | 14:7560cbb335f1 | 110 | if((myline&0x02)>0) |
ladner | 11:4084ae1f1be8 | 111 | { |
ladner | 15:dbb2ef352057 | 112 | MotorL_EN=slow; |
ladner | 11:4084ae1f1be8 | 113 | output=output&(~0x20); |
ladner | 11:4084ae1f1be8 | 114 | } |
ladner | 10:389c1c4c1f2b | 115 | else |
ladner | 15:dbb2ef352057 | 116 | MotorL_EN=fast; |
ladner | 10:389c1c4c1f2b | 117 | } |
ladner | 11:4084ae1f1be8 | 118 | myled=myline; |
ladner | 11:4084ae1f1be8 | 119 | i2c.start(); |
ladner | 11:4084ae1f1be8 | 120 | i2c.write(0x40); |
ladner | 11:4084ae1f1be8 | 121 | i2c.write(0x02); |
ladner | 11:4084ae1f1be8 | 122 | i2c.write(output); |
ladner | 11:4084ae1f1be8 | 123 | i2c.stop(); |
ladner | 9:b627760fd5d9 | 124 | } |
ladner | 3:2cd73b6f5b50 | 125 | myrgb=3; |
ladner | 1:28cfac75543f | 126 | } |
ladner | 1:28cfac75543f | 127 | else |
ladner | 1:28cfac75543f | 128 | { |
ladner | 16:b952b10f2f6e | 129 | i2c.start(); |
ladner | 16:b952b10f2f6e | 130 | i2c.write(0x40); |
ladner | 16:b952b10f2f6e | 131 | i2c.write(0x02); |
ladner | 16:b952b10f2f6e | 132 | i2c.write(~0x90); |
ladner | 16:b952b10f2f6e | 133 | i2c.stop(); |
ladner | 2:1317061163f8 | 134 | if(waiting<7) |
ladner | 5:e968c184ad9f | 135 | { |
ladner | 5:e968c184ad9f | 136 | wait(0.5); |
ladner | 5:e968c184ad9f | 137 | if(waiting==0) |
ladner | 5:e968c184ad9f | 138 | { |
ladner | 5:e968c184ad9f | 139 | enable = 0; |
ladner | 5:e968c184ad9f | 140 | online = 0; |
ladner | 5:e968c184ad9f | 141 | myrgb=7; |
ladner | 5:e968c184ad9f | 142 | } |
ladner | 1:28cfac75543f | 143 | waiting++; |
ladner | 5:e968c184ad9f | 144 | } |
ladner | 1:28cfac75543f | 145 | else |
ladner | 1:28cfac75543f | 146 | { |
ladner | 2:1317061163f8 | 147 | enable = 1; |
ladner | 2:1317061163f8 | 148 | online = 1; |
ladner | 5:e968c184ad9f | 149 | wait(0.5); |
ladner | 15:dbb2ef352057 | 150 | if(myline==15&&linecenter==1) |
ladner | 13:2100fbde6d34 | 151 | myrgb=0; |
ladner | 13:2100fbde6d34 | 152 | else |
ladner | 8:c82246829dd4 | 153 | if((myline>=1)||(linecenter==1)) |
ladner | 2:1317061163f8 | 154 | { |
ladner | 7:936bef387bbd | 155 | active=true; |
ladner | 9:b627760fd5d9 | 156 | myrgb=5; |
ladner | 7:936bef387bbd | 157 | myled=0; |
ladner | 7:936bef387bbd | 158 | wait(0.5); |
ladner | 2:1317061163f8 | 159 | } |
ladner | 2:1317061163f8 | 160 | else |
ladner | 9:b627760fd5d9 | 161 | myrgb=6; |
ladner | 2:1317061163f8 | 162 | waiting=0; |
ladner | 1:28cfac75543f | 163 | } |
ladner | 9:b627760fd5d9 | 164 | if(!active) |
ladner | 9:b627760fd5d9 | 165 | myled=out_helper[waiting]; |
ladner | 1:28cfac75543f | 166 | } |
ladner | 2:1317061163f8 | 167 | //0=>keine Linie |
ladner | 0:cce97dfa8e6b | 168 | |
ladner | 0:cce97dfa8e6b | 169 | //01->forneMitte |
ladner | 0:cce97dfa8e6b | 170 | //02->hintenMitte |
ladner | 0:cce97dfa8e6b | 171 | //04->forneLinks |
ladner | 0:cce97dfa8e6b | 172 | //08->forneRects |
ladner | 0:cce97dfa8e6b | 173 | //10->hintenLinks |
ladner | 0:cce97dfa8e6b | 174 | //20->hintenRechts |
ladner | 0:cce97dfa8e6b | 175 | //40->Rechts |
ladner | 0:cce97dfa8e6b | 176 | //80->Links |
ladner | 0:cce97dfa8e6b | 177 | |
ladner | 11:4084ae1f1be8 | 178 | //01->LinksWeis |
ladner | 11:4084ae1f1be8 | 179 | //02->VorneGelbLinks |
ladner | 11:4084ae1f1be8 | 180 | //04->RechtsWeis |
ladner | 11:4084ae1f1be8 | 181 | //08->VorneGelbRechts |
ladner | 11:4084ae1f1be8 | 182 | //10->LinksRot |
ladner | 11:4084ae1f1be8 | 183 | //20->HintenGelbLinks |
ladner | 11:4084ae1f1be8 | 184 | //40->HintenGelbRechts |
ladner | 11:4084ae1f1be8 | 185 | //80->RechtsRot |
ladner | 0:cce97dfa8e6b | 186 | } |
ladner | 0:cce97dfa8e6b | 187 | } |