Sei que o meu motor tem um valor de 19,5hertz. 

/* FreqMeasure - Example with serial output
* http://www.pjrc.com/teensy/td_libs_FreqMeasure.html
*
* This example code is in the public domain.
*/
#include <FreqMeasure.h>
int Vermelho = 2;
int Verde = 3;

void setup() {
Serial.begin(57600);
FreqMeasure.begin();
pinMode(Vermelho, OUTPUT);
pinMode(Verde, OUTPUT);


}

double sum=0;
int count=0;

void loop() {
if (FreqMeasure.available()) {
// average several reading together
sum = sum + FreqMeasure.read();
count = count + 1;
if (count > 30) {
float frequency = FreqMeasure.countToFrequency(sum / count);
Serial.println(frequency);
sum = 0;
count = 0;

if ((frequency > 19.200) && (frequency < 20.800))
{
digitalWrite(3, HIGH); // led verde - esta tudo ok.
digitalWrite(2, LOW);

Serial.println("*");
}
else {
digitalWrite(2, HIGH); // led vermelho - algo esta mal
digitalWrite(3,LOW); 

}
}
}
}

este codigo esta me a dar bem mas para o motor que utilizo de momento, o problema e que vou ter de usar isto em outros motores e a frequencia nao e a mesma, precisava de algo que durante por exemplo 5 segundos calculase a frequencia media, e so depois e que se adpatava o codigo que agora tenho. acho que tenho de usar a funçao millis. e precisava tambem que depois da frequencia dada me desse 1%+ e 1% - (if ((frequency > 19.200) && (frequency < 20.800)), para dar uma margem

Exibições: 243

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço