PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommunikation ATMega32 <-> CmuCam2 funst nicht !



Javik
10.01.2005, 18:26
Hi,
Ich versuche verzweifelt eine vernünftige Verbindung zwischen meinem AtMega32 und meiner CMuCam2 über RS232 aufzubauen.
Das funst aber nicht :( ich möchte vom Controler aus der Cmucam sagen dass sie eine OIbjekt von einer best Farbe Verfolgen soll (der Befehl dazu ist "TC 225 255 225 255 225 255").
Um die Komunikation zu vereinfachen hab ich auf den Pool Mode (der Befehl heißt "PM 1") zurückgegriffen. In diesem Modus sendet die Kammera nur ein einzigen Wert als Rückgabe.
Als Rückgabe bekommt man zB :
"ACK
T 90 80 77 17 85 116 20 45
:"
Ich müchte mir von disem Rückgabewert nun die ersten 2 Zahlen nach dem T holen. (das sind die x und die y Koordinate des Farbenschwerpunktes) Dazu habe ich folgendes Programm Entworfen, welches aber leider nicht funktioniert...


$regfile = "m32def.dat" 'für den chip

$crystal = 16000000 'für einen externen 16 MHz Quarz
$baud = 9600

Config Serialin = Buffered , Size = 29
Config Serialout = Buffered , Size = 34

Dim Z1 As String * 1
Dim Zwert As String * 11 , Werte As String * 11
Dim Xwert As Byte , Ywert As Byte
dim Count as Byte

Enable Interrupts

Print "PM 1"

Zwert = ""
Count = 0
Do
Z1 = Inkey()
If Z1 = "A" Then
Do
Z1 = Inkey()
Loop Until Z1 = "T"
Z1 = Inkey()
Do
Incr Count
Z1 = Inkey()
Zwert = Zwert + Z1
Loop Until Count >= 6
Else
Print "TC 225 255 225 255 225 255"
Waitms 100
End If
Loop Until Count >= 6

Werte = Mid(zwert , 1 , 2)
Xwert = Val(werte)
If Xwert < 10 Then
Werte = Mid(zwert , 3 , 2)
Else
Werte = Mid(zwert , 4 , 2)
End If
Ywert = Val(werte)
If Xwert <> 0 then
Sound portd.7, 2300, 433 'Da beepts dann halt
End if
If Ywert <> 0 then
Sound portd.7, 2300, 433 'Da beepts dann halt
End if

Die Beiden Variablen Xwert und Ywert sollten dann die ersten beiden Zahlen nach dem T enthalten. Da ich aber nie ein Beepen höre geh ich davon aus das er die Werte nicht gescheit bekommt...

Mach ich das ganze zu Umständlich ?? gibts da vlt was einfacheres ??
Oder entdeckt jemand da nen Fehler ?
Ich bräuchte Schnelle Hilfe !! Das muss möglichst bald klappen...

Vielen Dank schon mal !!

Gruß Javik

cht
13.01.2005, 12:19
Ein Tip vom Team Glinde: Benutzt nicht Bascom.
cu@Erfurt am Samstag ;)

cht

Javik
13.01.2005, 13:08
Warum denn nich ? was benutzt ihr denn?

Cu Dann Übermorgen ^^

pebisoft
13.01.2005, 13:20
lass dich nicht in die irre führen, arbeite weiter mit bascom. zur zeit weiss ich für dein problem aber keine lösung. ich arbeite mit der vollversion von bascom. in c konnte ich meine projekte vom küchenbrettroboter nicht so schnell oder garnicht verwirklichen. in bascom wars wunderbar leicht und alles war nachvollziebar.
mfg pebisoft

PicNick
13.01.2005, 15:05
Hi, Javik
Nach dem LOOP UNTI Z1 = "T"
liest du Z1 = INKEY(), diesen wert schaust du aber nie an ??

mfg robert

REB
13.01.2005, 15:32
Warum denn nich ? was benutzt ihr denn?

Cu Dann Übermorgen ^^

Hallo Javic,

einige Mitglieder des Teams haben mit Bascom schon schlechte Erfahrungen mit der Interruptverwaltung gemacht. Deshalb ist Bascom nicht unbedingt schlecht aber man muss halt wissen was genau ablaeuft :-).
Wir benutzen GNU CC / Pony und einige auch Studio 4.
Bis Samstag

REB

Javik
13.01.2005, 16:47
@ Picnik: Des Inkey() is da um des Lehrzeichen "rauszuholen"

Naja, ich hab inzwischen schon ne andere möglichkeit gefunden die super funktioniert ;) (wenn man erst mal versteht was da genau abläuft in dem Buffer wirds leicht...)

Ich hatte da noch keine Probleme mit den Interrupts. Wo waren da eure ??

nutzen GNU CC / Pony und einige auch Studio 4.
Was haben die den für ne Dialekt ? eher Basic oder C++ ??

