Licznik = alarm

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
sosnax1
Młodszy majsterkowicz
Posty: 5
Rejestracja: 1 lip 2013, 13:09

Licznik = alarm

Post autor: sosnax1 » 3 lip 2013, 22:54

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)
Ostatnio zmieniony 4 lip 2013, 15:04 przez sosnax1, łącznie zmieniany 2 razy.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 4 lip 2013, 07:36

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 :)
pozdrawiam
Jacek
sosnax1
Młodszy majsterkowicz
Posty: 5
Rejestracja: 1 lip 2013, 13:09

Re: Licznik = alarm

Post autor: sosnax1 » 4 lip 2013, 23:39

poprawione czy tak jest zrozumiale? jeżeli nie postaram się jeszcze uprościć.
Awatar użytkownika
cube
Złota rączka
Posty: 834
Rejestracja: 2 gru 2012, 17:02

Re: Licznik = alarm

Post autor: cube » 5 lip 2013, 00:04

Rozwiązaniem twojego problemu (jak i połowy innych, o których ludzie tu piszą) jest funkcja przerwania: attachInterrupt().
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 5 lip 2013, 02:03

Czy to co cube napisał rozwiązuje Twój problem?
pozdrawiam
Jacek
sosnax1
Młodszy majsterkowicz
Posty: 5
Rejestracja: 1 lip 2013, 13:09

Re: Licznik = alarm

Post autor: sosnax1 » 9 lip 2013, 15:15

Napisałem do ciebie (Jacku) wiadomość, odnośnie tego tematu.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1137
Rejestracja: 18 lis 2011, 02:18

Re: Licznik = alarm

Post autor: Marhef » 9 lip 2013, 21:06

Napisz do wszystkich, może ktoś pomoże
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 10 lip 2013, 13:12

sosnax1 pisze:Napisałem do ciebie (Jacku) wiadomość, odnośnie tego tematu.
A gdzie napisałeśś Tu jest jakaś prywatna poczta? Idę szukać :)
pozdrawiam
Jacek
sosnax1
Młodszy majsterkowicz
Posty: 5
Rejestracja: 1 lip 2013, 13:09

Re: Licznik = alarm

Post autor: sosnax1 » 10 lip 2013, 22:32

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.
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 10 lip 2013, 22:57

nie mam prywatnej wiadomości żadnej
pozdrawiam
Jacek
sosnax1
Młodszy majsterkowicz
Posty: 5
Rejestracja: 1 lip 2013, 13:09

Re: Licznik = alarm

Post autor: sosnax1 » 16 lip 2013, 22:01

Tak jak już wcześniej pytał mógłbyś to zrobić?
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 16 lip 2013, 23:37

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
Awatar użytkownika
Marhef
Złota rączka
Posty: 1137
Rejestracja: 18 lis 2011, 02:18

Re: Licznik = alarm

Post autor: Marhef » 17 lip 2013, 00:46

Dwa przerwania o numerze 0?
W drugim nie powinno być 1?
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 17 lip 2013, 17:24

Marhef pisze:Dwa przerwania o numerze 0?
W drugim nie powinno być 1?
Tak, masz absolutnie rację. Pisałem na cito żeby tylko ideę oddać. Trzeba też zainicjować te porty od przerwań prawdopodobnie.
pozdrawiam
Jacek
Awatar użytkownika
Marhef
Złota rączka
Posty: 1137
Rejestracja: 18 lis 2011, 02:18

Re: Licznik = alarm

Post autor: Marhef » 17 lip 2013, 18:35

Chyba nie. Natomiast zmienne używane w przerwaniach muszą być typu "volatile" (np volatile int)
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: Licznik = alarm

Post autor: jacek » 17 lip 2013, 18:42

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
ODPOWIEDZ

Strony partnerskie: