Hallo, ich versuche mir gerade die millis Funktion beizubringen. Zurzeit verstehe ich wie man Blink without delay an der internen LED programmiert, aber ich blicke nicht ganz durch, wie ich mein ganzes Programm mit millis ersetze. Ich möchte nämlich, dass sich zwei Motoren abhängig von den Messwerten eines Ultraschallsensors drehen. Wenn die Distanz >=5 ist, sollen sie sich beide vorwärts drehen ansonsten für 3 Sekunden rückwärts (Im Code sieht es nur so komisch aus mit FORWARD und BACKWARD, weil ich die Anschlüsse bei einem Motor falsch angelötet habe). Ich würde mich sehr über eine Antwort freuen :)
#include <AFMotor.h>
#include <Servo.h>
//AF_DCMotor motor1(1);
//AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
int trigPin = 9;
int echoPin = 10;
unsigned long currentmillis;
unsigned long previousmillis;
const long interval_1 = 1000;
const long interval_2 = 10;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// motor1.setSpeed(250);
// motor1.run(RELEASE);
// motor2.setSpeed(250);
// motor2.run(RELEASE);
motor3.setSpeed(250);
motor3.run(RELEASE);
motor4.setSpeed(250);
motor4.run(RELEASE);
}
void loop() {
//Ultraschallsensor
currentmillis = millis();
long duration, distance;
if (currentmillis - previousmillis >= interval_1){
digitalWrite(trigPin,HIGH);
//delay(1000);
previousmillis = currentmillis;
}
if (currentmillis - previousmillis >= interval_2){
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin, HIGH);
distance =(duration/2)/29.1;
Serial.print(distance);
Serial.println("CM");
//delay (10);
previousmillis = currentmillis;
}
//Motoren
//vorwärts
if (distance >=5){
motor3.run(FORWARD);
motor4.run(BACKWARD);
}
//rückwärts
if (currentmillis - previousmillis <= interval_1){
if (distance <=5) {
motor3.run(BACKWARD);
motor4.run(FORWARD);
//delay(3000);
previousmillis = currentmillis;
}
}