Code-Work by Marian
This commit is contained in:
parent
ab9cf92c1a
commit
29618453d2
24 changed files with 1266 additions and 1012 deletions
File diff suppressed because one or more lines are too long
|
@ -23,8 +23,9 @@ int main() {
|
|||
board.motor(1, speed);
|
||||
board.motor(2, speed);
|
||||
board.motor(3, speed);
|
||||
PORTB |= (1 << PB5) | (1 << PB7); // Setze PWM-Ports auf high
|
||||
PORTE |= (1 << PE3) | (1 << PE4);
|
||||
PORTB |= (1 << PB5) | (1 << PB6); // Setze PWM-Ports auf high
|
||||
PORTE |= (1 << PE3); // | (1 << PE4);
|
||||
PORTA |= (1 << PA4); // | (1 << PA5);
|
||||
//sleep(10);
|
||||
while(true) { sleep(1); }
|
||||
/*sleep(10);
|
||||
|
|
|
@ -34,7 +34,7 @@ HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0
|
|||
|
||||
|
||||
## Objects that must be built in order to link
|
||||
OBJECTS = Soccer.o board.o keylcd.o i2c.o global.o uart.o navigation.o sensor.o ballsensor.o maussensor.o
|
||||
OBJECTS = Soccer.o board.o keylcd.o i2c.o global.o uart.o navigation.o sensor.o ballsensor.o maussensor.o position.o abstand.o
|
||||
|
||||
## Objects explicitly added by the user
|
||||
LINKONLYOBJECTS =
|
||||
|
@ -73,6 +73,12 @@ ballsensor.o: ../sensor/ballsensor.c
|
|||
maussensor.o: ../hal/maussensor.c
|
||||
$(CC) $(INCLUDES) $(CFLAGS) -c $<
|
||||
|
||||
position.o: ../sensor/position.c
|
||||
$(CC) $(INCLUDES) $(CFLAGS) -c $<
|
||||
|
||||
abstand.o: ../sensor/abstand.c
|
||||
$(CC) $(INCLUDES) $(CFLAGS) -c $<
|
||||
|
||||
##Link
|
||||
$(TARGET): $(OBJECTS)
|
||||
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -8,14 +8,14 @@ Soccer.o: ../Soccer.c ../global.h c:/winavr/bin/../avr/include/stdlib.h \
|
|||
c:/winavr/bin/../avr/include/avr/portpins.h \
|
||||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/uart.h \
|
||||
../hal/keylcd.h ../hal/i2c.h ../hal/../global.h \
|
||||
../hal/../global.h ../hal/keylcd.h ../hal/i2c.h \
|
||||
c:/winavr/bin/../avr/include/compat/twi.h \
|
||||
c:/winavr/bin/../avr/include/util/twi.h \
|
||||
c:/winavr/bin/../avr/include/string.h ../navigation.h \
|
||||
c:/winavr/bin/../avr/include/math.h ../sensor/sensor.h \
|
||||
../sensor/../hal/board.h ../sensor/ballsensor.h \
|
||||
../sensor/../hal/board.h ../sensor/ballsensor.h ../sensor/position.h \
|
||||
../sensor/../hal/maussensor.h ../sensor/../hal/../global.h \
|
||||
../sensor/../global.h
|
||||
../sensor/abstand.h ../sensor/../global.h
|
||||
|
||||
../global.h:
|
||||
|
||||
|
@ -43,12 +43,12 @@ c:/winavr/bin/../avr/include/avr/interrupt.h:
|
|||
|
||||
../hal/uart.h:
|
||||
|
||||
../hal/../global.h:
|
||||
|
||||
../hal/keylcd.h:
|
||||
|
||||
../hal/i2c.h:
|
||||
|
||||
../hal/../global.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/compat/twi.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/util/twi.h:
|
||||
|
@ -65,8 +65,12 @@ c:/winavr/bin/../avr/include/math.h:
|
|||
|
||||
../sensor/ballsensor.h:
|
||||
|
||||
../sensor/position.h:
|
||||
|
||||
../sensor/../hal/maussensor.h:
|
||||
|
||||
../sensor/../hal/../global.h:
|
||||
|
||||
../sensor/abstand.h:
|
||||
|
||||
../sensor/../global.h:
|
||||
|
|
|
@ -9,7 +9,8 @@ ballsensor.o: ../sensor/ballsensor.c ../sensor/ballsensor.h \
|
|||
c:/winavr/bin/../avr/include/avr/interrupt.h \
|
||||
c:/winavr/bin/../avr/include/stdlib.h \
|
||||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \
|
||||
../sensor/../hal/uart.h
|
||||
../sensor/../hal/uart.h ../sensor/../hal/../global.h \
|
||||
../sensor/../hal/../hal/board.h
|
||||
|
||||
../sensor/ballsensor.h:
|
||||
|
||||
|
@ -36,3 +37,7 @@ c:/winavr/bin/../avr/include/stdlib.h:
|
|||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h:
|
||||
|
||||
../sensor/../hal/uart.h:
|
||||
|
||||
../sensor/../hal/../global.h:
|
||||
|
||||
../sensor/../hal/../hal/board.h:
|
||||
|
|
|
@ -8,7 +8,8 @@ board.o: ../hal/board.c ../hal/board.h \
|
|||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h \
|
||||
c:/winavr/bin/../avr/include/stdlib.h \
|
||||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h
|
||||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h \
|
||||
../hal/../global.h ../hal/../hal/board.h
|
||||
|
||||
../hal/board.h:
|
||||
|
||||
|
@ -33,3 +34,7 @@ c:/winavr/bin/../avr/include/stdlib.h:
|
|||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h:
|
||||
|
||||
../hal/uart.h:
|
||||
|
||||
../hal/../global.h:
|
||||
|
||||
../hal/../hal/board.h:
|
||||
|
|
|
@ -7,7 +7,8 @@ global.o: ../global.c ../global.h c:/winavr/bin/../avr/include/stdlib.h \
|
|||
c:/winavr/bin/../avr/include/avr/iom128.h \
|
||||
c:/winavr/bin/../avr/include/avr/portpins.h \
|
||||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/uart.h
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/uart.h \
|
||||
../hal/../global.h
|
||||
|
||||
../global.h:
|
||||
|
||||
|
@ -34,3 +35,5 @@ c:/winavr/bin/../avr/include/avr/version.h:
|
|||
c:/winavr/bin/../avr/include/avr/interrupt.h:
|
||||
|
||||
../hal/uart.h:
|
||||
|
||||
../hal/../global.h:
|
||||
|
|
|
@ -9,7 +9,7 @@ i2c.o: ../hal/i2c.c ../hal/i2c.h ../hal/../global.h \
|
|||
c:/winavr/bin/../avr/include/avr/portpins.h \
|
||||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h \
|
||||
c:/winavr/bin/../avr/include/compat/twi.h \
|
||||
../hal/../hal/../global.h c:/winavr/bin/../avr/include/compat/twi.h \
|
||||
c:/winavr/bin/../avr/include/util/twi.h
|
||||
|
||||
../hal/i2c.h:
|
||||
|
@ -40,6 +40,8 @@ c:/winavr/bin/../avr/include/avr/interrupt.h:
|
|||
|
||||
../hal/../hal/uart.h:
|
||||
|
||||
../hal/../hal/../global.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/compat/twi.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/util/twi.h:
|
||||
|
|
|
@ -9,7 +9,7 @@ keylcd.o: ../hal/keylcd.c ../hal/keylcd.h ../hal/i2c.h ../hal/../global.h \
|
|||
c:/winavr/bin/../avr/include/avr/portpins.h \
|
||||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h \
|
||||
c:/winavr/bin/../avr/include/compat/twi.h \
|
||||
../hal/../hal/../global.h c:/winavr/bin/../avr/include/compat/twi.h \
|
||||
c:/winavr/bin/../avr/include/util/twi.h \
|
||||
c:/winavr/bin/../avr/include/string.h
|
||||
|
||||
|
@ -43,6 +43,8 @@ c:/winavr/bin/../avr/include/avr/interrupt.h:
|
|||
|
||||
../hal/../hal/uart.h:
|
||||
|
||||
../hal/../hal/../global.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/compat/twi.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/util/twi.h:
|
||||
|
|
|
@ -8,7 +8,8 @@ maussensor.o: ../hal/maussensor.c ../hal/maussensor.h ../hal/../global.h \
|
|||
c:/winavr/bin/../avr/include/avr/iom128.h \
|
||||
c:/winavr/bin/../avr/include/avr/portpins.h \
|
||||
c:/winavr/bin/../avr/include/avr/version.h \
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h
|
||||
c:/winavr/bin/../avr/include/avr/interrupt.h ../hal/../hal/uart.h \
|
||||
../hal/../hal/../global.h
|
||||
|
||||
../hal/maussensor.h:
|
||||
|
||||
|
@ -37,3 +38,5 @@ c:/winavr/bin/../avr/include/avr/version.h:
|
|||
c:/winavr/bin/../avr/include/avr/interrupt.h:
|
||||
|
||||
../hal/../hal/uart.h:
|
||||
|
||||
../hal/../hal/../global.h:
|
||||
|
|
|
@ -10,9 +10,10 @@ navigation.o: ../navigation.c ../navigation.h \
|
|||
c:/winavr/bin/../avr/include/avr/interrupt.h \
|
||||
c:/winavr/bin/../avr/include/stdlib.h \
|
||||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h ../hal/uart.h \
|
||||
../sensor/sensor.h ../sensor/../hal/board.h ../sensor/ballsensor.h \
|
||||
../hal/../global.h ../hal/../hal/board.h ../sensor/sensor.h \
|
||||
../sensor/../hal/board.h ../sensor/ballsensor.h ../sensor/position.h \
|
||||
../sensor/../hal/maussensor.h ../sensor/../hal/../global.h \
|
||||
../sensor/../hal/../hal/board.h ../sensor/../global.h
|
||||
../sensor/abstand.h ../sensor/../global.h
|
||||
|
||||
../navigation.h:
|
||||
|
||||
|
@ -42,16 +43,22 @@ c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h:
|
|||
|
||||
../hal/uart.h:
|
||||
|
||||
../hal/../global.h:
|
||||
|
||||
../hal/../hal/board.h:
|
||||
|
||||
../sensor/sensor.h:
|
||||
|
||||
../sensor/../hal/board.h:
|
||||
|
||||
../sensor/ballsensor.h:
|
||||
|
||||
../sensor/position.h:
|
||||
|
||||
../sensor/../hal/maussensor.h:
|
||||
|
||||
../sensor/../hal/../global.h:
|
||||
|
||||
../sensor/../hal/../hal/board.h:
|
||||
../sensor/abstand.h:
|
||||
|
||||
../sensor/../global.h:
|
||||
|
|
|
@ -9,9 +9,11 @@ sensor.o: ../sensor/sensor.c ../sensor/sensor.h ../sensor/../hal/board.h \
|
|||
c:/winavr/bin/../avr/include/avr/interrupt.h \
|
||||
c:/winavr/bin/../avr/include/stdlib.h \
|
||||
c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h \
|
||||
../sensor/../hal/uart.h ../sensor/ballsensor.h \
|
||||
../sensor/../hal/maussensor.h ../sensor/../hal/../global.h \
|
||||
../sensor/../hal/../hal/board.h ../sensor/../global.h
|
||||
../sensor/../hal/uart.h ../sensor/../hal/../global.h \
|
||||
../sensor/../hal/../hal/board.h ../sensor/ballsensor.h \
|
||||
../sensor/position.h ../sensor/../hal/maussensor.h \
|
||||
c:/winavr/bin/../avr/include/math.h ../sensor/abstand.h \
|
||||
../sensor/../global.h
|
||||
|
||||
../sensor/sensor.h:
|
||||
|
||||
|
@ -39,12 +41,18 @@ c:\winavr\bin\../lib/gcc/avr/4.1.1/include/stddef.h:
|
|||
|
||||
../sensor/../hal/uart.h:
|
||||
|
||||
../sensor/ballsensor.h:
|
||||
|
||||
../sensor/../hal/maussensor.h:
|
||||
|
||||
../sensor/../hal/../global.h:
|
||||
|
||||
../sensor/../hal/../hal/board.h:
|
||||
|
||||
../sensor/ballsensor.h:
|
||||
|
||||
../sensor/position.h:
|
||||
|
||||
../sensor/../hal/maussensor.h:
|
||||
|
||||
c:/winavr/bin/../avr/include/math.h:
|
||||
|
||||
../sensor/abstand.h:
|
||||
|
||||
../sensor/../global.h:
|
||||
|
|
|
@ -22,6 +22,17 @@ inline void msleep(int msec)
|
|||
}
|
||||
};
|
||||
|
||||
inline void usleep(int usec)
|
||||
{
|
||||
usec *= 100;
|
||||
for (int s=0; s<usec; s++) {
|
||||
for (long int i=0; i<1405; i++) {
|
||||
asm volatile("nop");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void *operator new(size_t sz);
|
||||
void operator delete(void *p);
|
||||
|
||||
|
|
|
@ -92,6 +92,29 @@ int Board::GetADC(uint8_t channel) {
|
|||
return result;
|
||||
}
|
||||
|
||||
// Gibt den Wert vom Abstandsensor zurück
|
||||
int Board::GetAbstand(int i) {
|
||||
int result = -1;
|
||||
if((i < 0) || (i > 3)) return result; // Ungültige Nummern rausfiltern
|
||||
|
||||
// Sende zunächst einen Impuls aus
|
||||
ABSTAND_DDR |= (1 << i); // Konfiguriere Pin als Ausgang
|
||||
ABSTAND_PORT |= (1 << i); // Und setze ihn auf High
|
||||
usleep(10); // Warte jetzt 10us
|
||||
ABSTAND_PORT &= ~(1 << i); // Und setze den Pin wieder auf Low
|
||||
ABSTAND_DDR &= ~(1 << i); // Konfiguriere Pin als Eingang
|
||||
|
||||
// Jetzt warten wir auf die Antwort vom Sensor
|
||||
while(!(ABSTAND_PIN & i)) {} // während er low ist nichts machen
|
||||
while(ABSTAND_PIN & i) { // Und während er high ist
|
||||
result++; //schleifendurchläufe zähenlen (unsauber, ich weiß)
|
||||
asm volatile("nop"); // ein ganz bisschen warten
|
||||
}
|
||||
|
||||
// Die Zahl der Schleifendurchläufe geben wir dann zurück
|
||||
return result;
|
||||
}
|
||||
|
||||
void Board::beep(int freq) {
|
||||
beepFreq = freq;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <avr/interrupt.h>
|
||||
#include <stdlib.h>
|
||||
#include "uart.h"
|
||||
#include "../global.h"
|
||||
|
||||
//#define abs(a) ((a < 0)? -a : a)
|
||||
|
||||
|
@ -31,6 +32,11 @@
|
|||
#define DRIBBLER_A (1 << 2)
|
||||
#define DRIBBLER_B (1 << 3)
|
||||
|
||||
// Definiere Konstanten für Abstandsensoren
|
||||
#define ABSTAND_PORT PORTC
|
||||
#define ABSTAND_DDR DDRC
|
||||
#define ABSTAND_PIN PINC
|
||||
|
||||
#define UART_BAUD_RATE 9600
|
||||
|
||||
class Board
|
||||
|
@ -40,7 +46,9 @@ public:
|
|||
Board();
|
||||
~Board();
|
||||
|
||||
int GetADC(uint8_t channel);
|
||||
int GetADC(uint8_t channel);
|
||||
int GetAbstand(int i);
|
||||
|
||||
void beep(int freq);
|
||||
void ledOn();
|
||||
void ledOff();
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
#include "maussensor.h"
|
||||
|
||||
Maussensor::Maussensor(int index) {
|
||||
Maussensor::Maussensor() {
|
||||
}
|
||||
|
||||
|
||||
Maussensor::~Maussensor() {
|
||||
}
|
||||
|
||||
|
||||
// Initialisiert den Maussensor
|
||||
void Maussensor::init(int index) {
|
||||
// Setze die Pins entsprechend dem übergebenen Index
|
||||
if(index == MAUSSENSOR0) {
|
||||
sda_pin = MAUS0_SDA;
|
||||
|
@ -15,9 +24,6 @@ Maussensor::Maussensor(int index) {
|
|||
maus_sens_init();
|
||||
}
|
||||
|
||||
Maussensor::~Maussensor() {
|
||||
}
|
||||
|
||||
// Gibt die X-Koordinate Zurück
|
||||
uint8 Maussensor::GetX() {
|
||||
return maus_sens_read(MOUSE_DELTA_X_REG);
|
||||
|
|
|
@ -111,9 +111,11 @@ void maus_image_prepare(void);
|
|||
*/
|
||||
|
||||
public:
|
||||
Maussensor(int index);
|
||||
Maussensor();
|
||||
~Maussensor();
|
||||
|
||||
void init(int index);
|
||||
|
||||
uint8 GetX();
|
||||
uint8 GetY();
|
||||
uint8 GetSqual();
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
|
||||
// Initialisiert die Klasse
|
||||
Navigation::Navigation() {
|
||||
// Am Anfang stehen wir an der Stelle
|
||||
richtung = 0;
|
||||
ausrichtung = 0;
|
||||
geschwindigkeit = 0;
|
||||
Aktualisieren();
|
||||
Aktualisieren(); // und änderungen anwenden
|
||||
}
|
||||
Navigation::~Navigation() {
|
||||
}
|
||||
|
@ -27,11 +28,11 @@ void Navigation::SetzeGeschwindigkeit(int nGeschwindigkeit) {
|
|||
// Aktualieren ohne Parameter
|
||||
void Navigation::Aktualisieren() {
|
||||
// Richtung in x und y-Kompontente zerlegen
|
||||
int y = (int)cos(richtung); // richtung ist winkel
|
||||
int x = (int)sin(richtung);
|
||||
float y = cos(richtung); // richtung ist winkel
|
||||
float x = sin(richtung);
|
||||
|
||||
// Abweichung der Ausrichtung ermitteln(als winkel)
|
||||
int w = sensor.getAusrichtung() - ausrichtung;
|
||||
int w = sensor.GetAusrichtung() - ausrichtung;
|
||||
|
||||
// Stärke der einzelnen Motoren berechnen
|
||||
float v0 = x;
|
||||
|
|
|
@ -10,12 +10,19 @@ Ballsensor::Ballsensor() {
|
|||
winkel[5] = 260;
|
||||
winkel[6] = 300;
|
||||
winkel[7] = 330;
|
||||
|
||||
// Der Winkel ist erstmal 0
|
||||
ballwinkel = 0;
|
||||
}
|
||||
|
||||
Ballsensor::~Ballsensor() {
|
||||
}
|
||||
|
||||
int Ballsensor::getBallwinkel() {
|
||||
int Ballsensor::GetBallwinkel() {
|
||||
return ballwinkel;
|
||||
}
|
||||
|
||||
void Ballsensor::Aktualisieren() {
|
||||
// Erstelle ein Array für die Sensorwerte
|
||||
int sensor[NUM_BALLSENSOR];
|
||||
int result = 0; // und einer Variable fürs Ergebnis
|
||||
|
@ -30,6 +37,6 @@ int Ballsensor::getBallwinkel() {
|
|||
if(sensor[i] < current) result = i; // Ergebnis ist erstmal index
|
||||
}
|
||||
|
||||
// Gebe den Winkel zum index result zurück
|
||||
return winkel[result];
|
||||
// Setze den Winkel zum index result
|
||||
ballwinkel = winkel[result];
|
||||
}
|
||||
|
|
|
@ -12,11 +12,13 @@ class Ballsensor
|
|||
{
|
||||
private:
|
||||
int winkel[NUM_BALLSENSOR];
|
||||
int ballwinkel;
|
||||
public:
|
||||
Ballsensor();
|
||||
~Ballsensor();
|
||||
|
||||
int getBallwinkel(); // Gibt den aktuellen Winkel vom Ball zurück
|
||||
int GetBallwinkel(); // Gibt den aktuellen Winkel vom Ball zurück
|
||||
void Aktualisieren(); // Aktualisiert die Variable
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,10 +6,14 @@ Sensor::Sensor() :ballsensor() {
|
|||
Sensor::~Sensor() {
|
||||
}
|
||||
|
||||
// Aktualisiert die ganzen Sachen ;)
|
||||
void Sensor::Aktualisieren() {
|
||||
|
||||
position.Aktualisieren(); // Aktualisiere die Position
|
||||
ballsensor.Aktualisieren(); // Aktualisiere den Ballwinkel
|
||||
abstand.Aktualisieren(); // Aktualsiere die abstandsdaten
|
||||
}
|
||||
|
||||
int Sensor::getAusrichtung() {
|
||||
return 0;
|
||||
// Gebe die aktuelle Ausrichtung zurück
|
||||
int Sensor::GetAusrichtung() {
|
||||
return position.GetAusrichtung();
|
||||
}
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
|
||||
#include "../hal/board.h"
|
||||
#include "ballsensor.h"
|
||||
#include "../hal/maussensor.h"
|
||||
#include "position.h"
|
||||
#include "abstand.h"
|
||||
#include "../global.h"
|
||||
|
||||
extern Board board;
|
||||
|
@ -12,13 +13,15 @@ class Sensor
|
|||
{
|
||||
private:
|
||||
Ballsensor ballsensor;
|
||||
Position position;
|
||||
Abstand abstand;
|
||||
public:
|
||||
Sensor();
|
||||
~Sensor();
|
||||
|
||||
void Aktualisieren();
|
||||
|
||||
int getAusrichtung(); // Gibt die aktuelle Ausrichtung des Roboters zurück
|
||||
int GetAusrichtung(); // Gibt die aktuelle Ausrichtung des Roboters zurück
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Reference in a new issue