// Projeto 37 - Movimento de Queda e de Ressalto de uma bola
#define PinSensor 0
int valor;
int limite = 5; // Limite para o sensor piezoelétrico (poderá ser necessário ajustar este valor)
int i = 0;
float delta;
float tempo[6];
float altura;
float energia;
void setup()
{
Serial.begin(9600);
Serial.println();
}
void loop()
{
valor = analogRead(PinSensor);
while(valor < limite)
{
valor = analogRead(PinSensor);
}
tempo[i] = micros();
if(i>0 && i<6)
{
delta = (tempo[i]-tempo[i-1])/1000;
altura = 9.81/2*pow((delta/2000), 2);
Serial.print("tempo");
Serial.print(i);
Serial.print(" = ");
Serial.print(delta,1);
Serial.print(" ms");
Serial.print(" ");
Serial.print("Altura ");
Serial.print(i);
Serial.print(" = ");
Serial.print(altura,4);
Serial.println(" m");
}
i+=1;
delay(100);
if(i == 6)
{
Serial.println("---------------------------------------------------------");
i = 0;
delay(5000);
Serial.println("Pronto para nova experiência.");
}
}
// Projeto 37 - Movimento de Queda e de Ressalto de uma bola (calcula a regressão linear)
#define PinSensor 0
#define n 6
int valor;
int limite = 5; // Poderá ser necessário ajustar este valor
int i = 0;
float delta;
float tempo[n];
float altura[n];
float energia[n];
float SOMAx = 0;
float MEDIAx;
float SOMAy = 0;
float MEDIAy;
float SOMADx = 0;
float DESVIOx;
float SOMADy = 0;
float DESVIOy;
float SOMAcorr = 0;
float CORRELACAO;
float DECLIVE;
float INTER;
float Rquadrado;
void setup()
{
Serial.begin(9600);
Serial.println();
}
void loop()
{
valor = analogRead(PinSensor);
while(valor < limite)
{
valor = analogRead(PinSensor);
}
tempo[i] = micros();
if(i>0 && i<n)
{
delta = (tempo[i]-tempo[i-1])/1000;
altura[i] = 9.81/2*pow((delta/2000), 2);
Serial.print("tempo");
Serial.print(i);
Serial.print(" = ");
Serial.print(delta,1);
Serial.print(" ms");
Serial.print(" ");
Serial.print("Altura");
Serial.print(i);
Serial.print(" = ");
Serial.print(altura[i],4);
Serial.print(" m");
if(i>1)
{
energia[i] = altura[i] / altura[i-1] * 100;
Serial.print(" ");
Serial.print("Energia");
Serial.print(i);
Serial.print(" = ");
Serial.print(energia[i],1);
Serial.print(" %");
}
Serial.println();
}
i+=1;
delay(100);
if(i==n)
{
linear();
i = 0;
SOMAx = 0;
SOMAy = 0;
SOMADx = 0;
SOMADy = 0;
SOMAcorr = 0;
delay(5000);
Serial.println("Ponto para nova experiência.");
}
}
void linear()
{
for(i=1; i<n-1; i++)
{
SOMAx += altura[i];
SOMAy += altura[i+1];
}
MEDIAx = SOMAx/(n-2);
MEDIAy = SOMAy/(n-2);
for(i=1; i<n-1; i++)
{
SOMADx += pow(altura[i]-MEDIAx, 2);
SOMADy += pow(altura[i+1]-MEDIAy, 2);
}
DESVIOx = sqrt(SOMADx/(n-2));
DESVIOy = sqrt(SOMADy/(n-2));
for(i=1; i<n-1; i++)
{
SOMAcorr += (altura[i]-MEDIAx)/DESVIOx*(altura[i+1]-MEDIAy)/DESVIOy;
}
CORRELACAO = SOMAcorr/(n-2);
DECLIVE = CORRELACAO*DESVIOy/DESVIOx;
INTER = MEDIAy-DECLIVE*MEDIAx;
Rquadrado = pow(CORRELACAO, 2);
Serial.println("");
Serial.print("Altura de ressalto = ");
Serial.print(DECLIVE, 4);
Serial.print(" Altura de queda");
if(INTER >=0)
{
Serial.print(" + ");
}
else
{
Serial.print(" - ");
}
Serial.println(abs(INTER), 4);
Serial.print("r^2 = ");
Serial.println(Rquadrado, 4);
Serial.println("----------------------------------------------");
}
// Projeto 37 - Movimento de queda e de ressalto de uma bola (com folha excel)
#define PinSensor 0
int valor;
int limite = 5; // Poderá ser necessário ajustar este valor
int i = 0;
float delta;
float tempo[6];
void setup()
{
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL, ,Tempo/ms");
}
void loop()
{
valor = analogRead(PinSensor);
while(valor < limite)
{
valor = analogRead(PinSensor);
}
tempo[i] = micros();
if(i>0 && i<6)
{
delta = (tempo[i]-tempo[i-1])/1000;
Serial.print("DATA, ,"); Serial.println(delta,1);
}
i+=1;
delay(100);
}