-
-
Erfahrener Benutzer
Roboter Experte
Grütze? Jawohl, bei einem fertig gekauften ASURO waren zwei Widerstände (R28 u. R15) falsch über Kreuz gesteckt. Nach einer längeren Entlöt- und Neueinsteckaktion (was ein Gefummel) sieht alles bestens aus: 1,2,4,8,16,33
Ist das so o.k. mit den 33?
Ein selbst zusammen gelöteter ASURO funktionierte auf Anhieb, aber ergab auch diese Zahlen wie oben, also die 33.
-
Moderator
Robotik Visionär
Hihi, so ähnlich geht's wohl jedem der fremden, natürlich gewachsenen Code begutachtet.
Grobe Funktionsbeschreibeung:
Die eigentliche "Hauptschleife" steht zwischen do ... while. Zuerst werden die Line-Data gelesen und die BackLEDs ausgemacht. Dann erfolgen per If-Abfrage die Ermittlung der Position auf der Linie und die erforderlichen Reaktionen für MotorSpeed und MotorDir werden ermittelt (dir_l/dir_r und pow_l/pow_r). Zusätzlich werden je nach Reaktion auch die BackLEDs wieder eingeschaltet. Am Ende der Schleife werden die ermittelten Werte an die Motoren übergeben und die Schleife startet erneut. Bei jedem Schleifendurchgang werden so die Reaktionen auf die Linienabweichung neu berechnet.
Wenn der asuro die Linie komplett verlassen sollte, merkt sich "suchen", wohin die Linie verschwunden ist und der asuro dreht zurück, bis er sie wieder findet.
In h_l/d_l bzw h_r/d_r speichere ich die max. bzw. min. Werte die gemessen werden. Es wird dabei ein Mittelwerte mit dem letzten gespeicherten min/max-Wert gebildet um Ausreiserwerte zu dämpfen. Auch diese Werte werden bei jedem Schleifendurchgang aktuallisiert.
In solch einen Programmablauf kann man nun überall noch was anhängen, sei es eine Tastenabfrage, eine IR-Abstandsmessung oder was einem noch so einfällt.
Natürlich gibt es für verschiedene Aufgabenstellungen genausoviele Lösungsprogramme wie es Programmierer gibt. Mein Beispielcode soll dir nur mal zeigen, wie man die while-Schleifen loswerden kann. Am meisten lernt man selbst, wenn man sich die Codes der anderen anschaut und sich das Beste daraus selbst aneignet...
@ehenkes:
nein, ist nicht ok. Die Summe aller Taster sollte 63 sein, dann ist es ok. Jeder Taster wird dann genau durch ein Bit im Ergebniss von PollSwitch() abgebildet. (Musterthread Tasterkalibrierung)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
-
Moderator
Robotik Einstein
die 33 ist nicht ganz so super. ist es immer 33 oder auch manchmal/meistens/gelegentlich 32?
der vorteil der exakten zahlen ist, dass man binär ausgedrückt folgende zahlenwerte erhält:
0b00000001 = 1
0b00000010 = 2
0b00000100 = 4
0b00001000 = 8
0b00010000 = 16
0b00000000 = 32
werden also mehrere taster gleichzeitig gedrückt, so bekommt man die summe:
0b00010101 = 16 + 4 + 1
die 33 allerdings ergibt das hier:
0b00100001 = 32+1 sieht also so aus wie wenn beide äusseren taster gedrückt wurden.
-
Erfahrener Benutzer
Roboter Experte
0b00000001 = 1
0b00000010 = 2
0b00000100 = 4
0b00001000 = 8
0b00010000 = 16
0b00100000 = 32
-
Moderator
Robotik Einstein
shit, vertippt... naja das prinzip ist ja klar. du kannst mal den widerstand der in reihe zum entsprechenden taster geschaltet ist (siehe schaltplan) durchmessen mit dem multi (vorher asuro abschalten) und mit dem eigentlich u erwartenden wert vergleichen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen