PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vorstellung, USB Adapter, Kamera und allgemeines



nil.at
26.09.2008, 01:46
Hallo liebe Robotereltern,

ich weiß nicht ob es bei Euch so üblich ist, aber ich bin es aus anderen Foren gewohnt mich kurz vorzustellen.
Ich heisse Gerrit, bin 22 und komme aus Wien. Habe eine 5 jährige Informatik HTL Schulausbildung hinter mir und interessiere mich seither irrsinnig für Elektronik und Softwareentwicklung, insbesondere Roboter und µC. Leider habe ich das meiste aus der Schulzeit bereits vergessen, möchte mich aber nun - mit Eurer Hilfe - wieder ein wenig einarbeiten.
(Weiteres entnehmt bitte meinem Profil)

Jedenfalls bin ich vor einigen Tagen - auf der Suche nach Roboterbausätzen für Anfänger - des öfteren auf Eure Seite gestossen und habe mir seither viele Informationen und Anregungen geholt.
Nun plane ich mir einen ASURO zuzulegen und dachte mir, dass ich mir vorm Kauf ein paar konkrete Informationen von Euch einholen sollte. So kam es also zur Registrierung :)

Soweit so gut, wie gesagt plane ich die Anschaffung eines ASUROS und hätte hier noch ein paar Fragen:

1) Mein Laptop hat keine serielle Schnittstelle. Soweit ich mich informiert habe ist beim Asuro Paket aber ein "rs232 zu Infrarot" Kabel dabei, um die Programme zum Asuro kabellos übertragen zu können. Auf der Herstellerseite fand ich jedoch einen "USB zu Infrarot" Adapter für neuere Computer. Blöderweise gibt es diesen nicht beim Conrad. (Zumindest in Österreich). Da mein Laptop aber eine Infrarotschnittstelle hat, dachte ich ich könnte ja direkt diese verwenden?
Allerdings glaube ich gelesen zu haben, dass das aus irgendeinem Grund (Protokol?) so nicht funktioniert. Stimmt das? Falls ja, könnte ich mir beim Conrad einen "rs232 zu USB" Adapter kaufen? Würde das funktionieren?
Zum Beispiel diesen hier: http://www.conrad.at/goto.php?artikel=971791

2) Sobald ich den Asuro in seiner Basisfunktion begriffen habe, möchte ich ihn modden. Ich habe bereits von Ultraschall- und Wämresensoren gelesen, allerdings steht im Asuro Wiki, dass für jede Modifikation der Lichtsensor an der Unterseite des Asuros dafür weichen muss. Mich würde interessieren warum das so ist?
Kann man die Sensoren nicht irgendwo anders parallel dazu löten? Hoffe Ihr könnt mir erklären warum das nicht funktioniert.

3) Einer meiner ersten geplaten Mods (bevors an die Erstellung eigener Roboter geht (habe hier im Forum dazu schon einige großartige Projekte gesehen)) ist die Addierung einer Kamera, die mir Bilder + Ton aufzeichnet und speichert, oder gleich schickt.
Bevor ich allerdings an die konkrete Planung gehe (wozu ich sicherlich Eure Hilfe brauchen werde) wollte ich mal fragen ob das überhaupt möglich ist und wenn ja, was Ihr zu dieser Kamera sagt:
http://www.conrad.at/goto.php?artikel=190840
Die wäre zumindest relativ klein und günstig.

So, das ist eigentlich alles was ich fragen wollte, bevor ich mir den Asuro kaufen werde.
Vielen Dank schonmal für Eure hilfreichen und kompetenten Antworten im Voraus.

Gruß,
nil

damaltor
26.09.2008, 02:14
willkommen im forum!

hier ein paar antworten:

Da mein Laptop aber eine Infrarotschnittstelle hat, dachte ich ich könnte ja direkt diese verwenden?
-> Nein, keine chance.

Falls ja, könnte ich mir beim Conrad einen "rs232 zu USB" Adapter kaufen? Würde das funktionieren?

-> da müsstest du großes glück haben; einige (sehr) wenige funktionieren. die meisten jedoch nicht.

...der Lichtsensor an der Unterseite des Asuros dafür weichen muss. Mich würde interessieren warum das so ist?
-> der prozessor des asuro hat einfach keine weiteren pins frei. es werden die pins der sensoren verwendet, um die erweiterungsplatine an den prozessor anzuschliessen. du könntest dir allerdings auch eine linienfolger-erweiterungsplatine bauen. oder du schaust mal ins www.asurowiki.de , hier wird eine lösung für das problem beschrieben wenn ich mich recht erinnere.

