hallo pinsel120866
du musst define speed änderen am besten auf ca. 150.
mfg liggi
Hallo Miteinander,
nachdem mein neuer ASUMO alle Tests bestanden hat habe ich gleich voller Freude die LineDemo (sh. Anhang) geflasht und meine erste Entäuschung erlebt. Der kleine Kerl ist viiiiiiel zu schnell unterwegs um seinen Weg auf der extra ausgedruckten Linientestarena zu finden. Da ich (noch) kein Programmierer bin wäre ich froh wenn mir vorab ein Profi verraten könnte, wie ich bei dem Programm die Geschwindigkeit einstellen kann.
Danke mal im voraus und bitte Nachsicht üben *schäm*
hallo pinsel120866
du musst define speed änderen am besten auf ca. 150.
mfg liggi
Lieber am Asuro rumschrauben als alles andere.
Meine Homepage
Hallo Liggi,
danke für die Antwort. Ich habe den Code jetzt folgendermaßen abgeändert:
War anscheinend nichts, der ASURO fährt jetzt schnurgeradeaus - hab ich's falsch gemacht?Code:#include "asuro.h" #define SPEED 150 int main(void) { LineDemo(); return 0; } int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; void LineLeft (void) { speedLeft += 1; if (speedLeft > 150) speedLeft = 151; } void LineRight (void) { speedRight += 1; if (speedRight > 150) speedRight = 151; } void LineDemo(void) { int i; unsigned char j; Init(); FrontLED(ON); for (j = 0; j < 255; j++) LineData(lineData); LineData(lineData); ADOffset = lineData[0] - lineData[1]; speedLeft = speedRight = SPEED; for(;;) { LineData(lineData); i = (lineData[0] - lineData[1]) - ADOffset; if ( i > 4) { StatusLED(GREEN); LineLeft(); } else if ( i < -4) { StatusLED(RED); LineRight(); } else { StatusLED(OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); } }
Ich wünsche allen Forums-Usern ein gutes neues Jahr!
Ich wäre sehr dankbar wenn sich einer der geschätzten Programmierprofis den o.a. Code ansehen und mir einen Tip geben könnte.
Herzlichen Gruß
das ganze wird nur einmal durch laufen du musst das Programm ungefähr so ändern:
Code:#include "asuro.h" #define SPEED 150 int main(void) { LineDemo(); return 0; } int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; void LineLeft (void) { speedLeft += 1; if (speedLeft > 150) speedLeft = 151; } void LineRight (void) { speedRight += 1; if (speedRight > 150) speedRight = 151; } void LineDemo(void) { int i; unsigned char j; Init(); while(1) //Endlosschleife { FrontLED(ON); for (j = 0; j < 255; j++) LineData(lineData); LineData(lineData); ADOffset = lineData[0] - lineData[1]; speedLeft = speedRight = SPEED; for(;;) { LineData(lineData); i = (lineData[0] - lineData[1]) - ADOffset; if ( i > 4) { StatusLED(GREEN); LineLeft(); } else if ( i < -4) { StatusLED(RED); LineRight(); } else { StatusLED(OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); } } }
Hallo Pinsel
Versuche es mal so:
for(;;) ist eine Endlosschleife. Beim Start sollten beide Sensoren etwa den selben Untergrund sehen (beide hell oder beide dunkel) damit der Offset (Empfindlichkeitsunterschied) halbwegs richtig ermittelt wird.Code:#include "asuro.h" #define SPEED 150 int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; void LineLeft (void) { if (speedLeft < SPEED) speedLeft += 1; else if (speedRight > 0) speedRight -= 1; } void LineRight (void) { if (speedRight < SPEED) speedRight += 1; else if (speedLeft > 0) speedLeft -= 1; } void LineDemo(void) { int i; unsigned char j; Init(); FrontLED(ON); for (j = 0; j < 255; j++) LineData(lineData); LineData(lineData); ADOffset = lineData[0] - lineData[1]; speedLeft = speedRight = SPEED; for(;;) { LineData(lineData); i = (lineData[0] - lineData[1]) - ADOffset; if ( i > 4) { StatusLED(GREEN); LineLeft(); } else if ( i < -4) { StatusLED(RED); LineRight(); } else { StatusLED(OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); } } int main(void) { LineDemo(); return 0; }
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!
Danke für die Tipps.
Wenn ich den Code von Radbruch kompiliere, kommt folgendes heraus:
Ich verwenden noch die Orginal-Libery von der CD - muss ich upgraden?Code:C:\Dokumente und Einstellungen\Administrator.EMSNB008\Desktop\ASURO\ASURO_src\FirstTry>make 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 test.c:14:78: ../inc/ir-asuro.h: No such file or directory test.c:15:30: ../inc/ir-asuro.c: No such file or directory -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3.1 Copyright (C) 2003 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. 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 test.c:14:78: ../inc/ir-asuro.h: No such file or directory test.c:15:30: ../inc/ir-asuro.c: No such file or directory test.c: In function `main': test.c:21: warning: implicit declaration of function `Init' test.c:22: warning: implicit declaration of function `StatusLED' test.c:22: error: `RED' undeclared (first use in this function) test.c:22: error: (Each undeclared identifier is reported only once test.c:22: error: for each function it appears in.) test.c:22: warning: implicit declaration of function `Msleep' test.c:22: error: `GREEN' undeclared (first use in this function) test.c:23: warning: implicit declaration of function `FrontLED' test.c:23: error: `ON' undeclared (first use in this function) test.c:24: warning: implicit declaration of function `MotorDir' test.c:24: error: `FWD' undeclared (first use in this function) test.c:27: error: `DDRD' undeclared (first use in this function) test.c:27: error: `DDD1' undeclared (first use in this function) test.c:28: error: `PORTD' undeclared (first use in this function) test.c:28: error: `PD1' undeclared (first use in this function) test.c:29: error: `OCR2' undeclared (first use in this function) test.c:32: error: `PIND' undeclared (first use in this function) test.c:32: error: `PD0' undeclared (first use in this function) test.c:34: warning: implicit declaration of function `LineData' test.c:35: warning: implicit declaration of function `MotorSpeed' test.c:37: warning: implicit declaration of function `BackLED' test.c:37: error: `OFF' undeclared (first use in this function) test.c:41: error: `RWD' undeclared (first use in this function) test.c:46: error: `BREAK' undeclared (first use in this function) test.c:48: error: `YELLOW' undeclared (first use in this function) test.c:50: warning: implicit declaration of function `Sleep' test.c:60:2: warning: no newline at end of file make: *** [test.o] Error 1 > Process Exit Code: 2
Hallo Pinsel,
schön dass dein asuro wieder läuft.
Das Programm funktioniert auch mit der orginalen CD-Lib, allerdings verwende ich verschiedene Versionen davon die ich (Anfängerfehler meinerseits) in einem extra Verzeichniss verwalte.
Meine Version heist ir-asuro.c und liegt bei mir in ../inc/. ich habe das oben im Code schon geändert, aber du hast wohl schon vor der Änderung das Programm kopiert. Lösung: Nochmal kopieren.
Übrigends schwingt sich mein asuro mit diesem Programm gelegentlich recht heftig auf. Je geringer der Wert für Speed ist, umso schöner folgt er der Linie.
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!
Hallo, ihr Beiden,
jetzt dachte ich, wär schön, so (m)ein erstes asuro-Programm durchs Wohnzimmer zu blitzen, aber - nix da:
1) Der code von mic von oben,
2) asuro.h von der CD
3) Knopf [F7] von AVRStudio.
Dabei kommt raus:Wenn ich nun zusätzlich die <avr/interrupt.h> benutze, dann gibts noch mehr Ärger .Build started 5.1.2008 at 19:36:53
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT line-demo.o -MF dep/line-demo.o.d -c ../line-demo.c
In file included from ../asuro.h:34,
from ../line-demo.c:7:
c:/programme/winavr-20070525/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
../line-demo.c: In function 'main':
../line-demo.c:13: warning: implicit declaration of function 'LineDemo'
../line-demo.c: At top level:
../line-demo.c:34: warning: conflicting types for 'LineDemo'
../line-demo.c:13: warning: previous implicit declaration of 'LineDemo' was here
avr-gcc.exe -mmcu=atmega8 -Wl,-Map=line-demo.map line-demo.o -o line-demo.elf
line-demo.o: In function `LineDemo':
../line-demo.c:38: undefined reference to `Init'
../line-demo.c:41: undefined reference to `FrontLED'
../line-demo.c:42: undefined reference to `LineData'
../line-demo.c:43: undefined reference to `LineData'
../line-demo.c:47: undefined reference to `LineData'
../line-demo.c:50: undefined reference to `StatusLED'
../line-demo.c:54: undefined reference to `StatusLED'
../line-demo.c:58: undefined reference to `StatusLED'
../line-demo.c:61: undefined reference to `MotorSpeed'
make: *** [line-demo.elf] Error 1
Build failed with 9 errors and 4 warnings...
Was blick ich denn da schon wieder nicht ?
Ciao sagt der JoeamBerg
Hast Du asuro.c und asuro.h ins Projekt eingebunden? Die Files müssen auf der linken Seite im sichtbar sein.
Gruß,
robo
Lesezeichen