Hi,
wenn Du "false" komplett groß schreibst (FALSE) sollte es gehen.
Gruß,
askazo
Hallo
Ich habe mir vor einiger Zeit das Buch "Mehr Spaß mit ASURO" gekauft und wollte mal das Programm Stopp am Abgrund ausprobieren. ASURO sollte mit voller Geschwindigkeit vorwärts fahren bis er auf ein Schwarzes Papier trifft.
In der Zeile 15 zeigt es mir diesen Fehler an.Code:#include "asuro.h" #define STOP 200 int main(void) { unsigned int lineData[2]; unsigned char running = TRUE; Init(); MotorDir(FWD,FWD); MotorSpeed(255,255); do { LineData(lineData); if ((lineData[0] < STOP) && (lineData[1] < STOP)) { MotorSpeed(0,0); BackLED(ON,ON); running = false; } } while (running); while(1); return 0; }
Vielleicht könnt ihr mir weiter HelfenCode:> "make.exe" all set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \ | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \ [ -s test.d ] || rm -f test.d -------- begin -------- avr-gcc --version avr-gcc (WinAVR 20080610) 4.3.0 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: test.elf : section size addr .text 2138 0 .bss 1 8388704 .debug_aranges 64 0 .debug_pubnames 263 0 .debug_info 1077 0 .debug_abbrev 416 0 .debug_line 1622 0 .debug_frame 288 0 .debug_str 360 0 .debug_loc 388 0 Total 6617 avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o In file included from asuro.h:34, from test.c:1: c:/asuro_src/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." test.c: In function 'main': test.c:15: error: 'false' undeclared (first use in this function) test.c:15: error: (Each undeclared identifier is reported only once test.c:15: error: for each function it appears in.) make.exe: *** [test.o] Error 1 > Process Exit Code: 2 > Time Taken: 00:02
wen möglich im ganzen Programm!
Ich bin um jede Antwort froh und danke euch schon im Voraus!!!
Gruß
Pascal
Hi,
wenn Du "false" komplett groß schreibst (FALSE) sollte es gehen.
Gruß,
askazo
Danke probier ich mal
Funktioniert bei mir nicht habe TRUE durch 1 ersezt FALSE durch 0.
Keine Fehlermeldung wird angezeigt! Der ASURO aber bleibt stehen.
Hallo
Bei meinem asuro (mit nichtorginaler 3mm-LED) sind die Linienwerte für Nichtdunkel bei ca 40-50. Deine 200 als Stopwert scheinen mir deshalb viel zu groß. Je kleiner der Wert umso weniger reflektieres Licht wird zur Fahrt benötigt. Versuche deshalb mal Werte bei 30-40 für Stop.
Deine Abfrage setzt voraus das beide Sensoren gleichzeitig verdunkelt werden. Wenn der asuro schräg auf die Tischkante/Linie trifft könnte dies möglicherweise nicht erfüllt sein. Besser wäre vielleicht ein ODER:
if ((lineData[0] < STOP) || (lineData[1] < STOP)) {
Oder die Überprüfung der Summe:
if (((lineData[0] < STOP) && (lineData[1] < STOP)) || ((lineData[0]+lineData[1]) < (2*STOP))) {
Und immer damit rechnen dass der asuro die Tischkante doch nicht erkennt, gelle!
Gruß
mic
[Edit]Klammern korrigiert[/EDIT]
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke werde es eimal ausprobieren
geht das überhaupt mit dem char?
muss das nicht ein boolean sein? denn nur dieser typ kann doch true und false sein.
ok, man kann einem char ja ansich zuweisen was man will, aber von der logik her passt es iwie nicht so ganz...
Funktionieren tut es.
Guten Abend!
Sorry, dass ich diesen thread nochmal ausgegraben habe, aber ich wollte dieses programm auch mal ausprobieren, allerdings klappt das nicht so ganz. Ich habe auch dieses Problem, dass der Asuro einfach nur rumsteht, und nichts macht. Verschiedene Stop Werte habe ich auch schon ausprobiert.
Hier ist das Programm:
Liegt is einfach daran, dass ich nie den richtigen Stopwert finde oder gibts ein anderes Problem mit dem Programm? [/code]Code:#include "asuro.h" #define STOP 50 int main(void) { unsigned int lineData[2]; unsigned char running = 1; Init () ; MotorDir (FWD,FWD); MotorSpeed(255,255); do { LineData (lineData) ; if ((lineData[0] < STOP) && (lineData[1] < STOP)) { MotorSpeed(0,0); BackLED(ON,ON); running = 0; } } while (running); while(1); return(0); }
Hallo,
Hast du vorher gespeichert, bevor du kompiliert hast?
Lesezeichen