na das klint doch nicht schlecht. der nächste schritt sollte evtl eine art optimierung sein, 3 bit auf 15 cm ist nicht die masse. da geht mit sicherheit noch was =)
So, es klappt tatsächlich. Die Funktion lässt Asuro über den Barcode fahren und gibt zum Schluß den entsprechenden Wert zurück. Den kann man dann für alles mögliche verwenden...
Ich habe mich da Schritt für Schritt durchgearbeitet, wer sehen will wie ich es gemacht habe siehe angehängte Excel Datei.
Ich habe nun den Barcode mit der Odometrie verknüpft, sobald das Startbit erkannt wurde, beginnt die Messung. Ein kompletter Barcod ist exakt 150mm lang und besitzt 5 schwarze Striche.
Jeder schwarze Strich wird von einem weißen Zwischenraum gefolgt. Der schwarze Strich kann vorhanden sein(="1") oder nicht vorhanden sein(="0").
Eine Strichbreite habe ich mit 15mm festgelegt, näheres dazu in der Exceltabelle.
Letztendlich erhält man einen Barcode mit 1 Startbit, 3 Datenbits(=8 Werte), und einem Prüfbit(prüft die 1er Anzahl). Dank des Prüfbits arbeitet das ganze sehr zuverlässig.
Ich werde den C Code jetzt noch etwas optimieren, und werde ihn dann posten.
Grüße,
Harri
Grüße,
Harri
na das klint doch nicht schlecht. der nächste schritt sollte evtl eine art optimierung sein, 3 bit auf 15 cm ist nicht die masse. da geht mit sicherheit noch was =)
Ich hab alles soweit wie möglich variabel gehalten mit #define's, man kann also wenn alles perfekt läuft schauen wie weit man runter kommt. Man darf halt nicht vergessen dass 1 tick bereits 3mm sind, um halbwegs auf der sicheren Seite zu sein sollte man mindestens den 2fachen Wert verwenden, also unter 6mm kommt man auf gar keinen Fall, wahrscheinlich wird 9mm der kleinstmögliche Wert sein.Zitat von damaltor
Derzeit bin ich noch dabei ein Stoppbit einzufügen, um eindeutig zu erkennen ob Asuro den Strichcode von der richtigen Seite her überfahren hat.
Grüße,
Harri
Grüße,
Harri
Thema geteilt - die diskussion um die barcodes wird immer interessanter, und das eigentliche thema ideen kommt zu kurz...
Hab nun das mit dem Stoppbit hinbekommen. Durch einmaliges Auslassen eines weißen Abstandes ganz am rechten Ende des Barcodes kann man eindeutig sagen aus welcher Richtung Asuro die Daten liest, und gibt bei falscher Richtung einen Fehlercode aus.
In weiterer Folge könnte man Asuro ja dazu veranlassen, 'umzudenken' und den Barcode verkehrt herum zu lesen.
Anbei eine Skizze wie der Barcode auszusehen hat(natürlich schwarz weiß für optimalen Kontrast). Die Länge ist wegen des Stoppbits leicht angestiegen, und beträgt jetzt 165mm.
Den Quellcode poste ich dann morgen.
Grüße,
Harri
Grüße,
Harri
Hallo harry3,
laut Beschreibung in deinem EXCEL-Blatt: 'Versuch2' wird, so wie ich es vorgeschlagen hatte, mit jedem Tik der ODO-Scheiben eine Messung gemacht. Diese Daten zeigst du uns und wir können die Bit's im Barcode 'sehen'.
Ich habe aber noch das Problem, dass ich im Moment nicht sehen kann, wie der Asuro die Bit's sehen kann. Bis jetzt bildest du im EXCEL-Blatt in den Zeilen 10, 21, 31, 41, 51 eine Summe über die 5 vorherigen Messwerte (ohne den in der jeweiligen Zeile (10,21,..) einzubeziehen, schaust ob der Wert größer 'irgendwas' ist und sagst dann, das ist das Bit.
Warum machst du diese Berechnung nicht bei jeder Messung, sondern nur alle 10 Messungen?
In Zeile 31 rechnest du '=wenn(summe(A26:A30)>2;1;0))'
In Zeile 21 rechnest du '=wenn(summe(A16:A20)>2;1;0))'
Was machst du mit den Messwerten aus den Zeilen 21 bis 25?
Auf den Code bin ich total gespannt!
Das Format deines Barcodes müsste hervorragend zu einer Aufgabenstellung von stochri passen: Hier nachzuschlagen.
Meine Idee war im gleichen Thread hier vorgestellt. Auf dem dortigen Bild gibt es noch keine Barcodes. Deshalb hier nochmal 2 Stück dazu (mittlerweile leicht zerknittert):
Lieber Asuro programieren als arbeiten gehen.
Hallo Harry3,
alle Achtung, wie weit Du das Thema Barcode-Erkennung schon gebracht hast.
Was mir gerade noch eingefallen ist: Wäre es nicht besser, die Bits über die Strichbreite zu kodieren? z.B.: schmaler Strich=0, breiter Strich=1 ( ob weiß oder schwarz ist egal )
Stichwort: RZ-Code
Die allgemein verwendeten Barcodes verwenden teilweise Ansätze aus diesem Gedankengang.
Wikipedia
Die Kodierung über die Strichbreite hat den Vorteil, dass man nicht so leicht die Synchronisation verliert und man unabhängig von der Zeitdauer der Signale wird, falls die Strichbreiten relativ zueinander verglichen werden.Zur Darstellung sind je 4 verschiedene Balken- und Lückenbreiten notwendig, die insgesamt 32 Symbole definieren: Für die Ziffern 0-9 gibt es jeweils 3 Symbole (Codierung A, B, C)
Wenn man z.B. schräg über den Barcode fährt, wird es schwierig, den Code mit den Encoderticks zu synchronisieren, da er ja in die Länge gezogen wird.
Gruß,
stochri
habe ich auch schon vorgeschlagen, siehe weiter oben. aber ich wurde nicht erhört =)
dadurch könnte man ausserdem ganz gut platz sparen, weil nicht nur mithilfe von auslassungen sondern auch mithilfe von strich und lückenbreiten bits kodiert werden könnten.
Hallo
Genau das meinte ich mit:Die Kodierung über die Strichbreite hat den Vorteil, dass man nicht so leicht die Synchronisation verliert und man unabhängig von der Zeitdauer der Signale wird, falls die Strichbreiten relativ zueinander verglichen werden.
(Beitrag zeigen)Der Rest ist ein bisschen Rechenarbeit: Erste und letzte Flanke suchen, Gesamtlänge des Codes auf die einzelnen Bits verteilen....
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!
sagt mal, man könnte doch auch ein bissl platz sparen, indem man 2 barcode-"hälften", die man gleichzeitig mit den beiden Sensoren einliest, verwendet. allerdings müsste der asuro dann schön grade fahren. evtl könnte man dann mithilfe des odo-interrupts die barcodes lesen.
Lesezeichen