hulp gevraagd! hand volgende robot

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);
}

verwijder de delay's

Delay() is blokkerende code, dat moet je voorkomen.
Die delay() aan het eind is al helemaal nergens voor nodig, tenzij je wil debuggen.

Maar pulseIn is al net zo blokkerend.
pulseIn is blokkerend als je geen grenzen opgeeft, want dan word er gewacht tot er iets terug komt, ook als er niets komt.
Aangezien je elders al een grens opgeeft, kun je net zo goed die pulseIn ook begrenzen (of eigenlijk een time out geven).
Zie de betreffende reference page (klik !) voor meer informatie.

Dit gaat een beetje dubbel op: Het Nederlandstalig Arduino forum - Bekijk onderwerp - hulp gevraagd! hand volgende robot
Intussen staat op arduinoforum.nl al een nieuwere sketch.

De servo iedere 10ms of 20ms updaten leek mij prima, dus ik had op dit moment geen probleem met die ene delay.