Addierung einer Kamera
->sofern du die bilder und den ton nicht mit dem avr auswerten/verarbeiten/... willst sondern irgendwie direkt an dem pc bekommst, geht das. allerdings ist der asuro dann eigentlich nur ein träger. der prozessor ist aber vermutlich zu schwach um in echtzeit ein kamerabild auszuwerten (wobei es solche ansätze schon gegeben hat, meist jedoch mit größeren avr-prozessoren).

hoffe ich konnte dir helfen... :)

nil.at
26.09.2008, 02:28
Guten Abend und Danke für die rasche Antwort! (und das um diese Uhrzeit)

Verstehe, das bedeutet ich werde um den direkt vom Hersteller angebotenen USB Adapter nicht herumkommen. Blöderweise gibt es den wie gesagt beim Conrad nicht. Kann mir jemand vielleicht eine alternative Bezugsquelle nennen? (Amazon hat den Asuro leider auch nicht im Repertoire) Perfekt wäre natürlich eine Art Gesamtpaket. Also den Asuro, inklusive dem USB Adapter, den "mehr Spass" Büchern und Akkus. Weiß jemand wo es das alles zusammen geben könnte?

Danke, ich werde nochmal genauer ins asurowiki schauen. Hoffe es gibt eine Möglichkeit beides gleichzeitig zu verwenden. Vielleicht mittels einem zweiten Prozessor? Würde es Eurer Meinung nach zum Beispiel gehen denselben Prozessor nochmal zu verwenden, an dieselbe Spannungsquelle (also den Akku) anzuschließen, aber mit einem anderen Programm zu flashen? Logischerweise müssten die beiden Prozessoren dann irgendwie interagieren, sonst weiss das eine Programm ja nicht was das andere tut.

Gleiches würde natürlich für die Kamera gelten. Der Asuro muss natürlich auf die Aufnahmen der Kamera reagieren können. Daher müsste also schon der Prozessor davon wissen und damit umgehen können. Aber dafür wird er wohl wirklich zu schwach sein.

Was ich übrigens noch fragen wollte, der halbe Tischtennisball als Stütze, ist der auch im Lieferumfang enthalten oder muss man den selbst zuschneiden und befestigen?

Vielen Dank nochmal für die Hilfe!

Ceos
26.09.2008, 03:03
schaaaade .... den post kam fast nen tag zu spät, mein usb tranceiver hab cih gestern erst nem freund geschenkt, obwohl ich net sicher bin dass er ihn auch braucht .... (irgendwie klingt das nicht ganz ernst gemeint, isses aber)

2 controller auf einem asuro kannste theoretisch machen, du müsstest dann eventuell eine i2c kommunikationzu dazwischen aufbauen
leider wird das mit dem programmieren dann aber schwieriger, die mega8 werden von arrex vorprogrammiert und die haben einen eigenen bootloader drauf, damit man sie mit dem transceiver programmieren kann, den 2ten controller müsstest du dann mind. 1 mal über ISP programmieren

Bilder auswerten funktoniert fast nicht, eine normale webcam quasi garnicht, ein gameboy camera modul kann man auswerten, aber der speicherbedarf wird dich zu nem größeren atmega nötigen

ja den TT-ball muss man zurechtschneiden, der dient als gleiter, ich persönlich habe es durch ein stück rundgeschliffenes hartholz (1cm dick, sonst wirds eng mit den lötstellen rundherum) ersetzt dass ich von oben anschraube (achtung die platine hält SO viel kraft net aus, das holzstück vorbohren)

zum reagieren kann man ja die peripherie des asuro ein wenig umbauen, meine lösung ist etwas umfangreicher, aber die suchfunktion ist da dein freund, das forum ist voller ideen und lösungen ^^

nil.at
26.09.2008, 20:53
Guten Abend,

danke Ceos, aber ich hatte Glück. War heute beim Conrad um mir den Asuro zu kaufen und siehe da, lagen dort doch noch 2 USB Tranceiver rum.
Hab ich natürlich gleich zugeschlagen.

Okay, soweit ich das verstanden habe ist der Asuro für komplexere Ausbauten einfach nicht geschaffen. Ich werde mich wohl besser erstmal einarbeiten und dann ein eigenes, größeres Projekt schaffen. Ist wohl besser alles selbst zu durchdenken als in bereits bestehenden Schaltungen herumzupfuschen.

