I've done some testing and trying out different methods, this seems to be the way to go. The motors turn on but nothing happens...what did i miss?
const int TRIGPIN = 7; // sonar pins
const int ECHOPIN = 6;
const int Motor_Left_Direction = 3; //motor pins
const int Motor_Right_Direction = 5;
const int Motor_Left_Rotate = 2;
const int Motor_Right_Rotate = 4;
long duur, distance;
int flag = LOW;
int sensorFlag = 0;
int currentmillis = 0;
int previousmillis = 0;
int delaytime = 65;
void setup() {
pinMode (TRIGPIN, OUTPUT); //pinmodes
pinMode (ECHOPIN, INPUT);
pinMode (Motor_Left_Direction, OUTPUT);
pinMode (Motor_Right_Direction, OUTPUT);
pinMode (Motor_Left_Rotate, OUTPUT);
pinMode (Motor_Right_Direction, OUTPUT);
Serial.begin(9600);
}
void loop() {
SonarSensor(TRIGPIN,ECHOPIN);
if (distance >100) //als afstand groter dan 10 cm -> forwarddriving
{
forwarddriving();
}
if (distance <=100) //als afstand groter of gelijk aan 10 cm, doe niks = STOP
{
}
}
void SonarSensor(int TRIGPIN, int ECHOPIN){
sensorFlag = flag;
if (sensorFlag == HIGH)
{
digitalWrite (TRIGPIN, LOW); //code van standaard sonar uit blackboard
delayMicroseconds (100);
digitalWrite (TRIGPIN, HIGH);
delayMicroseconds (100);
digitalWrite (TRIGPIN, LOW);
duur = pulseIn(ECHOPIN, HIGH); //kijk hoelang puls is
distance = (duur/2)/29,1;
Serial.println(distance);
}
}
void forwarddriving()
{
digitalWrite(Motor_Left_Direction, LOW); //aanstellen welke kant de motoren opdraaien
digitalWrite(Motor_Right_Direction, HIGH);
digitalWrite(Motor_Left_Rotate, HIGH); //pulsen sturen naar de hoogte van delaytime uit if statements
digitalWrite(Motor_Right_Rotate, HIGH);
delayMicroseconds(1000);
digitalWrite(Motor_Left_Rotate, LOW);
digitalWrite(Motor_Right_Rotate, LOW);
delayMicroseconds(1000);
}
int timing(int delaytime)
{
currentmillis = millis();
if (currentmillis - previousmillis >= delaytime)
{
previousmillis = currentmillis;
flag = HIGH;
}
else
{
flag = LOW;
}
return flag;
}
thanks in advance