Hey Community,
ich baue grade ein Auto was mit Ultraschall hindernissen ausweichen kann...
Aber meine konkrete Frage ist wie kann ich die beiden anderen programmieren...
Einen hab ich schon...
(Bevor jemand schreibt kopiere und ändere die pins hab ich schon probiert(Fehlermeldungen))
Hier ist der Code:
#define trigPin 13
#define echoPin 12
#define motor 7
#define buzzer 6
#define motor2 8
#define rmotor 0
#define rmotor2 1
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(rmotor, OUTPUT);
pinMode(buzzer,OUTPUT);
}
void loop()
{
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 30) // hier schaut man ob die distanz größer als 30 ist
{
digitalWrite(motor,HIGH); // Wenn die distanz größer als 30 ist, dann wird dieser code ausgeführt
digitalWrite(motor2,HIGH);
digitalWrite(rmotor,LOW);
digitalWrite(buzzer,HIGH);
} else
{
digitalWrite(motor,LOW); // when kleiner als 30 dann...
digitalWrite(motor2,LOW);
digitalWrite(rmotor,HIGH);
digitalWrite(buzzer,LOW);
}
}
Erst mall Willkommen im Forum
Was für System ist das Arduino? wen ja welscher, was für Fehler werden angezeigt?
Zu dem alle leere Zeilen löschen , auf tragbares Geräten ist das schlecht lesbar.
Was für ein Controller ist das ?
Bei einem Uno o.ä. solltest du Pin D0 und D1 frei lassen. Die stören sich mit dem USB-SERIALWANDLER.
Das Löschen der Leerzeile (Info @fony ) geht auch noch nachträlich.
So ist es schlecht lesbar. Auch solltest du in der IDE Strg + t drücken, dann wird der Sketch schön formatiert.
Schätze mall die MCU ist im Auto und hat kein SerMon, also ist vor erst halb so wild, jedoch D0 und D1 sollte frei bleiben.
Ihr habt für Notfall Analog Pins die kann man auch Digital nutzen.
Noch mall was für Fehler?
Bei mir Kompiliert sauber.
Der Sketch verwendet 1816 Bytes (5%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Als MCU ist Nano R3 eingestellt.
Wie werden die Motoren angetrieben?
Zwei Sensoren unter einem Pin klemmen sollte man nicht, nehme Blattpapier und zeichne mal wie es verbunden ist. Auf deinem Foto kann man nichts erkennen, bischien Ordnung in der Verkabelung we're schön.
struct SENSOR
{
const uint8_t trigPin;
const uint8_t echoPin;
};
constexpr uint8_t sensNums {2};
SENSOR sensor[sensNums]
{
{13, 12}, // Erster Sensor TriggerPin, SensorPin
{11, 6}, // Zweiter Sensor TriggerPin, SensorPin
};
struct MOTOR
{
const uint8_t dirPin;
const uint8_t enaPin;
};
constexpr uint8_t motoNums {2};
MOTOR motor[motoNums]
{
{7, 8},
{4, 5},
};
enum class Side {links, rechts};
enum class Direction {forward, backward};
void setup()
{
Serial.begin(115200);
Serial.println(F("Start..."));
for (byte b = 0; b < sensNums; b++)
{
pinMode(sensor[b].trigPin, OUTPUT);
pinMode(sensor[b].echoPin, INPUT);
}
for (byte b = 0; b < motoNums; b++)
{
pinMode(motor[b].dirPin, OUTPUT);
pinMode(motor[b].enaPin, OUTPUT);
}
}
void loop()
{
for (byte b = 0; b < sensNums; b++)
{
Serial.print(F("Abstand Sensor "));
Serial.print(b);
Serial.print(": ");
Serial.println(getAbstand(b));
delay(500);
}
}
uint16_t getAbstand(const uint8_t sensNum)
{
long duration, distance;
digitalWrite(sensor[sensNum].trigPin, LOW);
delayMicroseconds(2);
digitalWrite(sensor[sensNum].trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(sensor[sensNum].trigPin, LOW);
duration = pulseIn(sensor[sensNum].echoPin, HIGH);
distance = (duration / 2) / 29.1;
return distance;
}
Der Code fragt nur die beiden Sensoren ab.
Er soll nur darstellen, dass die Sensorik funktioniert.
Auf dem Grundgerüst dann auch noch die Motoren angepasst und gut ist.
Du brauchst zur Kontrolle den seriellen Monitor.
WRKZEUGE -> SERIELLER MONItOR
Die geschwindigkeit des Monitors ist auf 115200 einzustellen und dann solltest Du im Abstand von 500ms Die Ausgabe der abstände bekommen.
Weitermqachen macht erst Sinn, wenn ich weiss, was Du da hast. Darum: Link zum Shopartikel....