dit is em
Dependencies: mbed
main.cpp
- Committer:
- joosthartkamp
- Date:
- 2017-05-31
- Revision:
- 20:9f4ba1b3d06e
- Parent:
- 19:25663276160d
File content as of revision 20:9f4ba1b3d06e:
#include "mbed.h" PwmOut motorleftspeed(D6); PwmOut motorrightspeed(D7); DigitalOut MotorL1pin (D12); DigitalOut MotorL2pin (D11); DigitalOut MotorR1pin (D10); DigitalOut MotorR2pin (D9); AnalogIn Sensor1 (A1); AnalogIn Sensor2 (A2); AnalogIn Sensor3 (A3); AnalogIn Sensor4 (A4); AnalogIn zoeksensor (A5); AnalogIn currentleftpin (A6); AnalogIn currentrightpin (A7); DigitalOut steppera (D2); DigitalOut stepperb (D3); DigitalOut stepperc (D4); DigitalOut stepperd (D5); DigitalIn knop(D8); DigitalOut led(D1); int afstand = zoeksensor; int stapmode = 0; int position = 0; int pos; bool robotrun; int radarspeedsetleft; int radarspeedsetright; /* ******* main loop ******************************** hier maakt de robot de beslissingen wat hij moet doen in bepaalde situaties dit staat in het programmaoverzicht beschreven */ int main () { while(robotrun == 1); { if(lijnsensor > 0) { switch(lijnsensor) { case 1: { Hbrug(255, 128, 2); break; } case 2: { Hbrug(128, 255, 2); break; } case 3: { Hbrug(255, 255, 2); break; } case 4: { Hbrug(255, 128, 1); break; } case 8: { Hbrug(128, 255, 1); break; } case 12: { Hbrug(255, 255, 1); break; } wait_ms(200); } else { if (lidardirection < 90) { radarspeedsetleft = 255; radarspeedsetright = 255-(lidardirection/90)*255; Hbrug(radarspeedsetleft, radarspeedsetright, 1); } else if (lidardirection > 270) { radarspeedsetleft = 255; radarspeedsetright = ((lidardirection-270)/90)*255; Hbrug(radarspeedsetleft, radarspeedsetright, 1); } else if (lidardirection > 270) { radarspeedsetleft = 255; radarspeedsetright = ((lidardirection-270)/90)*255; Hbrug(radarspeedsetleft, radarspeedsetright, 1); } else if (lidardirection > 270) { radarspeedsetleft = 255; radarspeedsetright = ((lidardirection-270)/90)*255; Hbrug(radarspeedsetleft, radarspeedsetright, 1); } } } } } int mapcurrent(float input = 0.00,float inputmin = 0.00, float inputmax = 0.00,int outputmin = 0, int outputmax = 0) { return (input - inputmin) * (outputmax - outputmin) / (inputmax - inputmin) + outputmin; } // poar neemn // twee poar neemn // twee tettn in n envelop //neuken tot de vellen er bij hangen /* ******* radar direction ******************************** deze functie bepaalt de hoek waarin een andere robot is gedetecteerd deze functie geeft een waarde terug van 0 tot 360 */ int lidardirection() { bool objectfound; int startangle; int stopangle; int outputangle; if (afstandzoeker == 1&&objectfound == 0) { objectfound = 1; int startangle = pos; } if (afstandzoeker == 0&&objectfound == 1) { objectfound = 0; stopangle = pos; outputangle = startangle + (stopangle-startangle/2) } return outputangle; } int stepper() { switch (stapmode) { case 0: steppera = 1; stepperb = 0; stepperc = 1; stepperd = 0; pos ++; break; case 1: steppera = 1; stepperb = 0; stepperc = 0; stepperd = 1; pos ++; break; case 2: steppera = 0; stepperb = 1; stepperc = 0; stepperd = 1; pos ++; break; case 3: steppera = 0; stepperb = 1; stepperc = 1; stepperd = 0; pos ++; break; ; } if (pos > 1000) { //na volledige rotatie ga naar nul pos = 0; } stapmode ++; if (stapmode > 3) { stapmode = 0; } return pos; } bool afstandzoeker () { bool a ; if (zoeksensor > 0.25) { a = 1; } else { a=0 ; } return a; } int lijnsensor () { bool a = 0;// sensor linksvoor bool b = 0;// sensor rechtsvoor bool c = 0;// sensor linksachter bool d = 0;// sensor rechtsachter int output; if (Sensor1 > 0.01) { a = 1; } else { a = 0; } if (Sensor2 > 0.01) { b = 1<<1; } else { b = 0<<1; } if (Sensor3 > 0.01) { c = 1<<2; } else { c = 0<<2; } if (Sensor4 > 0.01) { d = 1<<3; } else { d = 0<<3; } output = a || b || c || d; return output; } void Hbrug(int speedleft = 0, int speedright = 0, int direction = 0) { int currenta = mapcurrent(currentleftpin,0,1,0,6600); int currentb = mapcurrent(currentrightpin,0,1,0,6600); bool MotorL1 = 0; bool MotorL2 = 0; bool MotorR1 = 0; bool MotorR2 = 0; switch (stapmode) { case 0:// stilstaan MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 1:// vooruit MotorL1 = 0; MotorL2 = 1; MotorR1 = 0; MotorR2 = 1; break; case 2:// achteruit MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 3:// naar linksvoor MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 4:// naar rechtsvoor MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 5:// naar linksachter MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 6: // naar rechtsachter MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 7: // links om as MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; case 8: // rechts om as MotorL1 = 0; MotorL2 = 0; MotorR1 = 0; MotorR2 = 0; break; } MotorL1pin = MotorL1; MotorL2pin = MotorL2; MotorR1pin = MotorR1; MotorR2pin = MotorR2; }