dit programma kan gebruikt worden om de robot alleen op lijnsensoren te laten rijden
Dependencies: mbed
Revision 2:a302989ccc3f, committed 2017-06-04
- Comitter:
- joosthartkamp
- Date:
- Sun Jun 04 11:59:52 2017 +0000
- Parent:
- 1:b5e5f8fe4055
- Commit message:
- nog niet helemaal af; timer voor het omdraaien op de radar moet nog;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r b5e5f8fe4055 -r a302989ccc3f main.cpp --- a/main.cpp Sat Jun 03 19:34:37 2017 +0000 +++ b/main.cpp Sun Jun 04 11:59:52 2017 +0000 @@ -23,6 +23,8 @@ Timer line; Ticker buttontime; Ticker sensortime; +Ticker steppertime; +Ticker lidartime; // programma variabelen bool robotrun; bool sensorFL; @@ -30,12 +32,17 @@ bool sensorRL; bool sensorRR; int programmastap; +int lidarangle; +float distance; +float lidarlinks; +float lidarrechts; //andere variabelen float ledset; bool ledcase; bool laststate; // instelbare variabelen int turntime = 1000; +int stepsperrev = 2080; /* ******* buttoncheck ******************************** @@ -43,7 +50,7 @@ alle debounce word uit de knop gefilterd en hij schakelt op de falling edge. als de knop niet in run is zal de led van de klop aan en uit dimmen. als de knop wel in run is gaat de led normaal branden. -deze functie zit gekoppeld aan ticker buttontime zodat deze automatisch +deze functie zit gekoppeld aan ticker buttontime zodat deze automatisch aangeroepen word en de knop uitleest. ook zorgt de ticker voor het dimmen van de led. */ @@ -127,7 +134,7 @@ deze functie controleert de lijnsensoren. als deze onder een bepaalde waarde vallen dan word een bit hoog gemaakt. deze word met de ticker sensortime aangeroepen. -als een lijn word gevonden dan word er een deel van het programma aangeroepen +als een lijn word gevonden dan word er een deel van het programma aangeroepen die ervoor zorgt dat de robot wegrijdt van de lijn. */ void lijnsensor() @@ -170,6 +177,45 @@ sensorRR = 0; } } +void lidar() +{ + int quadrant = stepsperrev/4; + distance = afstand; + if (distance > 0.2) { + + if(pos < stepsperrev&&pos> quadrant*3) { + lidarlinks = (pos - quadrant*3)/quadrant; + lidarrechts = 1; + } else if(pos < quadrant*3 &&pos > quadrant*2) { + lidarlinks = -1; + lidarrechts = 1; + } + else if(pos < quadrant*2 && pos > quadrant){ + lidarlinks = 1; + lidarrechts = -1; + } + else if(pos < quadrant&& pos > 0){ + lidarlinks = 1; + lidarrechts = pos/quadrant; + } + } else { + lidarlinks = 1; + lidarrechts = 1; + } +} +void setstep() +{ + steppulse = !steppulse; + if(robotrun == 1) { + enable = 0; + lidarangle = lidarangle+1; + if (lidarangle > stepsperrev) { + lidarangle = 0; + } + } else { + enable = 1; + } +} /* ******* main ******************************** hierin staan de programmadelen van de robot. @@ -182,6 +228,8 @@ button.mode(PullUp); buttontime.attach(&buttoncheck, 0.005); sensortime.attach(&lijnsensor, 0.01); + steppertime.attach(&setstep, 0.0008); + bt.printf("robotrun is nu : %d\n",robotrun); while(1) { if(robotrun == 1) {