Licznik = alarm
Licznik = alarm
Witam, jestem początkującym w tym środowisku. Obejrzałem już kilka poradników ale nie mogłem z nich zrobić pewnej rzeczy. Teraz tak jak to ma wyglądać zamierzam zamontować czytniki nadające impuls. Jeden czytnik będzie zamontowany przy łańcuch drugi na jednym z kuł. Teraz tak Dajmy na to że w przeciągu 11 obrotów koła, łańcuch wykona 1 obrót. Więc chcę aby sprawdzał czy w ciągu 11 obrotów koła łańcuch co najmniej raz przewiną się przez drugi czytnik,
jeśli przewiną się zaczyna cykl od nowa. Jeżeli nie spełni tego warunku uruchamia alarm i ustawia pin np 8 na low aby zatrzymał dostęp oleju do silniczka.
Drugi problem dotyczy czegoś prostszego. Mianowicie gdy 1 pin ma wartość high uruchamia pin np 8 ( ma to powiązanie z 1 problemem) gdy drugi pin ma wartość high zatrzymuje pin 8( ustawia stan na low) gdy obydwa ( 1 i 2 pin) mają wartość high uruchamia pin 8 aż dojdzie do stanu low na obu czujnikach. (do tego przyda się własnie sprawdzanie czy łańcuch nie został zerwany)
jeśli przewiną się zaczyna cykl od nowa. Jeżeli nie spełni tego warunku uruchamia alarm i ustawia pin np 8 na low aby zatrzymał dostęp oleju do silniczka.
Drugi problem dotyczy czegoś prostszego. Mianowicie gdy 1 pin ma wartość high uruchamia pin np 8 ( ma to powiązanie z 1 problemem) gdy drugi pin ma wartość high zatrzymuje pin 8( ustawia stan na low) gdy obydwa ( 1 i 2 pin) mają wartość high uruchamia pin 8 aż dojdzie do stanu low na obu czujnikach. (do tego przyda się własnie sprawdzanie czy łańcuch nie został zerwany)
Ostatnio zmieniony 4 lip 2013, 15:04 przez sosnax1, łącznie zmieniany 2 razy.
Re: Licznik = alarm
Twój problem wydaje się trywialny, ale ... ja nie rozumiem o czym piszesz. Może tak jakieś przecinki chociaż stosuj.
Nie rozumiem też co znaczy zatrzymać jeden z pinów? Zatrzymał jego zliczanie?
Jak napiszesz porządnie swoją prośbę jeszcze raz to dam Ci gotowy kod z komentarzami :)
Nie rozumiem też co znaczy zatrzymać jeden z pinów? Zatrzymał jego zliczanie?
Jak napiszesz porządnie swoją prośbę jeszcze raz to dam Ci gotowy kod z komentarzami :)
pozdrawiam
Jacek
Jacek
Re: Licznik = alarm
poprawione czy tak jest zrozumiale? jeżeli nie postaram się jeszcze uprościć.
Re: Licznik = alarm
Rozwiązaniem twojego problemu (jak i połowy innych, o których ludzie tu piszą) jest funkcja przerwania: attachInterrupt().
Re: Licznik = alarm
Napisałem do ciebie (Jacku) wiadomość, odnośnie tego tematu.
Re: Licznik = alarm
Napisz do wszystkich, może ktoś pomoże
Re: Licznik = alarm
A gdzie napisałeśś Tu jest jakaś prywatna poczta? Idę szukać :)sosnax1 pisze:Napisałem do ciebie (Jacku) wiadomość, odnośnie tego tematu.
pozdrawiam
Jacek
Jacek
Re: Licznik = alarm
Przy "wyloguj" masz na samym początku prawego paska zadań opcje wiadomości. Ale tak pyzatym poprosiłem cię czy mógłbyś napisać to tak jak wcześniej mówiłeś? Są to moje początki i takie coś bardzo by mi pomogło.
Re: Licznik = alarm
Tak jak już wcześniej pytał mógłbyś to zrobić?
Re: Licznik = alarm
mniej więcej taki program:
Kod: Zaznacz cały
#define MAKS_OBROTOW 11
#define PIN_SILNIK 8
int nLicznikKolo = 0;
void onLancuch ()
{
nLicznikKolo = 0;
}
void onKolo ()
{
nLicznikKolo++;
if (nLicznikKolo > MAKS_OBROTOW)
Alarm ();
}
void Alarm ()
{
digitalWrite (PIN_SILNIK, LOW);
}
void setup ()
{
attachInterrupt(0, onLancuch, RISING);
attachInterrupt(0, onKolo, RISING);
pinMode (PIN_SILNIK, OUTPUT);
digitalWrite (PIN_SILNIK, HIGH);
}
void loop ()
{
}
pozdrawiam
Jacek
Jacek
Re: Licznik = alarm
Dwa przerwania o numerze 0?
W drugim nie powinno być 1?
W drugim nie powinno być 1?
Re: Licznik = alarm
Tak, masz absolutnie rację. Pisałem na cito żeby tylko ideę oddać. Trzeba też zainicjować te porty od przerwań prawdopodobnie.Marhef pisze:Dwa przerwania o numerze 0?
W drugim nie powinno być 1?
pozdrawiam
Jacek
Jacek
Re: Licznik = alarm
Chyba nie. Natomiast zmienne używane w przerwaniach muszą być typu "volatile" (np volatile int)
Re: Licznik = alarm
To może ktoś przerobi mój szkic/koncepcję na działającą aplikację i doda komentarze co jest ważne w takiej aplikacji - jak np modyfikator volatile.
pozdrawiam
Jacek
Jacek