14.11.2012 Aufrufe

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />

Abbildung 14.41: Schema eines Ringpuffers<br />

Dateien erstellt. Bei dem Aufruf der Methoden fillringPufferLikeFIFO_A() und<br />

fillringPufferLikeFIFO_B() wird in ihren Rümpfen geprüft, ob der eingegebene<br />

Sensorenwert größer als 3 ist. Wenn dies der Fall ist, wird für die entsprechende Sensormessung<br />

auf das Feldelement dieses Sensors ein Wert geholt und im Ringpuffer geschrieben, der<br />

einer bestimmter Plattformhöhe entsprach; im anderen Fall das Gegenteil.<br />

void CSiosCom::fillringPufferLikeFIFO_A()<br />

{<br />

int sens=input_sensor(PORTA);<br />

if(sens>3){<br />

valx = sens;<br />

ringPufferX[posx] = arrays1[valx];<br />

posx = (posx+1) % MAX_RING_PUFFER;<br />

}<br />

}<br />

void CSiosCom::fillringPufferLikeFIFO_B()<br />

{<br />

}<br />

int sens=input_sensor(PORTB);<br />

if(sens>3){<br />

valy=sens;<br />

ringPufferY[posy] = arrays2[valy];<br />

posy = (posy+1) % MAX_RING_PUFFER;<br />

}<br />

(e) Berechnung des Winkels<br />

Dies ist mit den Methoden averageValueRingpufferA(), averageValueRingpufferB()<br />

und readDegree() mit dem Übergabeparameter averageValue realisiert. Jede der<br />

Methoden averageValueRingpufferA() und averageValueRingpufferB() holt<br />

immer den aktuellen Ringpufferzustand, addiert alle seine Inhalte zusammen, teilt sie durch<br />

die Länge des Ringpuffers und gibt das Ergebnis als Rückgabewert weiter an die Methode<br />

readDegree(). Damit berechnet readDegree() den Neigungswinkel der Plattform.<br />

Darauf wurde die cmath Funktion atan() des Arcus − T angens verwendet, die den<br />

tatsächlichen Winkel wie folgt berechnete:<br />

winkel = (atan((hoehe − (double)averageV alue)/abstand) ∗ 180.0)/MP I;<br />

wobei<br />

abstand = gesamte Plattformhöhe;<br />

6. Januar 2005 Seite 185

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!