PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann mir den Code jm. erklären??



DanyD
17.07.2010, 10:43
Hallo!
Im Tut der Nibobee(http://download.nicai-systems.com/nibo/Tutorial_NIBObee_20091123.pdf)
gibt es das Programm PINGPONG das mich als Einsteiger sehr überfordert!
Kann mir den Code jm. erklären??

DANKEE!!!!!!!!!!!!



#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/sens.h>
#include <nibobee/delay.h>

enum {
STATE_IDLE = 0,
STATE_PULL0 = 1,
STATE_PULL1 = 2,
STATE_KICK = 3,
STATE_PUSH = 4
};
uint8_t calculate_state(uint8_t state, int8_t sensor) {
switch (state) {
case STATE_PUSH:
case STATE_IDLE:
if (sensor==-1) {
return STATE_PULL0;
} else if (sensor==+1) {
return STATE_PUSH;
}
return STATE_IDLE;
case STATE_PULL0:
if (sensor==-1) {
return STATE_PULL1;
} else if (sensor==+1) {
return STATE_PUSH;
}
return STATE_IDLE;
case STATE_PULL1:
if (sensor==-1) {
return STATE_PULL1;
}
return STATE_KICK;
case STATE_KICK:
return STATE_IDLE;

}
return state;
}
int main() {
led_init();
sens_init();
uint8_t ball_pos = 3;
int8_t direction = -1;
uint8_t state_l = STATE_IDLE;
uint8_t state_r = STATE_IDLE;
while(1==1) {
delay(100);
state_l = calculate_state(state_l, sens_getLeft());
if( ((state_l==STATE_PUSH) && (ball_pos==1)) ||
((state_l==STATE_KICK) && (ball_pos==0)) ) {
direction = +1;
}
state_r = calculate_state(state_r, sens_getRight());
if( ((state_r==STATE_PUSH) && (ball_pos==2)) ||
((state_r==STATE_KICK) && (ball_pos==3)) ) {
direction = -1;
}
if(direction==+1) {
if(ball_pos<3) {
ball_pos++;
} else {
direction=0;
}
}
if(direction==-1) {
if(ball_pos>0) {
ball_pos--;
} else {
direction=0;
}
}
led_set(LED_L_YE, ball_pos==0);
led_set(LED_L_RD, ball_pos==1);
led_set(LED_R_RD, ball_pos==2);
led_set(LED_R_YE, ball_pos==3);
}
return 0;
}


(Code auch auf der Seite 27 des Nibobee tutorials!(http://download.nicai-systems.com/nibo/Tutorial_NIBObee_20091123.pdf)


Ich hab den Thread-Titel geändert und dir zwei Code-Tags aus meiner privaten Schatulle spendiert. (PicNick, Mod)

BurningWave
17.07.2010, 12:00
Ich glaube niemand hat Lust und Zeit dir das Programm zu erklären, wie wäre es, wenn du erst mal vorne anfängst und dann, wenn du so weit bist, versuchst, das Programm selbst zu verstehen?
Zu einzelnen Punkten im Programm könntest du dann Fragen stellen.

DanyD
17.07.2010, 12:31
schau dir mal das tut an:D ich habe das von vorne gemacht und plötzlich kommt da son monster programm wie soll man das verstehen:D

error41
17.07.2010, 13:43
Hi!
Also ich habe mal einen Blick in das erste PDF geworfen.
Ab Abschnitt 7 ("Ein erstes Testprogramm") erhält man Programmbeispiele mit anschliessender, ausführlicher Erklärung. Darin werden langfristig alle Befehle behandelt wie du sie in deinem Quellcode wiederfindest.
Wenn du alle Beispiele durch hast dürftest du deinen geposteten Quellcode ganz sicher verstehen.

Gruß,
und noch viel Erfolg!

PS: Bitte lies dir die Forenregeln durch. Du kannst mit deutlich mehr Reaktionen rechnen wenn du dich danach richtest.
z.B. sind Titel wie "HILFE!" keine ordentlichen Titel und viele Leute öffnen diese Themen erst garnicht.
Quellcode wird in eine Box platziert usw...

DanyD
20.07.2010, 12:42
oh tut mir leid..

könntest du dir mal bitte alles überfliegen bis zum Ping Pong Programm, dann wirst du sehen was ich meine..