void paddle_tick(sprite_t* sprite) { int* previous_pos = (int*)&sprite->data; sprite->center_pos_x = (adc_in() * ((SCREENW << 8) - (sprite->size_x_div_2 << 1 ))) >> 12; sprite->center_pos_x += sprite->size_x_div_2; breakout_data.paddle_speed_x = sprite->center_pos_x - *previous_pos; *previous_pos = sprite->center_pos_x; }
int main() // Main function { pause(1000); // Wait 1 s for Terminal app adc_init(21, 20, 19, 18); // CS=21, SCL=20, DO=19, DI=18 int i = 0; // Index variable while(1) // Loop repeats indefinitely { if(i == 4) // After index = 3 { i = 0; // Reset to zero printf("%c", HOME); // Cursor home } printf("adc[%d] = %d%c\n", i, // Display raw ADC adc_in(i), CLREOL); printf("volts[%d] = %f%c\n\n", // Display volts i, adc_volts(i), CLREOL); i++; // Add 1 to index pause(100); // Wait 1/10 s } }
float adc_volts(int channel) { return ((float) adc_in(channel)) * 5.0 / 4096.0; }