Bezüglich Kamerasteuerung habe ich gerade den Thread von der s/w Kamera im RP6 Thread gelesen und nichtmal dort klappt es so richtig. Werde mir da also wohl noch etwas Zeit lassen.

Hm, eigentlich wollte ich ja wissen ob der Tischtennisball beim Lieferumfang des Asuros dabei ist, aber das hab ich nun mittlerweile rausgefunden :)

Werde den Asuro morgen mal zusammenbauen und mir das Buch bestellen, dann sehen wir weiter wieviel Hilfe ich von Euch benötigen werde.

Ceos, ich habe die Suchfunktion bemüht, jedoch leider nichts passendes gefunden. Deine umfangreichere Lösung würde mich allerdings sehr interessieren, hast Du vielleicht einen Link für mich?

Danke nochmals und schönen Abend.

Ceos
26.09.2008, 22:22
naja kurz angerissen, statt taster abstandsensoren benutzen ( irgendwo war was mit IR sensoren von sharp, oder z.B. ultraschall auf kosten der liniensensoren), die liniensensoren können, intelligent eingesetzt, zur orientierung verwendet werden oder gar die IR sensoren zur abstandsmessung umgebaut werden, das geht auch mit der IR diode die eigentlich zur kommunikation eingesetzt wird, du solltest auf jeden fall überlegen für die liniensensoren und die IR diode und den empfänger buchsenleisten einzulöten (es gibt da so ne ausführung die ist nur 1mm hoch die ist ideal) um die bauteile steckbar zu machen

viele (ich auch schon) haben aucuh kompassmodule draufgebaut, mit denen der asuro sich nach dem erdmangetfeld richten kann

nil.at
29.09.2008, 21:22
Guten Abend,

ich habe die letzten zwei Tage damit verbracht den Asuro zusammenzubauen und habe anbei zwei Fragen an Euch:

1) Die Achsen haben sich geweigert angelötet zu werden, also hab ich sie mit Superkleber einfach angeklebt. Allerdings ist mir nach einer Nacht Trockenzeit aufgefallen, dass sich die Platine rings um die Klebestelle weiß beschichtet hat. Es lässt sich zwar stellenweise entfernen, aber nicht komplett. Wollte mal fragen ob das die Leitfähigkeit der Leiterbahnen beeinträchtigt? (Teste den Asuro erst morgen, hab keine Batterien :/ )

2) Mir ist bei genauem hinsehen aufgefallen, dass der Asuro noch weitere (teilweise sogar beschriftete) Anschlüsse hat. (Zwischen den Lichtsensoren beispielsweise, oder zwischen den Motoren. Aber auch ganz am Rand, ohne Beschriftung).
Wollte mal fragen wozu die gut sind? Sind die bereits für die etwaigen Erweiterungen gedacht?

Vielen Dank und drückt morgen die Daumen für meinen Asuro :)
Gruß

Ceos
30.09.2008, 01:38
die zwischen den sensoren liegenden anschlüsse sind einmal der externe interrupt INT0 und der 2te ... will mir grad net einfallen, der INT0 ist aber mit dem rotanteil der LED gekoppelt, arbeitet also nur mit nem verstärker

die zusätzlichen anschlüsse an den motoren sind für die odometriesensoren gedacht, falls du eine geberscheibe direkt am motor benutzen willst, nachträglicher einbau von weiteren dioden führt aber zu prblemen, du müsstest die hinteren schon ausbauen damit sie vorne auch funktionieren

PS: das sind nur niederschläge aus dem kleber, wenn du dort nicht grade lötest sollte es kein problem darstellen

inwieweit du über präzisionsbohrer/maschienen bverfügst weis ich jetzt nicht, aber ich hab nach nem achsbruch (abgerissen) von meinem vater quer durch die achse ne M2 loch bohren lassen und dann mit ner kleinen schraube und unterlegscheibe gegen die platine geschraubt, hält bombenfest, jetzt muss schon die platine zerbrechen damit die achse abget ^^

nil.at
01.10.2008, 14:52
Hallo,

und Danke für die Anregung Ceos, aber mein Asuro funktioniert soweit einwandfrei (auch mit geklebten Achsen).
Bin sehr zufrieden, der selftest verlieft ohne weitere Probleme und auch das erste Testprogramm (das eigentlich gar nichts tut) funktioniert.

