/*************************************************************** * Projeto: Estudo da trajetória parabólica em função do tempo * * Desenvolvedor: Vanderlei Alves * * Data: 27/06/2025 * ****************************************************************/ //Mapeamento dos pinos #define POT_PIN A0 #define PIN_PWM_Y 5 #define PIN_PWM_X 6 //Constante da gravidade da terra const float g = 9.8; //Variáveis globais int pwm_y, pwm_x; void setup() { //Inicialização da comunicação serial Serial.begin(9600); //Aguarda 1 segundo para estabilizar as tensões delay(1000); } void loop() { //Leitura do potenciômetro int leitura = analogRead(POT_PIN); //Conversão dos valores para ângulos float angulo = map(leitura, 0, 1023, 10, 80); //Ângulo de 10° a 80° //Conversão dos ângulos em radianos float rad = angulo * 3.14159 / 180.0; float v0 = 20.0; //Velocidade fixa de 20 m/s do objeto lançado float t_total = (2 * v0 * sin(rad)) / g; //Tempo total de voo float passo_tempo = t_total / 50.0; //50 pontos Serial.println("x\ty"); //Cabeçalho para o Serial Plotter for (float t = 0; t <= t_total; t += passo_tempo) { //Cálculo dos valores de x e y em função do tempo float x = v0 * cos(rad) * t; float y = v0 * sin(rad) * t - 0.5 * g * t * t; if (y < 0) y = 0; //Evita valores negativos //Representação de x e y com os LEDs pwm_x = map(x, 0, 14, 0, 255); analogWrite(PIN_PWM_X, pwm_x); pwm_y = map(y, 0, 20, 0, 255); analogWrite(PIN_PWM_Y, pwm_y); //Apresentação do gráfico no Plotter Serial Serial.print(x); Serial.print("\t"); Serial.println(y); delay(50); //Tempo entre pontos no plotter } delay(2000); //Espera para novo gráfico }