| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Niyar Mindstormsfreund

Anmeldungsdatum: 05.03.2010 Beiträge: 4
|
Verfasst am: Fr März 05, 2010 8:35 pm Titel: Problem mit dem Beschleunigungssensor |
|
|
Ich arbeite in der Schule mit dem Beschleunigungssensor von HiTechnic. Ich hab versucht mir die einzelnen Werte für die Achsen ausgeben zu lassen. Leider kann ich aber nichts mit den Werten anfangen. Die sind teilweise über 1000 bis hin zu 10000!!!!
Kann mir einer vieleicht sagen wie ich das verstehen soll?
Ich arbeite mit unter NXC. |
|
| Nach oben |
|
 |
Linus Schreibt sehr viel

Anmeldungsdatum: 13.07.2007 Beiträge: 443
|
Verfasst am: Sa März 06, 2010 12:34 am Titel: |
|
|
Poste mal dein Programm. _________________ RWTH - Mindstorms NXT Toolbox for MATLAB - www.mindstorms.rwth-aachen.de
Beispielvideo mit der Toolbox in Aktion |
|
| Nach oben |
|
 |
Niyar Mindstormsfreund

Anmeldungsdatum: 05.03.2010 Beiträge: 4
|
Verfasst am: Sa März 06, 2010 5:37 pm Titel: |
|
|
Hier ist das Programm:
task main()
{
int x,y,z;
SetSensorLowspeed(S2);
SetSensorTouch(S1);
while (true)
{
if (ReadSensorHTAccel(S2, x, y, z))
{
NumOut(20, LCD_LINE4, x);
NumOut(20, LCD_LINE5, y);
NumOut(20, LCD_LINE6, z);
}
if (SENSOR_1 ==1)
{
OnFwd(OUT_A, 20);
Wait(3000);
}
}
}
ich hab in der Schule Vorrichtungen gebaut um jeweils nur eine Achse anzusprechen. |
|
| Nach oben |
|
 |
Ford Prefect Moderator


Anmeldungsdatum: 11.01.2006 Beiträge: 1950 Wohnort: ein kleiner Planet in der Nähe von Beteigeuze
|
Verfasst am: Sa März 06, 2010 6:27 pm Titel: |
|
|
vllt solltest du bei der ersten Ausgabe vorher den Bildschirm löschen:
| Code: | NumOut(20, LCD_LINE4, x, true);
NumOut(20, LCD_LINE5, y);
NumOut(20, LCD_LINE6, z); |
wenn's dann immer noch nicht geht - hast du mal das Hitechnic Beispielprogramm probiert?
Achtung: S1 durch S2 ersetzen!
| Code: | task main()
{
SetSensorLowspeed(IN_1);
int count;
int xval;
int yval;
int zval;
byte inI2Ccmd[];
byte outbuf[];
while (TRUE)
{
ArrayInit(inI2Ccmd, 0, 2); // set the buffer to hold 10 values (initially all are zero)
inI2Ccmd[0] = 0x02; // set values in the array
inI2Ccmd[1] = 0x42;
count=8; //read count set to 8 bytes
I2CBytes(IN_1, inI2Ccmd, count, outbuf); //read the acceleration sensor on port 1
xval=outbuf[0]; //load x axis upper 8 bits
yval=outbuf[1]; //load Y axis upper 8 bits
zval=outbuf[2]; //load z axis upper 8 bits
if (xval > 127) xval-=256; //convert x to 10 bit value
xval=xval*4 + outbuf[3];
if (yval > 127) yval-=256; //convert y to 10 bit value
yval=yval*4 + outbuf[4];
if (zval > 127) zval-=256; //convert z to 10 bit value
zval=zval*4 + outbuf[5];
// Ford's Ergänzung:
NumOut(20, LCD_LINE4, xval, true);
NumOut(20, LCD_LINE5, yval);
NumOut(20, LCD_LINE6, zval);
}
} |
_________________ Don't Panic!
Gruß,
Ford - "A Kingdom of Heaven if NXC had recursions!" - Prefect |
|
| Nach oben |
|
 |