Ich werde jetzt noch die Anleitung fertig lesen und das Asurowiki durchschauen, anbei hätte ich aber wieder ein paar Fragen an Euch:

Erstens ist mir aufgefallen, dass mein Asuro ein wenig nach links zieht, gibt es eine Möglichkeit das zu beheben? (Softwareseitig ist klar, einfach den einen Motor weniger beschleunigen, aber ich meinte Hardwareseitig)

Zweitens wollte ich gerne wissen WAS noch alles nötig ist bevor ich so richtig loslegen kann?
Ich las hier im Forum etwas von Tasterkalibrierung und Libraryupdate (keine Ahnung welche Version ich nutze).
Habt Ihr vielleicht eine Liste was alles gemacht werden muss? Informationen dazu such ich dann schon selbst (außer jemand hat natürlich was parat).

Drittens wollte ich fragen wie ich mich am Besten weiter in die Materie einarbeite? Habt Ihr Buchempfehlungen oder ähnliches? Wie gesagt die Grundlagen zu elektronischen Bauteilen kenne ich, mein Hauptproblem besteht wohl im Schaltungsentwurf und Dimensionierung der Bauteile.

Danke Euch wiedermal und schönen Gruß

//edit: Mir fiel soeben noch eine Frage ein. Und zwar, wenn ich mit SerRead bzw SerWrite Daten sende bzw. empfange, mit welchem Programm am PC kann ich diese dann einsehen oder senden?

//edit2: Die letzte Frage (edit) hat sich soeben beantwortet. Hab das Kapitel bei der Anleitung vorhin übersprungen... Hyperterminal funktioniert einwandfrei. Wie das senden und empfangen genau funktioniert hab ich mittlerweile auch raus.

//edit3: Ein anderes Problem stellt sich mir gerade:
Das Flashen will einfach nicht so recht funktionieren. Das Programm hat seeeehr häufig checksum und timeout Fehler, bis es irgendwann abbricht.
Ich verwende den USB Tranceiver.
Jemand ne Ahnung wie ich die Übertragungsrate verbessern kann?
Abdunkeln des Raumes hat nichts gebracht (habs sogar unter ner Decke versucht).

//edit4: Auch das Problem mit dem USB Tranceiver und den Checksum und Timeout Fehlern konnte ich beseitigen.
Lösung: Neue Version des Flashtools (1.51) sowie die CPU Frequenz drosseln (habe nen Centrino Laptop, da geht das Softwareseitig) und zu guter letzt die Sendeled vom Tranceiver ganz an die Empfangsled vom Asuro halten.

Hoffe ihr könnt mir die restlichen Fragen beantworten.
DANKE!

nil.at
02.10.2008, 00:01
Hallo nochmals,

ich weiß das Doppelposts ungern gesehen werden aber zur Aktualisierung und Ergänzung sowie der Übersichtlichkeit halber dachte ich ist das okay :)

Also ich habe jetzt die gesamte Doku + Asurowiki durch, soweit ist alles klar, aber ein neues Problem habe ich (siehe unten).

Zu meinem Vorpost:
Das nach links ziehen werde ich einfach Softwareseitig lösen. Sollte es zu extrem werden, ordne ich wohl einfach die Achsen ein wenig anders an. Danke hierbei nochmal an Ceos Tipp mit dem anbohren.

Zum Zweiten, die Tastenkalibrierung habe ich, aber dazu gibts dann das genannte Problem.
Libraryupdates habe ich keine gefunden (außer die von RN modifizierte). Ich werde wohl bei der Standard bleiben und später weitergucken.

Zum Dritten, lese ich mal die "Mehr Spass mit Asuro" Bücher, danach stelle ich die Frage einfach nochmal in der Buchempfehlungssektion.

So, nun aber zum neuen Problem.
Ich habe mein erstes Programm geschrieben (zur "Tastenkalibrierung"), allerdings funktionieren da manche Sachen nicht so wie sie sollen.
Seht euch einfach die Kommentare an und sagt mir bitte woran es liegt.



#include "asuro.h"

