Skip to content

Instantly share code, notes, and snippets.

@carlosdelfino
Created January 20, 2020 01:53
Show Gist options
  • Save carlosdelfino/609db07bf319465535086c4b576e987f to your computer and use it in GitHub Desktop.
Save carlosdelfino/609db07bf319465535086c4b576e987f to your computer and use it in GitHub Desktop.
Códigos de Teste Sampling Sinais Analógicos com Arduino, começando do mais óbvio para o iniciante até o mais óbvio para o especialista
/*
O Objetivo deste código é educacional, é puramente didático,
onde demonstro como é feito a leitura da porta analógica e
como obtenho as médicas das taxas deleitura.
Para tirar proveito deste cóidgo você deve usar o Arduino Plotter ou copiar a saida da porta serial para uma planilha e plotar um gráfico com os dados gerados, pode também jogar diretamente para o Octave ou MathLab;
*/
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("Time_(s)");
Serial.print("\t");
Serial.print("Analog_1");
Serial.print("\t");
Serial.print("Piezo_1");
Serial.print("\t");
Serial.print("Piezo_media_1");
Serial.print("\t");
Serial.print("Intervalo_geral_(s)");
Serial.print("\t");
Serial.print("Freq_geral_(*1Hz)");
Serial.print("\t");
Serial.print("Frequência_sample_(*0.1Hz)");
Serial.print("\t");
Serial.print("Freq_sample_media_(*0.1Hz)");
Serial.println();
}
// the loop routine runs over and over again forever:
void loop() {
static float last = millis();
Serial.print( (float)millis() / 1000, 4); // tempo em segundos
Serial.print("\t");
Serial.print(analogRead(A1)); // leitura na porta analógica, tempor variável conforme estabilidade do hardware do ATMega
Serial.print("\t");
Serial.print(analogRead(A4)); // Leitura do sinaldo Piezo na porta A4
Serial.print("\t");
static double lastAr1M2 = 0;
static int lastAr1M2C = 0;
long ar1M = 0;
int i = 0;
double lastAr1M = 0;
double lastAr1 = 0 ;
for (; i < 400; i++) {
ar1M += analogRead(A4);
lastAr1M += (millis() - lastAr1);
lastAr1 = millis();
}
lastAr1M /= i;
ar1M /= i;
Serial.print(ar1M); // média das leituras;
Serial.print("\t");
Serial.print( (millis() - last) / 1000 , 4); // intervalo (s) geral entre leituras
Serial.print("\t");
Serial.print(1 / ((millis() - last) / 1000), 4); // Frequêncial Geral
Serial.print("\t");
Serial.print(1 / (lastAr1M / 1000), 4); // Frequência do Sampling
Serial.print("\t");
lastAr1M2 += lastAr1M;
Serial.print(1 / (lastAr1M2 / ++lastAr1M2C / 1000), 4); // Frequência media do Sampling
Serial.println();
last = millis();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment