Hallo
Bevor wir uns auf die Fehlersuche stürzen, warum schreibst du deine Odometrie-Funktion mit y und nicht mit ie wie es in der Library definiert ist?
Gruß
mic
Hallo,
ich heiße Vincent und bin neu hier im Forum. Ich hab mich angemeldet, da ich einen Asuro habe und somit auch einige Probleme, die ich nicht selbt lösen kann.
Mein aktuelles Problem sind die Odometrie-Daten. Ich habe mir ein Programm geschrieben, in welchem der Asuro mir die aktuellen Odo. Daten liefert. Diese sind aber sehr merkwürdig und ich weiß nicht warum. Liegt es vielleicht an meinem Programm?:
Die Werte die mir mein Asuro liefert sind folgende:Code:#include <asuro.h> int main (void) { unsigned int data[2]; Init(); while(1) { OdometryData (data); Msleep (1000); SerWrite("\n\rLinks: ",10); PrintInt(data[0]); SerWrite("\n\rRechts: ",10); PrintInt(data[1]); Msleep(3000); } return(0); }
Links: 1023
Rechts: 0
Links: 1023
Rechts: 0
usw...
Oder liegt das an der Elektronik? Ich weiß aber nicht genau wie, ich dies überprüfen kann. Habt ihr vielleicht eine Idee, wie ich weiter vorgehen kann?
Ich hoffe ihr hab Verständnis, dass ich noch ein Anfänger im Programmieren und in der Technik bin.
Mit freundliche Grüßen
Vincent
Geändert von PicNick (05.06.2012 um 14:08 Uhr) Grund: + code-tags
Hallo
Bevor wir uns auf die Fehlersuche stürzen, warum schreibst du deine Odometrie-Funktion mit y und nicht mit ie wie es in der Library definiert ist?
Gruß
mic
Geändert von radbruch (05.06.2012 um 20:05 Uhr) Grund: Rechtschreibung
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Also bei mir steht das in der library mit y, aber ich hab es auch schon mit ie probiert... :
Nur zur Demonstration der Parameter/Returnwerte)
unsigned int data [2];
OdometryData (data);
if (data [0] > data [1]) // 0 linker Sensor; 1 ist rechter Sensor
fahre_links (); // Ein bisschen nach links fahren
if (data [0] < data [1])
fahre_rechts (); // Ein bisschen nach rechts fahren
BackLED (ON, OFF); // linke Back-LED mal wieder anschalten
Die Werte sind sehr untypisch, das entspräche genau GND bzw. VCC. Solche Spannungen kommen aber eigentlich nicht an den Odometriesensoren zustande. Sind beim Löten irgendwo eine Brücke nach VCC/GND entstanden?
Dein zweites Codebeispiel macht mit den Messwerten des Linienfolgers Sinn, nicht aber mit den Odometriesensoren ...
mfG
Markus
Tiny ASURO Library: Thread und sf.net Seite
Schon mal danke für die Hilfe,
aber ich kann keine Lötbrücken erkennen und die Lötstllen von T11/12 und D13/14 sind ja auch ziemlich alleinstehend. Die Messwerte gibt mir der Asuro aber leider bei meinem Programm mit OdometrieData zurück . Meine Linienverfolgungssensoren sind aber in Ordnung und geben auch vernünftige Werte.
Hat noch jemand eine Idee was das Problem sein könnte? Kann ich die OdometrieDaten überhaupt mit meinem Programm einlesen oder hab ich einen Denkfehler in meinem Programm?
Fototransistoren und LEDs verwechselt?
Beim probot sind die selben Bauteile im Einsatz, bebilderte Beschreibung auf Seite 20/21:
http://www.produktinfo.conrad.com/da...28_BAUSATZ.pdf
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Nein die sind auch richtig eingebaut. Weiße sind Fototransistoren also bei T11/12 und rosane sind IR-Dioden bei D13/14.
Vincent
Vielleicht muss data[] global sein?
#include <asuro.h>Code:#include <asuro.h> unsigned int data[2]; // als globale Variable? int main (void) { Init(); while(1) { OdometryData (data); Msleep (1000); SerWrite("\n\rLinks: ",10); PrintInt(data[0]); SerWrite("\n\rRechts: ",10); PrintInt(data[1]); Msleep(3000); } return(0); }
Welche Version der Library verwendest du?
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
/*!
* \file version.c
* \brief Versions Kommentare und Versions String
*
* $Revision: 2.70 $
* $Date: 07. Januar 2007 $
* $Author: Jan Grewe, Robotrixer, Waste, Stochri, Andun, m.a.r.v.i.n $
[...]
#include "asuro.h"
const char version[5] = "2.80";
sind das die Informationen die du brauchst oder stehen die wo anderes?^^
Ich versuch es mal mit deineme Quellcode...
Vielen Dank
Vincent
Nein, geht auch nicht wenn ich data[] als globale Variable benütze. Die Werte, die mir der Asuro gibt,sind wieder dieselben: Links 1023 und Rechts 0.
Vincent
Geändert von Vin (05.06.2012 um 21:12 Uhr)
Lesezeichen