dit programma kan gebruikt worden om de robot alleen op lijnsensoren te laten rijden

Dependencies:   mbed

Files at this revision

API Documentation at this revision

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) {