Niyar Mindstormsfreund

Anmeldungsdatum: 05.03.2010 Beiträge: 4
|
Verfasst am: Di März 09, 2010 1:22 pm Titel: |
|
|
Das Programm funktioniert nicht. Es wird die Fehlermeldung 'File error' auf dem Brick-Display ausgegeben. Der Compiler hat keine Probleme, das Programm zu übersetzen.
Kann es möglich sein, dass das Programm nicht vollständig ist, da bei HiTechnic auch '...' am Ende des Programmes angegeben wird? |
|
| Nach oben |
|
 |
Ford Prefect Moderator


Anmeldungsdatum: 11.01.2006 Beiträge: 1950 Wohnort: ein kleiner Planet in der Nähe von Beteigeuze
|
Verfasst am: Di März 09, 2010 1:30 pm Titel: |
|
|
soweit es compiliert + übertragen wird, muss es dann auch vollständig sein. "File Error" passiert immer dann, wenn zur Laufzet ein fehler auftritt (z.B. wenn man arrays falsche Variablen zuweist o.ä.)
PS:
hast du dein eigenes, urspr. Programm mit der geänderten Ausgabe probiert?
| Code: | NumOut(20, LCD_LINE4, xval, true);
NumOut(20, LCD_LINE5, yval);
NumOut(20, LCD_LINE6, zval); |
_________________ Don't Panic!
Gruß,
Ford - "A Kingdom of Heaven if NXC had recursions!" - Prefect |
|
| Nach oben |
|
 |
Sebi Moderator


Alter: 14 Anmeldungsdatum: 11.01.2008 Beiträge: 1627 Wohnort: Aub
|
Verfasst am: Di März 09, 2010 4:11 pm Titel: |
|
|
Probier mal:
| Code: | | ArrayInit(outbuf, 0, 3); |
Nach dem anderen Array Init.
Bei mir kommt, bei Arrays ohne ArrayInit auch immer File Error. _________________ www.my-lego-page.de.vu |
|
| Nach oben |
|
 |
Max96 Schreibt sehr viel

Alter: 14 Anmeldungsdatum: 17.08.2009 Beiträge: 488 Wohnort: Rheinland-Pfalz
|
Verfasst am: Mi März 10, 2010 5:51 pm Titel: |
|
|
Hi,
also ich habe festgestellt, dass bei dem Programm öfters die Meldung "File Error" kommt.
Um das zu verhindern habe ich in die Schleife die den Sensor abfragt einen Wait(50) Befehl reingemacht. So kann man das verhindern.
Eine Erklärung warum das so ist habe ich noch nicht gefunden.
PS: Weis jemand wie man die Werte die der Sensor liefert in G umrechnen kann? _________________ Gruß Max |
|
| Nach oben |
|
 |
Linus Schreibt sehr viel

Anmeldungsdatum: 13.07.2007 Beiträge: 443
|
Verfasst am: Do März 11, 2010 12:18 am Titel: |
|
|
| Max96 hat folgendes geschrieben:: |
PS: Weis jemand wie man die Werte die der Sensor liefert in G umrechnen kann? | Durch 200 teilen. Der sensor gibt max -400 bis +400 zurück, und er kann -2G bis +2G messen. _________________ RWTH - Mindstorms NXT Toolbox for MATLAB - www.mindstorms.rwth-aachen.de
Beispielvideo mit der Toolbox in Aktion |
|
| Nach oben |
|
 |
Niyar Mindstormsfreund

Anmeldungsdatum: 05.03.2010 Beiträge: 4
|
Verfasst am: Do März 18, 2010 7:24 pm Titel: |
|
|
Danke für die Hilfen.
Ich bin etwas weitergekommen.
Da ich den Sensor erst ma etwas ausprobiert habe, arbeite ich erst ma nicht mit dem weiter. Ich hab jetzt mit dem Kompass-Sensor angefangen, der übrigens auch echt cool ist |
|
| Nach oben |
|
 |
|
|
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|