Arduino Pragrammierung

Hallo liebes Forum,

würde gerne mein anrduino in einen roboter verbauen mit ultraschallsensoren vom damaligen Real Robot (Cybot) die motoren habe ich erfolgreich an den Arduino angeschlossen und lasse sie über den blink code fahren also ziemlich planlos jetzt würde ich gerne die gennanten sensoren einbauen das mein Arduino robot hindernissen ausweichen kann kann mir jemand beim ProgrammCode helfen bzw. geht das überhaupt mit den Sensoren

Gruß RedOne

Aha. Nachts ist es also dunkler als draußen. Was hast du? Und was möchtest du? Und was hat der Blink-sketch mit den Motoren zu tun? Und um was für (Ultraschall-)Sesoren willst du ihn wie erweitern? Nochmal komplett auf Anfang und versuchen eine artikulierte Frage zu stellen.

Also ich habe einen realrobots Cybot
aus dem habe ich das ihnen leben genommen bis auf den motor driver und habe es an einen Arduino Mega 1280 dran gebaut
Pin 10 rechter motor +vorwärts
Pin 9 rechter motor –Rückwärts
Pin 8 Linker motor +Rückwärts
Pin 7 Linker motor –Vorwärts
des Eine kabel habe ich auf dem arduino auf VIN
und dás andere auf GND

als programmcode habe ich die den Code für die led an pin 13 benutzt
und einfach umgestellt auf pin 10 usw. jeweils einzeln
da ich ja noch nicht soviel erfahrung habe

in demCybot waren des weiteren 4 ultraschallsensoren verbaut die ich jetzt angeschlossen habe auf
auf pin 6,5 und jeweils wieder auf gnd

also wenn ich den code zum abstand testen nutzt kommt jeweils auf einem was dabei raus
jetz dachte ich mir man kann des vll. programieren das er wenn er ein hinderniss erkennt ihm ausweicht

ich hoffe sie verstehen mich und können mir helfen

MFG RedOne

Au Backe -dahast du dir was vorgenommen. Ohne dir zu nahe treten zu wollen, würde ich, bevor ich mich an die programmierung von komplexen Mechanismen mit Sensoren traue, erstmal mit Elektrotechnik im Allgemeinen und Elektronik und dem Arduino selbst im Speziellen auseinandersetzen. Man muss gehen können, bevor man rennen kann. versuch dich ein bisschen in die Arduino-Programmierung einzulesen, und spiel ein bisschen mit den vorhandenen Kompenenten herum. versuch den sensor auf einen Eingang zu legen und schau, was du für Werte bekopmmst etc. und versuch herauszufinden, um was für kompentenen es sich handelt - denn nur weil es funktioniert muss es nicht immer auch gut für den Arduino sein. Gerade bei induktiven Lasten (Motoren, Relais etc) ist es immer wichtig die Ausgänge des Arduinos (40mA pro Ausgang) nicht zu überlasten - vorallem beim Mega, da dort die CPU nicht ohne Weiteres austauschbar ist.

Also nein zu nahe sind sie mir nicht getreten ich muss mir auch ehrlich zu gestehen das es vll ein wenig zu havy ist.

Jetzt zurück zum thema den Pin habe ich an Pin 24 angeschlossen und habe in mit diesem COde laufen lassen

void setup()

{

// Start serielle Kommunikation Serial.begin(9600);

}

void loop()

{

// Definition der Variablen für die Dauer des Pings und für das Ergebnis in cm

long dauer, cm;

// wir intialisieren den Sensor, indem wir ihm einen kurzen "Low"-Pulse senden, // dann einen 5 mS "High-Pulse"

pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW);

// wir benutzen denselben Pin als Eingang und berechnen die Dauer des Pulses zwischen // ausgehendem und eingehendem Signal

pinMode(pingPin, INPUT); dauer = pulseIn(pingPin, HIGH);

// wir berechnen die Entfernung aus der Zeitdifferenz

cm = mikrosekundenZuZentimeter(dauer);

// wir geben die Entfernung auf der seriellen Konsole aus

Serial.print(cm); Serial.print("cm"); Serial.println();

// wir warten 200 mS, Wert beliebig

delay(200);

}

long mikrosekundenZuZentimeter(long Mikrosekunden)

{

// Die Schallgeschwindigkeit beträgt bummelige 340 m/s bzw. 29 mS pro Zentimeter // Teilen wir durch 2, da der Schall ja hin und zurück muß

return Mikrosekunden / 29 / 2;

}

und es kamen dann abstands daten dabei raus wie es ja geollt ist habe ich die hand vorne dran gemacht was näher und bin ich mit der hand weg waren es größere werte. ich weiß jetzt blos nicht wie ich das zusammen mit dem Motor programmiere um den gewünschten erfolg zu erziehlen

@Marcus W Mir kommt vor daß Du heute etwas ungenau liest. Du hast Recht daß Arduino nur 40mA pro pin liefert aber RedOne schreibt

Also ich habe einen realrobots Cybot aus dem habe ich das ihnen leben genommen bis auf den motor driver und habe es an einen Arduino Mega 1280 dran gebaut

Also hat er die motore nicht direkt an den Arduino geschaltet.

@RedOne Mit dem Kode für den Ultraschallsensor produzierst Du einen Impuls und wartest dann wielange es braucht damit ein Echo zurückkommt. Das mußt Du für alle 4 Sensoren getrennt machen. Daraus ergibt sich der freie Raum der zwischen Sender und Objekt liegt, jeweis in der Achse des Senders. Jetzt mußt DU cich für eine Logik entscheiden was der Roboter machen soll wenn er ein objekt findet. * Falls das Objekt nur von einem Teil dr Sensoren erkannt wird dann kannst Du in die gegenrichtung fahren. * Falls das Objekt von allen gesehen wird dann eine 90 oder mehr kurve. Entscheide auch ab welchen Abstand die Kurve gefahren erden soll.

Die Kurven werden gefahren indem ein Motor langsamer dreht als ein anderer.

Die Geschwindigkeit regelst Du mir einem PWM Signal über AnalogWrite(); Löse einmal die einzelnen probleme und füge sie dann zum gesamtprogramm zusammen: * Motorsteuerung mit geschwindigkeitsregelung und Kurvenfahrt. * Abstandsmessung * Steuerlogik bei erkannten Objekten.

Grüße Uwe

Autsch - das mit dem motordriver hab ich tatsächlich überlesen. Trotzdem bleibe ich bei meinemletzten Statement :wink: Auch und Vorallem, weil sich die kommentierungen im geposteten Code so sehr von der Ausdrucksweise des OP unterscheiden :wink:

Ich sehe die Kommentierungen eher wie in einem Beispiel für Anfänger.
Grüße Uwe