Javik

pebisoft
23.08.2005, 19:52
hallo, wie setzt man eigentlich die bounding-box, die box, wo die rgb-farben kontrolliert werden vom befehl tc...
mfg pebisoft

24.08.2005, 21:34
wenn ich mich richtig erinnere vw (virtual window) - für weitere infos rtfm.
Gruß
cht

pebisoft
24.08.2005, 21:52
bei der farbeingabe über "tc..." brauche ich die farbe vom gegenstand.
wie ermittle ich mit der cmucam2 die rgbwerte, unter welchen befehl werden die ausgegeben.
mfg pebisoft

Javik
25.08.2005, 08:02
Ich habs so gemacht, dass ich die Cam erst mal am Pc hatte und dann mittels der Software die dabei war hab ich dann nen bild des Gegenstandes gemacht.
Dann einfach da auf den Gegenstand klicken wo die gewünschte Farbe ist (dann wird alles was diese Farbe hat hell eingefärb, damit man sieht wo die jetzzt überall ist) und dann kannst du unten links drunter die RGB werte ablesen.

Gruß Javik

pebisoft
25.08.2005, 08:14
wenn du jetzt die farbwerte hast, welche erfahrung hast du mit der auswertung und wie setzt du dann die rgbmin und rgbmax für eine optimale auswertung und verfolgung bzw welche differenz setzt du immer. ich brauch von t auch nur die x und y-werte, also die ersten beiden. hast du irgendwie noch einen rahmen gesetzt für das filtern der farbe, damit nicht die ganze grösse benutzt wird.
danke für deine obige antwort.
mfg pebisoft

Javik
25.08.2005, 10:53
Ich hab ehrlich gesagt keine guten Erfahrungen gemacht ^^ aber vlt lags dran, dass mein Controler 16Mhz hatte -> schlechtes RS232 Signal.
Mag auch dran gelegen haben dass ich mit Bascom gearbeoitet hab. Ich hab mir die ergebnisse als rare Byts schicken lassen, und dann eben durch eine routine auch genau diese 2 ersten werte rausgeholt ;)

mit den rgb min/max musst du rumspielen. es is verschieden je nachdem in welcher Helligkeit usw du dich aufhältst. und wie sehr sich die helligkeit ändern kann.

Gruß Javik

pebisoft
25.08.2005, 17:00
wozu braucht man denn den y-wert (2.wert).
es würde für die eine ebene doch nur der x-wert reichen.
mfg pebisoft

Javik
25.08.2005, 23:19
wenn du die Kamera so tief anbringen willst ^^

Gruß Javik

pebisoft
26.08.2005, 07:51
dein vorschlag mit der farbe rauspicken geht wunderbar.
er reagiert sehr genau. man sieht ganz genau wie die box ins bild wandert und wieder raus wenn ich den gegenstand quer rüberziehe.
wenn ich den gegenstand entferne verkleinert sich auch die blaue box (im beiliegenden javaprogramm). kann man diese box die sich verkleinert die anderen 4 ausgaben die hinter x und y kommen.
wie hoch hast du deine cam angebracht .
kann man mit diesen tc... auch linien auf dem boden verfolgen oder gibt es da einen anderen befehl für.
was hast du genau gemacht, damit immer nur 1 t-ergebnis gesendet wird und was muss man aufrufen damit ich wieder ein neues t-ergebnis bekomme, ich möchte auch nicht, das dauernd gesendet wird sondern nur wenn ich ihn auffordere .
ich möchte hier auch noch einmal betonen das die cmucam2 das geld wert ist und eine schöne experiementelle unterhaltung mit sachlichen ergebnissen.
mfg pebisoft

Javik
26.08.2005, 09:34
ja is nett dem zuzuschaun gell ;)
ich wüsst keinen speziellen Befehl fürs Linien verfolgen. aber müsste doch mit Tc gehen wenn man halt auf die Farbe der linie einstellt.
Man kann leider nicht nur die ersten 2 Zahlen schicken lassen. wenn dann kommt immer alles.
Für einzelen antworten nimmst du den Buffermode.
also sieht so aus:
BM 1
TC....
T xy...
und dann musste halt jedes mal um nen neues T abzuholen auch dein TC nochml eingeben.
Aber die CMucam kann einen auch ganz schön stressen o.0
(letztes Jahr roboking... zB die ecke von den blöden Baumstämmen zu unterscheiden o.0)
Gruß Javik

26.08.2005, 10:14
hallo BM oder PM oben steht poolmode.
danke.
mfg pebisoft

pebisoft
26.08.2005, 10:19
kann man diese box die sich verkleinert durch die anderen 4 ausgaben (nach x,y) in T.. lokalisieren.
mfg pebisoft

Javik
26.08.2005, 10:51
ja ich denk des sind die koordinaten des links oberen und rchts unteren Eckpunkts des Rechtecks.
gruß Javik