Skocz do zawartości

Licznik impulsów jako czujnik przepływu cieczy.


Pomocna odpowiedź

Napisano

Witam.

Dopiero zacząłem zabawę z Arduino.

Przerabiam kursy i jest to bardzo dobra nauka.

Potrzebuję zbudować układ, który sczytuje impulsy z miernika przepływu wody (na pinie 2) i jeśli jest jakiś przepływ to załączone jest wyjście 13 , a jesli przepływ jest 0 przez 10 s to wyłącza 13 a włącza 12.

Program:

word steps;

void setup()

{

Serial.begin(9600);

pinMode(2, INPUT_PULLUP);

attachInterrupt(0, onStep, FALLING);

}

void loop()

{

}

void onStep()

{

static unsigned long lastTime;

unsigned long timeNow = millis();

if (timeNow - lastTime < 50)

return;

steps++;

Serial.println(steps);

lastTime = timeNow;

}

ze strony: http://blog.nettigo.pl/post/95970460553/licznik-na-przerwaniach

zlicza mi impulsy z miernika przepływu i wyświetla na monitorze, ale nie wiem jak teraz to przerobić żeby sterować wyjściami 12 i 13.

Bardzo proszę o podpowiedź.

__________

Komentarz dodany przez: Treker

Kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu składania programów jest automatycznie kolorowana, a wtedy wszystkim znacznie łatwiej analizować wklejone programy. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum.

Podpowiedź 1: zastanów się co to znaczy "..jeśli przepływ jest 0 przez 10 s.." w kontekście tego czujnika i opisz swoje przemyślenia. Następna podpowiedź zależy od tego co wymyślisz.

Oznacza to że czujnik nie daje impulsów na wejście 2 przez min 10s.

Czyli na wejściu 2 jest stan HIGH przez min 10 s.

Ale nie wiem co z tym dalej zrobić

Do moich potrzeb nie muszę wiedzieć ile było impulsów w ciągu 10 sekund.

Może zasłabło opisałem co potrzebuję zbudować.

A więc tak: układ, sczytuje impulsy z miernika przepływu wody na pinie 2 jeśli woda przepływa to miernik daje impulsy (nie ważne ile ich jest) , natomiast przy braku przepływu dostaję ciągły sygnał HIHG i wtedy program czeka przez 10 s i wyłącza 13 a włącza 12.

Później chciałbym rozbudować układ żeby na LCD wyświetlał aktualny przepływ wody, ale to jest już nadprogramowe zadanie (jak bardziej opanuję Arduino 😉

if (digitalRead(2) == HIGH && (i trwa to 10s)

digitalWrite(12, HIGH); //Włącz diodę 12

} else {

digitalWrite(13, LOW); //Wyłącz diodę 13

Niepotrzebny nam jest jakiś kod, rozumiemy po polsku a Ty zapewne umiesz w nim pisać nawet lepiej niż w C, prawda? To zapomnij na razie o komputerach i powiedz co Ty byś zrobił, gdybyś miał w ręku np. stoper lub zegarek i chciał wykryć sytuację gdy na przystanku nie było autobusu przez 10 minut.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...