Beste forum genoten,
Ik ben Thijs en ik werk aan een project voor school.
Het idee is om een robot te bouwen die je hand kan volgen.
Ik wilde dit doen door middel van een Pan Tilt met 2 servo`s en 3 ultrasonische sensoren.
Ik was nu nog aan het werken met 2 ultrasonische sensoren om ervoor te zorgen dat de robot mijn hand kan volgen over de horizontale richting.
Momenteel gebruik ik deze code maar de robot werkt nog niet zo goed hij reageert best traag. Hebben jullie misschien nog tips?
Ik ben nog vrij nieuw met coderen dus alvast sorry als het een beetje amateuristisch is.
#include <Servo.h>
int triggerR = 2; // de ultrasone sensors met hun bijbehorende poorten
int echoR = 3;
int triggerL = 4;
int echoL = 5;
int durationL; // variabele om de afstand en de tijd van de linker ultrasone sensor te meten
int distanceL;
int durationR; //variabele om de afstand en de tijd van de rechter ultrasone sensor te meten
int distanceR;
Servo x; // de motor die de pan-tilt over de horizontale as laat bewegen
int pos = 100; // start positie uit deze positie kijkt de pan tilt recht naar voren
void setup() {
pinMode(triggerR, OUTPUT); //output en input van us sensoren
pinMode(echoR, INPUT);
pinMode(triggerL, OUTPUT);
pinMode(echoL, INPUT);
x.attach(9); // de servo zit op in poort 9
Serial.begin(9600);
}
void loop() {
//ultrasonic sensor rechts
digitalWrite(triggerR, HIGH);
delayMicroseconds(50);
digitalWrite(triggerR, LOW);
durationR = pulseIn(echoR, HIGH);
distanceR = durationR*0.034/2;
if (distanceR >= 20) // deze loop zorgt ervoor dat de afstand niet groter kan worden dan 20 cm
{
distanceR = 20;
}
if (distanceR <= 0) // deze loop zorgt ervoor dat de afstand niet kleiner kan worden dan 0 cm ik had affentoe dat de sensoren negatief waarden aangavan
{
distanceR = 0;
}
// ultrasonic sensor links
digitalWrite(triggerL, HIGH);
delayMicroseconds(50);
digitalWrite(triggerL, LOW);
durationL = pulseIn(echoL, HIGH);
distanceL = durationL*0.034/2;
if (distanceL >= 20) // deze loop zorgt ervoor dat de afstand niet groter kan worden dan 20
{
distanceL = 20;
}
if (distanceL <= 0) // deze loop laat de afstand niet kleiner worden dan 0
{
distanceL = 0;
}
//de servo
if (distanceL > distanceR) // als de afstand van de linker sensor groter is dan de rechter ga naar rechts
{
pos = pos + 10;
}
if (distanceL < distanceR) // als de afstand van de rechter sensor groter is dan de linker ga naar links
{
pos = pos - 10;
}
if (pos > 160) // laat de positie niet groter worden dan 160
{
pos = 160;
}
if (pos < 0) // laat de positie niet kleiner worden dan 0
{
pos = 0;
}
x.write (pos);
delay(15);
}