PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche programm für asuro



The_Thing
14.06.2009, 20:09
Hallo zusammen

Ich habe erst seit kurzem einen Asuro, für ein Schulprojekt.
Nun brauche ich dringend ein programm wo er zuerst 10m nach vorne fährt, um 180° wendet und dann wieder zurück fährt.

Ich wäre sehr froh wenn mir jemand so ein Programm schreiben könnte. Da ich keine zeit habe um das programmieren zu lernen.

pinsel120866
15.06.2009, 06:14
Hallo und willkommen im Forum.

Dein Wunsch nach einem bestellten Programm wird hier vermutlich keiner nachkommen. Ich empfehle dir einen Blick in das Asurohandbuch zu werfen, nach 15 min hast du sicher das Programm soweit fertig, dass du es hier posten kannst. Dann ist sicher jemand bereit dir weiter zu helfen.

Nur Mut es ist gar nicht so schwer wie du denkst!

Andree-HB
15.06.2009, 08:02
Ich habe erst seit kurzem einen Asuro, für ein Schulprojekt.

Ich wäre sehr froh wenn mir jemand so ein Programm schreiben könnte. Da ich keine zeit habe um das programmieren zu lernen.


...ich hoffe, das ist nicht repräsentativ !

The_Thing
17.06.2009, 12:02
ja ich habe mal einen versuch gemacht.


#include "asuro.h"

int main(void)
{
Init();
EncoderInit();

int i;
for(i=0;i<10;++i)
{
Go( 1000,250); //1 Meter
Go(-1000,250);
}

while(1);
return 0;
}

The_Thing
23.06.2009, 19:50
aber beim erstellen des make files erhalte ich diese meldung:


C:\Users\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
-------- 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
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
test.o(.text+0xa): In function `main':
C:\Users\ASURO_src\FirstTry/test.c:6: undefined reference to `EncoderInit'
test.o(.text+0x1c):C:\Users\ASURO_src\FirstTry/test.c:11: undefined reference to `GoTurn'
test.o(.text+0x2a):C:\Users\ASURO_src\FirstTry/test.c:12: undefined reference to `GoTurn'
make: *** [test.elf] Error 1

> Process Exit Code: 2

kann mir jemand sagen wo der fehler liegt?

M1C
24.06.2009, 13:02
Das heisst ganzeinfach das es die funktionen "GoTurn" und "EncoderInt" nicht findet.
Meines wissens nach sind das welche aus der erweiterten Lib..
Is die richtig eingebunden?

Kannst du bitte den neuen Code auch noch posten? Danke!

mfG

smoky007de
25.06.2009, 18:09
kann mir jemand dabei helfen das standard testprogramm des Ultraschallsensors vom asuro so zu erweitern, dass der asuro nicht nur nach links abdreht wenn er ein hinderniss erkennt, sondern auch rechts abbiegt.

also mal links abdreht und mal rechts.

hier der Programmcode


#include "asuro.h"

void LocalInit(void)
{
// Change Oscillator-frequency of Timer 2
// to 40kHz, no toggling of IO-pin:
TCCR2 = (1 << WGM21) | (1 << CS20);
OCR2 = 0x64; // 40kHz @8MHz crystal
ADCSRA = 0x00; // ADC off
// Analog comparator:
ACSR = 0x02; // Generate interrupt on falling edge
ADMUX = 0x03; // Multiplexer for comparator to
// ADC pin 3
SFIOR |= (1 << ACME); // Enable muliplexing of comparator
DDRD &= ~(1 << 6); // Port D Pin 6 is input!
}


void Ping(unsigned char length)
{
count72kHz = 0;
TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
// Toggling of IO-Pin on

// generate the Chirp
while(count72kHz < length) {
OCR2 = 0x64 + length / 2 - count72kHz;
}

TCCR2 = (1 << WGM21) | (1 << CS20); // Toggling of IO-Pin off
OCR2 = 0x64; // set frequency to 40kHz
}


int main(void)
{
int pos, i;
int posmarker;
Init();
LocalInit();
while(TRUE) {
posmarker = 0;
Ping(20);
for(pos = 0; pos < 100; pos++) {
Sleep(10);
if((ACSR & (1 << ACI)) != 0) {
if(posmarker == 0) { posmarker = pos; }
}
ACSR |= (1 << ACI);
}
if(posmarker > 10) {
StatusLED(GREEN);
MotorDir(FWD, FWD);
MotorSpeed(200, 200);
}
else {
StatusLED(RED);
MotorDir(RWD, FWD);
MotorSpeed(200, 0);
for(i = 0; i<10; i++) { Sleep(200); }
}
}

return 0;
}