14 kwietnia 2017

[Arduino] Przykład programu obliczajacego predkosc z przepływowego czujnika

word steps = 0;
float rotation = 0;
float speeder = 0;
int srednicaKola = 150;
float mph; //Utworzenie zmiennej mile/godzinę
float kmh; //Utowrzenie zmiennej km/h

void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), counter, RISING);
}

void loop()
{ onStep();

  Serial.print("Ilosc: ");
  Serial.println(rotation, DEC);
  Serial.print("Speed: ");
  Serial.print(kmh, DEC);
  Serial.println(" km/h ");
  delay(1000);
}

void counter() {
  steps++;
}

void onStep()
{
  static unsigned long lastTime;
  unsigned long timeNow = millis();
  if (timeNow - lastTime <= 1000) {
    return;
  }
  noInterrupts(); //przed obliczeniem wylaczyc przerwanie
  rotation = steps;
  speeder = ((2 * 3.1415 * 30) / (timeNow - lastTime)) * steps;

  mph = (srednicaKola / 2) * 3.14 * rotation * 60 / 5280;//Odczyt prędkości wiatru w milach/godzinę
  mph = mph / 1.5; // Kalibracja błędu odczytu, wartość należy dobrać we własnym zakresie
  kmh = mph * 1.609;
  Serial.print("kroki:");
  Serial.println(steps);
  steps = 0;

  interrupts() ; //po wyliczenu wlacz przerwanie
  // else steps=0;
  // Serial.println(rotation, DEC);
  lastTime = timeNow;

}

Brak komentarzy:

Prześlij komentarz