Neo's Roboter
|
14.10.2015, 10:21
Beitrag #33
|
|||
|
|||
RE: Neo's Roboter
(14.10.2015 10:03)Neoneo23 schrieb: wie wird denn so ein Programm abgearbeitet? Der MC arbeitet ja jede Zeile eines Programms ab. Also liest er jede Zeile und das macht er von oben nach unten. Wie oft macht er das denn in der Sekunde? Und kann man bestimmte Programmteile überspringen?Wie oft er das in der Sekunde macht, hängt vom Programm (Sketch) ab. Ein Durchlauf sollte nur wenige Millisekunden dauern. Daher sollte auch kein delay() im Sketch vorkommen, der den Sketch bremst. Bestimmte Teile kannst du mit If-Anweisungen oder Switch/Case überspringen. Ein GOTO geht auch, ist aber selten und nur wenn es nicht anders geht. Um die einzelnen Befehle kennen zu lernen, empfehle ich dir ein Buch zuzulegen. Das Arduino Kochbuch ist da sehr aussagekräftig (Hard und Software). I2C = weniger ist mehr: weniger Kabel, mehr Probleme. ![]() Gruß Dieter |
|||
14.10.2015, 10:26
(Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2015 10:27 von Klaus(i).)
Beitrag #34
|
|||
|
|||
RE: Neo's Roboter
Zitat:wie wird denn so ein Programm abgearbeitet?So ein Programm, das Du schreibst wird vom Compiler übersetzt in ein Programm, was der Prozessor versteht (Machine Code). So ein Prozessor hat eben nur einen bestimmten Befehlssatz. Für jeden dieser Befehle benötigt der Prozessor eine unterschiedliche Anzahl von Taktzyklen. Zitat:Wie oft macht er das denn in der Sekunde?Der Takt bei einem UNO ist zB. 16 MHz = 16.000.000 Takte/ s. Der GOTO wird in C++ meines Wissens nicht unterstützt. Hier hilft aber eine strukturierte Programmierung (s.o.) Gruß, Klaus |
|||
14.10.2015, 10:29
Beitrag #35
|
|||
|
|||
RE: Neo's Roboter
(14.10.2015 10:26)Klaus(i) schrieb: Der GOTO wird in C++ meines Wissens nicht unterstützt.Das stimmt nur zum Teil, es wird auf dem Arduino einwandfrei kompiliert und funktioniert danach auch. I2C = weniger ist mehr: weniger Kabel, mehr Probleme. ![]() Gruß Dieter |
|||
14.10.2015, 10:36
Beitrag #36
|
|||
|
|||
RE: Neo's Roboter
Danke,
aber was ist denn wenn ich sagen möchte, Wenn z.bsp. Pin 8= High dann überspringe einen Programmteil und führe einen anderen Programmteil aus sonst nichts. Das soll er dann solange machen, bis pin 8= LOW @hotsystem: Heißt das Buch wirklich Arduino Kochbuch? |
|||
14.10.2015, 10:40
Beitrag #37
|
|||
|
|||
RE: Neo's Roboter
(14.10.2015 10:36)Neoneo23 schrieb: Danke,Ja, das Buch heißt so. Der Code (Beispielcode) ist dann z.B. Code: If(Pin8==HIGH) { I2C = weniger ist mehr: weniger Kabel, mehr Probleme. ![]() Gruß Dieter |
|||
14.10.2015, 10:45
(Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2015 10:59 von Neoneo23.)
Beitrag #38
|
|||
|
|||
RE: Neo's Roboter
Ich hab einen neuen Programmteil implementiert (rot) so dreht sich mein Roboter aber immer nur nach rechts. Habt Ihr ein Bsp. wie ich das machen kann, dass er sich abwechselnd nach rechts und beim nächsten Bumper= high nach links dreht?
Also er soll wenn Bumper= high nach rechts drehen und wenn der Bumper beim nächsten mal wieder = high nach links drehen Hier der Sketch: int moli=2; //Antrieb Links auf pin2 int more=3; //Antrieb Rechts auf pin3 int zuruck=4; //Relais zum umschalten vor oder zurück Fahrt auf pin4 int bumper=5; //Bumper auf pin5 int bumperstatus=0; //Taster gedrückt oder nicht void setup() { pinMode(moli,OUTPUT); //moli ist ein ausgang pinMode(more,OUTPUT); //more ist ein ausgang pinMode(zuruck,OUTPUT); //zuruck ist ein ausgang pinMode(bumper,INPUT); //bumper ist ein eingang } void loop() { if(bumperstatus==HIGH) //wenn Bumper gedrückt { digitalWrite(moli,LOW); //Motor Links aus digitalWrite(more,LOW); //Motor rechts aus delay(500); //warten 0,5 sekunden digitalWrite(zuruck,HIGH); //auf rückwerts schalten delay(500); //warten 0,5 sekunden digitalWrite(moli,HIGH); //Motor Links an digitalWrite(more,HIGH); //Motor rechts an delay(2000); //warten 1 sekunden digitalWrite(moli,LOW); //Motor Links aus digitalWrite(more,LOW); //Motor rechts aus delay(500); //warten 0,5 sekunden digitalWrite(moli,HIGH); //Motor Links ein digitalWrite(more,LOW); //Motor rechts aus delay(1000); //warten 1 sekunden digitalWrite(zuruck,LOW); //auf vorwerts schalten delay(500); //warten 0,5 sekunden } else { digitalWrite(moli,HIGH); //Motor Links an digitalWrite(more,HIGH); //Motor rechts an } } (14.10.2015 10:29)hotsystems schrieb:(14.10.2015 10:26)Klaus(i) schrieb: Der GOTO wird in C++ meines Wissens nicht unterstützt.Das stimmt nur zum Teil, es wird auf dem Arduino einwandfrei kompiliert und funktioniert danach auch. Schreibt man dann: A B C GOTO (G) D E F G damit er die Teile D,E und F auslässt? Buch ist bestellt :-))) |
|||
14.10.2015, 12:25
(Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2015 12:27 von hotsystems.)
Beitrag #39
|
|||
|
|||
RE: Neo's Roboter
Zitat:Schreibt man dann: Nein so: Code: A Was das andere Thema betrifft, musst du den aktuellen Stand zwischenspeichern. Ähnlich wie: if(Aktuelle_Richtung==rechts) { //Fahre links Aktuelle_Richtung=links; } if(Aktuelle_Richtung==links) { //Fahre links Aktuelle_Richtung=rechts; } So in der Art musst du das einbauen. Und setze die einzelnen Richtungen in Funktionen, das wird übersichtlicher. Das mit dem Buch ist ne gute Wahl. Dann lesen wir hier zukünftig weniger von dir. ![]() ![]() I2C = weniger ist mehr: weniger Kabel, mehr Probleme. ![]() Gruß Dieter |
|||
14.10.2015, 13:02
Beitrag #40
|
|||
|
|||
RE: Neo's Roboter
Hmm, das habe ich nicht verstanden.
Ich dachten an: int drehrichtung=1 // bei jedem weiteren Bumper=high wird 1 dazugezählt Also: Drehrichtung=2,3,4 usw. dann hab ich mir gedacht, dass ich sage wenn drehrichtung=even drehe rechtsrum und wenn drehrichtung=odd drehe linksrum { if(drehrichtung==odd) { digitalWrite(moli,LOW); digitalWrite(more,HIGH); } else { digitalWrite(moli,HIGH); digitalWrite(more,LOW); } So das war mein Gedanke. Was haltet Ihr davon? |
|||
|
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
Roboter Starter Kit | koma1965 | 9 | 638 |
13.03.2018 08:40 Letzter Beitrag: Thie |
|
Roboter kompassgestützt steuern | Snörb | 5 | 1.016 |
22.07.2017 12:16 Letzter Beitrag: Snörb |
|
Zumo Roboter Projekt | Werner Lage | 6 | 1.043 |
14.06.2017 05:57 Letzter Beitrag: georg01 |
|
kleiner Roboter | blichi | 24 | 2.082 |
27.07.2016 14:02 Letzter Beitrag: torsten_156 |
|
Roboter-Bau Probleme | blebbens | 8 | 1.195 |
12.07.2016 07:35 Letzter Beitrag: Binatone |
|
Selbstfahrender Roboter Programm änderung hilfe ? | arekklone | 11 | 1.819 |
06.07.2016 14:59 Letzter Beitrag: Binatone |
|
SR-04 + UNO + 4WD Roboter, Abstandsfehler | Marc2014 | 25 | 4.488 |
21.09.2014 21:42 Letzter Beitrag: Thorsten Pferdekämper |
|
Roboter | J4Ng0 | 2 | 2.093 |
21.07.2013 15:49 Letzter Beitrag: Snake8811 |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste