Skocz do zawartości

Brak reakcji połowy przekaźników arduino


Pomocna odpowiedź

Witam. Napisałem dość prosty kod (tak mi się wydawało przynajmniej), lecz po jego wgraniu i odpaleniu tylko część działa a druga część nie ma ochoty nawet ruszyć. Kod steruje pracą czterech przekaźników w zależności od wciśniętego przycisku RP i DP oraz krańcówek RK i DK. Problem w tym że przekaźniki działają tylko w połowie po przepięciu ich na gniazda tych co działają zaczynają działać.

 

int przekaznik1 = 0;
int przekaznik2 = 1;
int przekaznik3 = 2;
int przekaznik4 = 3;
int D = 5;
int N = 6;
int R = 7;
int koniecD = 8;
int koniecN = 9;
int koniecR = 10;

int DP;
int DK;
int RP;
int RK;
void setup() 
 {
pinMode(przekaznik1 , OUTPUT);
pinMode(przekaznik2 , OUTPUT);
pinMode(przekaznik3 , OUTPUT);
pinMode(przekaznik4 , OUTPUT);

pinMode(D , INPUT_PULLUP);
pinMode(N , INPUT_PULLUP);
pinMode(R , INPUT_PULLUP);

pinMode(koniecD , INPUT_PULLUP);
pinMode(koniecN , INPUT_PULLUP);
pinMode(koniecR , INPUT_PULLUP);



digitalWrite(przekaznik1 , HIGH);
digitalWrite(przekaznik2 , HIGH);
digitalWrite(przekaznik3 , HIGH);
digitalWrite(przekaznik4 , HIGH);






}

void loop()
{
   DP = digitalRead(D);
   DK = digitalRead(koniecD);
   RP = digitalRead(R);
   RK = digitalRead(koniecR);
   
   
   if(DP == LOW & DK == HIGH) {
    digitalWrite(przekaznik1 , LOW);
    digitalWrite(przekaznik2 , LOW);
   }
   else {  digitalWrite(przekaznik1 , HIGH);
           digitalWrite(przekaznik2 , HIGH);
   
   }

   if(RP == LOW & RK == HIGH) {
    digitalWrite(przekaznik3 , LOW);
    digitalWrite(przekaznik4 , LOW);
   }
   else {  digitalWrite(przekaznik3 , HIGH);
           digitalWrite(przekaznik4 , HIGH);
   }


}

 

Link to post
Share on other sites

Cześć, trochę za mało danych o Twoim systemie napisałeś, może po prostu nie jest spełniony warunek dla zadziałania tej pary przekaźników która "nie działa".

 Poza tym ja bym zamiast tak:

if(RP == LOW & RK == HIGH)

zapisał to tak:

if((RP == LOW) && (RK == HIGH))

Poczytaj o AND:

https://www.arduino.cc/reference/en/language/structure/boolean-operators/logicaland/

Edytowano przez SOYER
  • Lubię! 1
Link to post
Share on other sites

Fakt mogłem troszkę bardziej go opisać. Więc tak cały system ma sterować kierunkiem obrotu silnika DC. Do przełączania mają służyć dwa przyciski opisane kolejno w kodzie D i R ( N narazie pomijam bo to nie jest ważne). Silnik sterujemy pewnym wałem który przesuwa ośką do przodu i do tyłu i do ograniczenia ruchu służą dwie krańcówki koniecD i koniecR ( koniec N narazie pomijam). Arduino podpięte jest pod cztery przekaźniki i po naciśnięciu przycisku D mają się załączyć dwa pierwsze a gdy wałek dotknie krańcówki to ma się wyłączyć, a drugi przycisk steruje analogicznie drugim zestawem przekaźników i krańcówką. Mam nadzieje że w miare przejrzyście wyjasniłem.

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

Zamieniłem te ify i dalej to samo a warunki są na pewno dobrze spełnione bo zamieniając w kodzie numery przekaźników tak samo działa tylko ta część :

 if((DP == LOW) && (DK == HIGH)) {
    digitalWrite(przekaznik1 , LOW);
    digitalWrite(przekaznik2 , LOW);
   }
   else {  digitalWrite(przekaznik1 , HIGH);
           digitalWrite(przekaznik2 , HIGH);

a ta nie działa :

  if((RP == LOW) && (RK == HIGH)) {
    digitalWrite(przekaznik3 , LOW);
    digitalWrite(przekaznik4 , LOW);
   }
   else {  digitalWrite(przekaznik3 , HIGH);
           digitalWrite(przekaznik4 , HIGH);

 

Edytowano przez Lolheadshootpl
Link to post
Share on other sites
12 minut temu, Lolheadshootpl napisał:

dalej to samo a warunki są na pewno dobrze spełnione

 

Jesteś pewny, że przycisk DP i krańcówkę DK masz podpiętą w ten sam sposób co RP i RK? 

Link to post
Share on other sites
  • Gieneq zmienił tytuł na: Brak reakcji połowy przekaźników arduino

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.