funktionierts denn?
Hi
Ich habe die snake erweiterung jetzt zu sammen gebastelt nur habe ich ein kleines problem mit der Programmierung habe schon paar mal drüber geschaut aber der sagt mir immer etwas vom Token wo keiner ist und laut Buch keiner hin soll
Hier mal der Code
Und Hier die FehlermeldungCode:#include "asuro.h" #define THRESH1 20 #define THRESH2 80 #define THRESH3 200 void ThermalData (unsigned int *data) { ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[0] = ADCL + (ADCH) << 8); ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[1] = ADCL + (ADCH) << 8); } int main(void) { unsigned int tdata[2]; unsigned int speed; signed int diff,sum; Init(); MotorDir(FWD,FWD); while(1); { ThermalData(tdata); sum=tdata[0]+tdata[1]; if (sum>THRESH1) { StatusLED(GREEN); speed=140; } if (sum>THRESH2) { StatusLED(YELLOW); speed=200; } if (sum>THRESH3) { StatusLED(RED); speed=255; } diff=((signed)tdata[0]-(signed)tdata[1])*32/sum; if (diff>4) { BackLED(ON,OFF); MotorSpeed(0,speed); } else if (diff<-4) { BackLED(OFF,ON); MotorSpeed(speed,0); } else { BackLED(OFF,OFF); MotorSpeed(speed,speed); } } else { StatusLED(OFF); BackLED(OFF,OFF); MotorSpeed(0,0); } } return 0; }
Bitte um HilfeCode:> "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,-adhlns=asuro.lst -std=gnu99 asuro.c \ | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \ [ -s asuro.d ] || rm -f asuro.d set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test_i2cmaster.lst -std=gnu99 test_i2cmaster.c \ | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test_i2cmaster.d; \ [ -s test_i2cmaster.d ] || rm -f test_i2cmaster.d -------- begin -------- avr-gcc (GCC) 3.4.6 Copyright (C) 2006 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. Compiling: test_i2cmaster.c avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test_i2cmaster.lst -std=gnu99 test_i2cmaster.c -o test_i2cmaster.o In file included from asuro.h:82, from test_i2cmaster.c:1: C:/WinAVR/avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." test_i2cmaster.c: In function `ThermalData': test_i2cmaster.c:17: warning: suggest parentheses around + or - inside shift test_i2cmaster.c:17: error: syntax error before ')' token test_i2cmaster.c:27: warning: suggest parentheses around + or - inside shift test_i2cmaster.c:27: error: syntax error before ')' token test_i2cmaster.c: In function `main': test_i2cmaster.c:71: error: syntax error before "else" test_i2cmaster.c: At top level: test_i2cmaster.c:76: error: syntax error before '}' token test_i2cmaster.c:79:2: warning: no newline at end of file make.exe: *** [test_i2cmaster.o] Error 1 > Process Exit Code: 2 > Time Taken: 00:02
Edit: OK habe es gefunden habe es so geschrieben data[0] = ADCL + (ADCH) <<;
muss haber data[0] = ADCL + (ADCH <<; so sein habe hinter der 8 ein ) das nicht dahin gehört
funktionierts denn?
nö die Status LED ist grün wenn sie keine Wärmequelle findet sollte er eigendlich aus sein
hast ihn mal vor den kühlschrank gehalten? oder gegen eine kalte glasscheibe? oder eben gegen irgend was anderes kaltes? mal am poti gedreht? quelltext genau gecheckt?
da ist kein Potie habe gerade angst bekommen nur ein Taster habe probiert geht aber nicht wie gesagt die Status LED wird grün müsste eigendlich aus sein
EDIT: da wird doch ein LM78L05Z oder gleichbares verlangt habe bei reihcelt disen aber nicht bekommen der hat mir einenn µA 78L05 als alternative angezeigt . Meint ihr du das es das richtige ist?
Ich glaube ich habe den fehler gefunden beim nach messen ist mir aufgefallen das ein Elko nichts anzeigt und noch etwas ist mir aufgefallen weiss ja nicht ob das normal ist aber meine Accus haben halbwegs frisch geladen 8,63Volt ich habe hier öfters was von 6 volt gehört das sind ja direkt 2,6 volt mehr ist das normal?
Ein vollgeladener akku sollte UNTER LAST etwa 1,2 volt bringen. 4 akkus = 4,8 Volt. 4 Batterien (diese bringen etwa 1,5 volt) haben 6V. Akkus und batterien die nicht unter last stehen (asuro aus, nix angeschlossen, nur der prozessor läuft oder ähnlich; halt kein wirklicher verbraucher wie zB die motoren) können eine deutlich höhere spannung haben.
elkos zeigen nichts an. elkos speichern strom. theoretisch sollte der widerstand gegen unendlich gehen, es fliesst kein strom durch.
hmm dann weiss ich auch nicht warum mein Asuro die Erweiterung nicht nimmtIch habe nach brücken geschaut aber es sind keine vorhanden alle sachen sind neu und haben beim nachmessen alle die richtigen werte verstehe wer will ich leider nicht. Habe immer irgendwo eine ... drin kann nicht mal was auf anhieb funktionieren
![]()
hm.. versuche es mal mit extrem kalten gegnständen. was passiert da? und prüfe den quelltext nochmal genau. wirklich alles korrekt?
oder hast du die erweiterungsplatine falschrum? die gedruckten leitungen müssen auf der UNTERSEITE sein.
Hi
Ich habe ihn ins gefrierschrank gehalten 4 Sterne bis zu -18 C und es passiert überhaupt nichts habe es mit einem Teelämpchen versucht das funktioniert auch nicht leider.
Quelltext habe ich locker 15 mal nach geschaut aber finden tu ich da auch nichts leider
Ich flashe die richtige datei und es ist diesmal auch wirklich die richtige datei wo ich es geschrieben habe (nicht wie beim LCD^^).Code:#include "asuro.h" #define THRESH1 20 #define THRESH2 80 #define THRESH3 200 void ThermalData(unsigned int *data) { ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[0] = ADCL + (ADCH << 8); ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[1] = ADCL + (ADCH << 8); } int main(void) { unsigned int tdata[2]; unsigned int speed; signed int diff,sum; Init(); MotorDir(FWD,FWD); while(1); { ThermalData(tdata); sum=tdata[0]+tdata[1]; if (sum>THRESH1) { StatusLED(GREEN); speed=140; if (sum>THRESH2) { StatusLED(YELLOW); speed=200; } if (sum>THRESH3) { StatusLED(RED); speed=255; } diff=((signed)tdata[0]-(signed)tdata[1])*32/sum; if (diff>4) { BackLED(ON,OFF); MotorSpeed(0,speed); } else if (diff<-4) { BackLED(OFF,ON); MotorSpeed(speed,0); } else { BackLED(OFF,OFF); MotorSpeed(speed,speed); } } else { StatusLED(OFF); BackLED(OFF,OFF); MotorSpeed(0,0); } } return 0; }
Die Platiene ist narren sicher Die aufdrücke müssen aber oben sein weil sonst die Sensoren nach unten schauen Die Leiterbahnen sind aber unten.
Ich wünschte es würde noch einer Die Erweiterung fertig haben und schreiben obs bei ihm funktioniert.
Lesezeichen