Skocz do zawartości

Funkcja czasowego wyłączania silnika


Pomocna odpowiedź

Napisałem to bardzo ogólnie bo to dużo pisania żeby wyjaśnić szczegółowo zasadę działania. Ale działa to jak serwomechanizm modelarski i chodzi o to żeby tak zrobić że jak silnik nie osiągnie ustalonej pozycji żeby się wyłączył bo inaczej może się spalić.

2 godziny temu, Gintek napisał:

chodzi o to żeby tak zrobić że jak silnik nie osiągnie ustalonej pozycji żeby się wyłączył bo inaczej może się spalić

To ty potrzebujesz poza kryterium czasowym jeszcze odczytać "pozycję" silnika, a raczej elementu jaki jest tym silnikiem sterowany. Napisz coś o tym.

53 minuty temu, _LM_ napisał:

Dodał bym jeszcze zabezpieczenie termiczne, w razie zablokowania wału

Jeśli urządzenie jest do użytkowania 24/7, należałoby uwzględnić sterowanie chłodziarką do piwka na dni weekendowe.

  • 2 tygodnie później...
(edytowany)



static long = 0;
static bool stan = 0;
static bool stan2 = 0;

if (digitalRead(5) == LOW && stan == 0) { last = millis();
  stan = 1;
  stan2 = 1;
 } else if(digitalRead(5) == HIGH) {
  stan =0;
  }

if (millis() - last > 1000UL && stan2 == 1) {
  //zrob cos tam 
  stan2 = 0;
  
  }
  

Tak mi sie napisalo, choc prawidlowo powinny byc odrebne zmienne "stan" dla obu if'ow

Edytowano przez farmaceuta

Znaczy działa ale jak poprzedni przykład to znaczy dopiero po puszczeniu przycisku zaczyna odliczać czas i led gaśnie. A ja chciałbym uzyskać efekt żeby z chwilą wciśnięcia przycisku uruchamiał się czas i led zgasł nie ważne jak długo będzie wciśnięty przycisk.

Jeśli mogę coś podpowiedzieć to zastosuj biblioteki Timers.Na tym forum jest wątek Proste podświetlanie schodów na Arduino. Prośba o pomoc w stworzeniu programu.Jest tam na stronie 5 mój program z zastosowaniem tej biblioteki.Jedną z najważniejszych rzeczy jest uwolnienie się od millsów i delay w programie.Dobrze przeanalizuj to co jest napisane w programie i niech to będzie dla Ciebie inspiracją dla Twojego  rozwiązania.W załączniku są potrzebne pliki.Zdaje się,że biblioteka Timers  w tej wersji obsługuje 8 wątków i w swej istocie jest genialna. Problem uruchomienia czasu jest pokazany w moim programie  bez zastosowania przerwań zewnętrznych. Ale można to zrobić w inny sposób stosując właśnie zewnętrzne przerwania.Niestety Arduino oparte na ATMEL 328 jest ubogie w wejścia gdzie można stosować przerwania zewnętrzne - zdaje się ,że są tylko dwa piny.Ale jeśli zastosujesz stm32 to praktycznie rzecz biorąc każdy pin może zostać skonfigurowany jako wejście z przerwaniem zewnętrznym EXTI.

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...