int main(void)
{
Init();

StatusLED(OFF);
unsigned char ps;

while(1)
{
ps = PollSwitch();

//hex converter: http://www.easycalculation.com/hex-converter.php

switch(ps)
{
case 0x01: StatusLED(GREEN); //k6 -> ganz bei EIN/AUS Schalter
break;
case 0x02: StatusLED(RED); //k5
break;
case 0x04: StatusLED(YELLOW); //k4
break;
case 0x08: FrontLED(ON); //k3 //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten)
break;
case 0x0C: FrontLED(OFF); //k3 + k4 //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten)
break;
case 0x10: BackLED(OFF,ON); //k2
break;
case 0x20: BackLED(ON,OFF); //k1 -> ganz bei Infrarotsender/empfänger
break; //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten), k2 hingegen schon!!
case 0x30: BackLED(ON,ON); //k5 + k6
break;
case 0x21: BackLED(OFF,OFF); //k1 + k6
}
}

return 0;
}


Danke, Gruß und gute Nacht

Ceos
02.10.2008, 00:40
obacht, die schraube geht durch den schlitz in der platine der zur führung der achse gedacht ist, nicht dass du mir anfängst wild löcher in die platine zu bohren ^^

zu dem drift, du wirst dich wundern, lockerst du z.B. ein wenig die muffe fürs rad hinten und lässt das linke rad ein wenig "leichter" laufen, geht er dir nach rechts ab dann wieder links dann wieder rechts ... das in der hardware zu lösen iss krampf

direkt updates/patches sind es nicht, es ist quasi eine neue komplette version der library, im asuroforum sollte ganz oben ein sticky mit der letzten version sein oder ? jedenfalls musst du die alte durch die neue einfach ersetzen

die tasterkalibrierung will mir grad nicht einleuchten, wenn du ERST k5 und k6 drückst und DANN nen anderen taster ändert sich nix ? kann vielleicht an dem switch case konstrukt liegen, du drückst k5 und k6, es entsteht ein definierter zustand, in dem falle BackLED(ON,ON); drückst du jetzt noch nen anderen taster ist der wert vielleicht nicht in der liste der cases existent, ergo keine änderung der werte, ergo bleiben die backLEDs beide an

die taster stellen zusammen ein widerstandsnetzwerk dar, die kombination verschiedener taster ergibt einen für jede kombination einzigartigen wert, der dann vom analog/digital-wandler über die funktion PollSwitch() in eine zahl umgerechnet wird ... das wären also

k1 = 1;
k2 = 2;
k3 = 4;
k5 = 8;
k6 = 16;

und jede kombination von tastern stellt dann die summe ihrer werte dar ... du könntest dir in einer while schleife auch einfach dauerhaft der wert von pollswitch ans hyperterminal senden


while(1)
{
UARTSend(Pollswitch(),1); // ich bin eingerostet, ich weis net wie der bfehel rchtig lautet, sorry
}
dann gehst du einfach die atster durch und notierst dir füe alle kombinationen die werte und siehst wo vielleicht was nicht hinhaut

PS: ich sollte so spät keine posts mehr verfassen, die tippfehler korrigier ich morgen raus wenns stört :p .... doppelposts sind zwar nicht die feine englische, aber manchmal muss man sich ja räuspern wenn der dialog einschläft .... wenns kein sinnfreier "keiner eine lösung?" doppelpost iss, nimmts dir sicher keiner krumm

radbruch
02.10.2008, 08:59
Hallo

Um mit den Tastern vernünftig arbeiten zu können sollte man wissen welche Werte von PollSwitch() geliefert werden:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35598

Gruß

mic

oberallgeier
02.10.2008, 10:11
Hallo nil,

Willkommen im Forum und in der asuro-Gemeinde.


... Hallo liebe eltern ...Klingt nett und witzig! Aber ich habe mit meinen "Kleinen" wirklich genug - also ich fühle mich nicht angesprochen.


... 2) Sobald ich den Asuro in seiner Basisfunktion begriffen habe, möchte ich ihn modden ...Ich hoffe, dass ich nicht zu den total Doofen zähle, aber ich habe ziemlich lange gebraucht bis ich die Basisfunktionen begriffen hatte. Z.B. - das mit der Regelung zweier Motoren mit unterschiedlichen Eigenschaften habe ich am asuro garnicht hingekriegt, aber in einem anderen kleinen Projekt (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=390196#390196) s..gut.


... 3) Einer meiner ersten geplaten Mods ... Kamera ...Ceos hatte ja schon von den beschränkten Möglichkeiten des originalen mega8 geschrieben. Man könnte natürlich den originalen mega8 durch einen mega168 ersetzen - dafür gibt es etliche Forumsmitglieder, die das Gleiche machen und, soweit ich weiß, auch eine lib verfasst haben. (Der mega168 ist pinkompatibel, aber nicht softwarekompatibel. Er hat zusätzliche, interessante Funktionen). Dazu müsstest Du bitte selber suchen. Eine Lösung mit dem m168 ist hier zu finden:
http://www.roboterclub-freiburg.de/asuro/hardware/chAtmegaAdapter/SumoAdapter.html

