Skip to content
Snippets Groups Projects
Commit e9977d51 authored by remi.greub's avatar remi.greub
Browse files

code d'envoi des données de l'accelerometre fonctionnel (testé sur code du...

code d'envoi des données de l'accelerometre fonctionnel (testé sur code du prof) affichage80% fonctionnel, 1 warning normal
parent 4a04319d
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,6 @@
#define GOAL_H_WALL (LCD_MAX_WIDTH-(2*BALL_RADIUS+1+WALL_WIDTH))
#define GOAL_V_WALL (LCD_MAX_HEIGHT-(2*BALL_RADIUS+1+WALL_WIDTH)-1)
static coord_fx_t labyrinth_points[]={
{80,280},{40,280},{40,190},{END_OF_LINE,LCD_WHITE},
{40,100},{150,100},{150,160},{70,160},{END_OF_LINE,LCD_WHITE},
......@@ -46,11 +45,11 @@ static coord_fx_t labyrinth_points[]={
{GOAL_H_WALL-4*BALL_RADIUS-WALL_WIDTH-1,LCD_MAX_HEIGHT-WALL_WIDTH},{GOAL_H_WALL-4*BALL_RADIUS-WALL_WIDTH-1,GOAL_V_WALL},{END_OF_WALLS,END_OF_WALLS}
};
master_tx_t *mstr_now;
master_tx_t *mstr_prev;
master_tx_t mstr_now[NUMBER_OF_BALLS];
master_tx_t mstr_prev[NUMBER_OF_BALLS];
bool flag = false;
/* Description: Callback of ethernet module. This function is called when a message is received.
* Each ball of the master send its own coordinates that are saved here.
* Parameters: data: pointer on data received
......@@ -59,44 +58,67 @@ bool flag = false;
void master_info_rx(void *data, int len)
{
if(len == sizeof(master_tx_t)){
if (mstr_now != NULL){
mstr_prev = mstr_now;
}
mstr_now = (master_tx_t*)data;
/*if(mstr_prev == NULL){
mstr_now = mstr_prev;
}*/
master_tx_t *tmpMstr;
tmpMstr = (master_tx_t*)data;
mstr_prev[tmpMstr->ball_id] = mstr_now[tmpMstr->ball_id];
mstr_now[tmpMstr->ball_id] = *tmpMstr;
flag = true;
}
}
void Start_timer0(){
LPC_TIM0->TCR = 1;
}
void delay(int del){
int start = LPC_TIM0->TC;
for(int i = 0; i<del; i++){
while((LPC_TIM0->TC - start) < 100000); //passer a 1ms avec 100MHz
}
}
master_tx_t double_buf_rx;
accel_t double_buf_tx;
int main(void)
{
init_lcd();
Start_timer0();
if(accel_init() != 0)
{
printf("Accelerometer initialisation failed!\n");
return 1;
}
master_tx_t double_buf_rx;
master_tx_t double_buf_tx;
int len_rx = sizeof(master_tx_t)*2;
int len_tx = 1;
int len_tx = sizeof(accel_t)*2;
int rec=sizeof(master_tx_t);
accel_t *j;
//unsigned char *tmpmstr;
ethernet_init(NULL, 0, &double_buf_rx, len_rx, master_info_rx);
j = (accel_t*)ethernet_init((unsigned char*)&double_buf_tx, len_tx, (unsigned char*)&double_buf_rx, len_rx, master_info_rx);
draw_labyrinth(labyrinth_points);
//accel_t ball_acc;
while(1)
{
delay(20);
if(accel_read(&double_buf_tx) == ACC_NOERROR){
j = &double_buf_tx;
j = (accel_t*)send_eth(sizeof(accel_t), true);
send_eth(sizeof(accel_t), true);
}
//tmpmstr = rec_eth(&rec);
rec_eth(&rec);
if(flag){
lcd_filled_circle(mstr_prev->ball_coord.x, mstr_prev->ball_coord.y, mstr_prev->radius, LCD_BLACK);
lcd_filled_circle(mstr_now->ball_coord.x, mstr_now->ball_coord.y, mstr_now->radius, mstr_now->color);
//lcd_filled_circle(mstr_prev[tmpmstr->ball_id].ball_coord.x, mstr_prev[tmpmstr->ball_id].ball_coord.y, mstr_prev[tmpmstr->ball_id].radius, LCD_BLACK);
//lcd_filled_circle(mstr_now[tmpmstr->ball_id].ball_coord.x, mstr_now[tmpmstr->ball_id].ball_coord.y, mstr_now[tmpmstr->ball_id].radius, mstr_now[tmpmstr->ball_id].color);
for(int i = 0; i<NUMBER_OF_BALLS; i++){
lcd_filled_circle(mstr_prev[i].ball_coord.x, mstr_prev[i].ball_coord.y, mstr_prev[i].radius, LCD_BLACK);
lcd_filled_circle(mstr_now[i].ball_coord.x, mstr_now[i].ball_coord.y, mstr_now[i].radius, mstr_now[i].color);
}
flag = false;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment