Code-Work :)
This commit is contained in:
parent
7393d1d12c
commit
8d7053ca84
4 changed files with 130 additions and 0 deletions
24
source/AVR_Studio/Soccer/sensor/abstand.c
Executable file
24
source/AVR_Studio/Soccer/sensor/abstand.c
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#include "abstand.h"
|
||||||
|
|
||||||
|
Abstand::Abstand() {
|
||||||
|
abstand[0] = ABSTAND_FEHLER;
|
||||||
|
abstand[1] = ABSTAND_FEHLER;
|
||||||
|
abstand[2] = ABSTAND_FEHLER;
|
||||||
|
abstand[3] = ABSTAND_FEHLER;
|
||||||
|
}
|
||||||
|
|
||||||
|
Abstand::~Abstand() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void Abstand::Aktualisieren() {
|
||||||
|
// Gehe alle 4 Sensoren durch
|
||||||
|
for(int i=0;i<4;i++) {
|
||||||
|
abstand[i] = board.GetAbstand(i); // Und übernehme die Werte direkt vom Sensor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Abstand::GetAbstand(int i) {
|
||||||
|
if((i < 0) || (i > 3)) return ABSTAND_FEHLER; //angebote rausfiltern ;)
|
||||||
|
|
||||||
|
return abstand[i];
|
||||||
|
}
|
26
source/AVR_Studio/Soccer/sensor/abstand.h
Executable file
26
source/AVR_Studio/Soccer/sensor/abstand.h
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef _ABSTAND_H_
|
||||||
|
#define _ABSTAND_H_
|
||||||
|
|
||||||
|
#include "../hal/board.h"
|
||||||
|
|
||||||
|
extern Board board;
|
||||||
|
|
||||||
|
#define ABSTAND0 0
|
||||||
|
#define ABSTAND1 1
|
||||||
|
#define ABSTAND2 2
|
||||||
|
#define ABSTAND3 3
|
||||||
|
|
||||||
|
#define ABSTAND_FEHLER -1
|
||||||
|
|
||||||
|
class Abstand {
|
||||||
|
private:
|
||||||
|
int abstand[4];
|
||||||
|
public:
|
||||||
|
Abstand();
|
||||||
|
~Abstand();
|
||||||
|
|
||||||
|
void Aktualisieren();
|
||||||
|
int GetAbstand(int i);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
46
source/AVR_Studio/Soccer/sensor/position.c
Executable file
46
source/AVR_Studio/Soccer/sensor/position.c
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#include "position.h"
|
||||||
|
#include "../global.h"
|
||||||
|
|
||||||
|
Position::Position() {
|
||||||
|
// inititalisiere die Maussensoren
|
||||||
|
maussensor0.init(MAUSSENSOR0);
|
||||||
|
maussensor1.init(MAUSSENSOR1);
|
||||||
|
|
||||||
|
// Wir starten in der Mitte, nach vorne gerichtet
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
ausrichtung = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Position::~Position() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aktualisiert die internen Variablen x,y und ausrichtung
|
||||||
|
void Position::Aktualisieren() {
|
||||||
|
// Lese die Maussensoren ein
|
||||||
|
uint8 maus0_x = maussensor0.GetX();
|
||||||
|
uint8 maus0_y = maussensor0.GetY();
|
||||||
|
uint8 maus1_x = maussensor1.GetX();
|
||||||
|
uint8 maus1_y = maussensor1.GetY();
|
||||||
|
|
||||||
|
// Und berechne die neuen Werte
|
||||||
|
// ACHTUNG!!!!! Die Funktionen sind noch ungetestet und werden fehler enthalten
|
||||||
|
x += (maus0_x*sin(ausrichtung+45)+maus1_x*cos(ausrichtung+45))/2;
|
||||||
|
y += (maus0_y*sin(ausrichtung+45)+maus1_y*cos(ausrichtung+45))/2;
|
||||||
|
ausrichtung += ((maus0_y + maus1_y)/2)*(360/MAUS_FULL_TURN);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gibt die X-Koordinate zurück
|
||||||
|
int Position::GetX() {
|
||||||
|
return (int)x;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gibt die Y-Koordinate zurück
|
||||||
|
int Position::GetY() {
|
||||||
|
return (int)y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gibt die Ausrichtung zurück
|
||||||
|
int Position::GetAusrichtung() {
|
||||||
|
return ausrichtung;
|
||||||
|
}
|
34
source/AVR_Studio/Soccer/sensor/position.h
Executable file
34
source/AVR_Studio/Soccer/sensor/position.h
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#ifndef _POSITION_H_
|
||||||
|
#define _POSITION_H_
|
||||||
|
|
||||||
|
#include "../hal/maussensor.h"
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
// Anzahl der Ticks, die für eine ganze Umdrehung notwendig sind
|
||||||
|
#define MAUS_FULL_TURN 160000
|
||||||
|
|
||||||
|
class Position {
|
||||||
|
private:
|
||||||
|
// Maussensorenklassen
|
||||||
|
Maussensor maussensor0;
|
||||||
|
Maussensor maussensor1;
|
||||||
|
|
||||||
|
// X und Y-Koordinate
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
// Und die Ausrichtung als Winkel
|
||||||
|
int ausrichtung;
|
||||||
|
public:
|
||||||
|
Position();
|
||||||
|
~Position();
|
||||||
|
|
||||||
|
// Aktualisiert die Position
|
||||||
|
void Aktualisieren();
|
||||||
|
|
||||||
|
// Gebe die internen Werte zurück
|
||||||
|
int GetX();
|
||||||
|
int GetY();
|
||||||
|
int GetAusrichtung();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Reference in a new issue