Vermutlich mehr Sinn macht ein größerer Controller. Das hatte pinsel120866 mithilfe einer käuflichen Eweiterungsplatine gemacht:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=373292#373292
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=390091#390091
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384900#384900

auch hier gibts ne Erweiterung, lies vielleicht hier den ganzen Thread durch
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=104861#104861

Viel Erfolg

Ceos
02.10.2008, 12:41
Um mit den Tastern vernünftig arbeiten zu können sollte man wissen welche Werte von PollSwitch() geliefert werden:

ja entschuldigung, das war unhöflich, der wert der zurückgegeben wird ist zwar 0-31 aber die umwandlung in lesbare zeichen hab ich vergessen :p

nil.at
02.10.2008, 15:08
Hallo allerseits und danke erstmal für die vielen Antworten :)

@Ceos: Dass die Schraube durch die Schlitze muss ist mir schon klar, danke ;) Werde aber erstmal versuchen es Softwareseitig zu lösen, wenn Du mir schon sagst dass das Lockern der Räder ebenfalls wenig bringt.

Die RN Library habe ich gefunden, muss allerdings gestehen, dass ich derart ehrgeizig bin und keine vorgeschriebenen Funktionen nutzen will. Ich denke es ist ein irrsinniger Lernfaktor selbst auf die Fehler zu kommen und zu lösen. Ich dachte nur gelesen zu haben, dass es ein allgemeines Update der Standardlibrary gibt, aber da habe ich mich wohl geirrt.

@oberallgeier: Ich schrieb Robotereltern ;) Anzunehmen dass jeder User hier Kinder hat wäre unsinn... aber zumindest einen Roboter wird jeder haben, oder?

Bezüglich dem Modden (in Zusammenhang mit der Fortbildungsfrage):
Wie im ersten Post geschrieben habe ich dank der Schule (die bereits ein paar Jahre her ist) bereits ein gutes Basiswissen. Ich weiß bescheid über Widerstände und andere Bauteile, sowie µC und Programmierung allgemein. Das einzige was mir noch fehlt ist die Kombination der einzeldinge zu einem gesamten. Vorallem wenn es darum geht zu verstehen WARUM sich etwas verhält, wie es sich nunmal verhält. Am Besten kann ich das wohl lernen wenn ich die Schaltungen durchgehe und eigene Schaltungen entwerfe, aber bis dahin ist es noch ein weiter Weg, für den ich eben auch ein Buch als Begleiter wollte. Werde mir mal das "Mehr Spass mit Asuro" Buch kaufen und dann weitersuchen.
Deinen R2D03 finde ich grandios, mich würde auch interessieren was aus dem ferngesteuerten Auto geworden ist :)

Aber wie gesagt, ans Modden gehts erst wenn ich mal alles soweit verstanden habe.

So, nun aber zu meinem Hauptproblem:
Was ich bei meinem Programm nicht verstehe ist nämlich folgendes:
Ich frage bei den cases die Werte der gedrückten Tasten ab und es funktioniert auch soweit alles. Das heisst, die Leds schalten ein/aus bzw nehmen die Farbe an die sie sollen.
Das bedeutet für mich, dass die Codes die die Taster senden stimmen.

Taster3 schaltet also beispielsweise die FrontLED ein, Taster3 + Taster4 schalten sie wieder aus.
Das einzige was nun eben nicht funktioniert ist, wenn ich Taster1 + Taster2 gedrückt habe (also BEIDE BackLEDs leuchten) ich die FrontLED nicht mehr Ein/Ausschalten kann. Genauso verhält es sich bei den einzelen BackLEDS. Wenn beide leuchten, kann ich durch einen Druck auf Taster2 wieder nur die rechte leuchten lassen, ein Druck auf Taster1 (also nur die linke BackLED) funktioniert aber nicht. Es tut sich einfach gar nichts.

Mir ist aufgefallen dass ich bei meinen Comments oben im Quellcode einen kleinen Tippfehler hatte (Taster vertauscht), deshalb hier nochmal der Quellcode:



#include "asuro.h"

int main(void)
{
Init();

StatusLED(OFF);
unsigned char ps;

while(1)
{
ps = PollSwitch();

//hex converter: http://www.easycalculation.com/hex-converter.php

switch(ps)
{
case 0x01: StatusLED(GREEN); //k6 -> ganz bei EIN/AUS Schalter
break;
case 0x02: StatusLED(RED); //k5
break;
case 0x04: StatusLED(YELLOW); //k4
break;
case 0x08: FrontLED(ON); //k3 //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten)
break;
case 0x0C: FrontLED(OFF); //k3 + k4 //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten)
break;
case 0x10: BackLED(OFF,ON); //k2
break;
case 0x20: BackLED(ON,OFF); //k1 -> ganz bei Infrarotsender/empfänger
break; //Funktioniert nicht wenn k5 + k6 gedrückt wurden (also beide BackLEDS leuchten), k2 hingegen schon!!
case 0x30: BackLED(ON,ON); //k1 + k2
break;
case 0x21: BackLED(OFF,OFF); //k1 + k6
}
}

return 0;
}


Also wie gesagt, die Werte stimmen, ALLE Leds leuchten dann wann sie sollen, nur die FrontLED lässt sich nicht ansprechen wenn hinten beide BackLEDS leuchten (wobei ich glaube irgendwo gelesen zu haben dass beides gleichzeitig nicht geht, weil wenn beide BackLEDS leuchten am uC irgendwelche Eingänge und Ausgänge anders geschalten sind als wenn die FrontLED leuchtet) (oder war das bei der Odometrie??) und die linke BackLED lässt sich auch nicht einzeln schalten (durch K1) wenn beide BackLEDs leuchten, die rechte BackLED (k2) allerdings schon.

Ich weiß es ist verwirrend, aber ich versteh den internen Ablauf und Schaltungen im uC leider nocht nicht.
Danke für Eure Hilfe!

radbruch
02.10.2008, 15:41
Hallo

Im Ergebniss von PollSwitch() wird bei richtig kalibrierten Tasten (und richtig eingelöteten Widerständen) jedem Taster ein Bit zugeordnet, von K6 ist bit0 bis K1 ist bit5. Mehrere Tasten zusammen erzeugen dann einen Wert der der Summe der Wertigkeiten der einzelnen Bits entspricht. Das geht dann von 0 für keine Taste bis 63 für alle zusammen.

Tastenkombinationen kann man dann einfach durch die passende Summe überprüfen, ein Beispiel: K2 und K6 sind gedrückt, das sind 16 + 1, also 17. Die Prüfung würde dann etwa so aussehen:

t1=PollSwitch();
t2=PollSwitch();
if((t1==t2) && (t1==17) ...

oder (t1==0x11) oder (t1 == 0b010001) ... wenn man das lieber mag.

Eine von mehreren Tasten gedrückt? Z.B.: K4-K6: 4+2+1=7 oder 0b000111 ergibt als Abfrage

if((t1==t2) && (t1 & 0b000111))...

usw.

Gruß

mic

nil.at
02.10.2008, 16:43
Danke radbruch, ich verstehe aber nicht so ganz was ich damit anfangen soll?
Wie man die Tasten abfragt weiss ich, wozu du allerdings zwei Abfragen machst und beide vergleichst weiss ich nicht?
Ändern sich die Werte der Tasten denn pro Druck?

Trotzdem, was hat das damit zu tun dass die FrontLED nicht schaltbar ist wenn BEIDE BackLEDs leuchten?

Danke, Gruß

//edit: Ich habe jetzt mal den Code von Sternthaler von hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=328229) getestet und bekomme perfekte Werte von meinen Tastern. Von 0 bis 63 sind alle Werte RICHTIG und ohne Abweichungen dabei.

Trotzdem funktioniert mein obiges Programm nicht.
Könnt ihr es vielleicht mal testen?
Kann es sein das die FrontLED einfach nicht angesprochen werden kann wenn beide BackLEDs leuchten?

radbruch
02.10.2008, 17:07
Ändern sich die Werte der Tasten denn pro Druck?
Nicht bei jedem Druck aber gelegentlich lügt PollSwitch() und deshalb ist es ratsam die Werte zu kontrollieren. Und deshalb ist es auch sinnvoll sich die Werte mal ans Terminal zu senden.