Skocz do zawartości

Arduino przełącznik on/off


dominik.andreck

Pomocna odpowiedź

7 godzin temu, farmaceuta napisał:

To pozamieniali stany z high na low pezrzekaznika w funkcji...co do diody podepnij ją do pin/gnd, przełącznik tak samo ma być

a mógłbyś pomóc z tym?
Pozmieniałem już chyba wszędzie gdzie się da stany i nadal diodę wyłącza niezależnie czy przycisk jest wciśnięty czy nie (przycisk wciśnięty - dioda zapalona)
A przekaźniki cały czas są włączone, nie jestem w stanie ich załączyć tylko przez tą chwilę a nie, że cały czas i wyłączają się przez chwilę

Link do komentarza
Share on other sites

@dominik.andreck narysuj schemat jak masz to podłączone bo inaczej nie dojdziemy do ładu...

4 minuty temu, dominik.andreck napisał:

 nadal diodę wyłącza niezależnie czy przycisk jest wciśnięty czy nie (przycisk wciśnięty - dioda zapalona)

Trochę tu oszukujesz bo wyraźnie napisałeś że jak przekaźnik się wyłączy to dioda ma świecić jeszcze 5 i się wyłączyć ...do schematu nagraj jeszcze wideo

Link do komentarza
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

7 minut temu, dominik.andreck napisał:

myślałem, że będę musiał jakąś pauzę wykonać, żeby program nie zgłupiał, a teraz jak to działa to nie jest potrzebna, tak wiem mój błąd

Czyli po miganiach dioda ma zostać włączona a przekaźnik się wyłączyć tak?

Link do komentarza
Share on other sites

4 minuty temu, farmaceuta napisał:

Czyli po miganiach dioda ma zostać włączona a przekaźnik się wyłączyć tak?

film nie chce się dodać
Nie wiem jak to opisać

Przełączniki oba są cały czas załączone i rozłączają się tylko

przełączam przełącznik na ON 
przekaźnik nr.1 rozłącza się- dioda zaczyna mrugać - przełącznik nr.1 załącza się - dioda gaśnie       // tutaj aby po miganiu była zapalona, coś ala sygnalizacja, że                                                                                                                                                                               przełącznik jest w pozycji ON

przełączam przełącznik na OFF
przekaźnik nr.2 rozłącza się - dioda zaczyna mrugać - przełącznik nr.2 załącza się - dioda gaśnie      //tutaj dioda git

No i to żeby przekaźniki działały odwrotnie
przełączam przełącznik na ON 
przekaźnik nr.1 załącza się - dioda zaczyna mrugać - przełącznik nr.1 rozłącza się - dioda pozostaje zapalona

przełączam przełącznik na OFF
przekaźnik nr.2 załącza się - dioda zaczyna mrugać - przełącznik nr.2 rozłącza się - dioda gaśnie 

Bez pauz ani niczego
Teraz chyba w miarę dobrze opisałem
 

Link do komentarza
Share on other sites

#define PRZEKAZNIK1_PIN 2 // pin przekaznika 1
#define PRZEKAZNIK2_PIN 3 // pin przekaznika 2
#define LED_PIN 4 // pin leda
#define INTERWAL 500 // czas "mrygania" led w ms
#define SW_PIN 5   //pin przelacznika 
#define ILOSC_MIGNIEC 10   // ilosc migniec led * 2 (5 migniec = 10)

bool flaga_s1 = 1;
bool flaga_s2 = 1;
bool stan_led = 0;

void setup() {
   pinMode(PRZEKAZNIK1_PIN, OUTPUT);
   pinMode(PRZEKAZNIK2_PIN, OUTPUT);
   pinMode(LED_PIN, OUTPUT);
   pinMode(SW_PIN, INPUT_PULLUP);
   digitalWrite(PRZEKAZNIK1_PIN, HIGH);
   digitalWrite(PRZEKAZNIK2_PIN, HIGH);

}

void loop() {
    if (digitalRead(SW_PIN) == HIGH && flaga_s1 == true) {
      fun(PRZEKAZNIK1_PIN, LED_PIN,INTERWAL);
      flaga_s1 = false;
      flaga_s2 = true;
   }
    if (digitalRead(SW_PIN) == LOW && flaga_s2 == true) {
      fun(PRZEKAZNIK2_PIN, LED_PIN, INTERWAL);
      flaga_s2 = false;
      flaga_s1 = true;
   }

    
}

void fun(byte relay, byte led_pin, int interwal) {

    digitalWrite(relay, LOW);
    stan_led = 0;
  for (byte i = 0; i < ILOSC_MIGNIEC; i++) {
    digitalWrite(led_pin, stan_led = !stan_led);
    delay(interwal);
  
}
     digitalWrite(relay, HIGH);
     digitalWrite(LED_PIN, HIGH);
     

}

powinno byc

Link do komentarza
Share on other sites

2 godziny temu, farmaceuta napisał:
#define PRZEKAZNIK1_PIN 2 // pin przekaznika 1
#define PRZEKAZNIK2_PIN 3 // pin przekaznika 2
#define LED_PIN 4 // pin leda
#define INTERWAL 500 // czas "mrygania" led w ms
#define SW_PIN 5   //pin przelacznika 
#define ILOSC_MIGNIEC 10   // ilosc migniec led * 2 (5 migniec = 10)

bool flaga_s1 = 1;
bool flaga_s2 = 1;
bool stan_led = 0;

void setup() {
   pinMode(PRZEKAZNIK1_PIN, OUTPUT);
   pinMode(PRZEKAZNIK2_PIN, OUTPUT);
   pinMode(LED_PIN, OUTPUT);
   pinMode(SW_PIN, INPUT_PULLUP);
   digitalWrite(PRZEKAZNIK1_PIN, HIGH);
   digitalWrite(PRZEKAZNIK2_PIN, HIGH);

}

void loop() {
    if (digitalRead(SW_PIN) == HIGH && flaga_s1 == true) {
      fun(PRZEKAZNIK1_PIN, LED_PIN,INTERWAL);
      flaga_s1 = false;
      flaga_s2 = true;
   }
    if (digitalRead(SW_PIN) == LOW && flaga_s2 == true) {
      fun(PRZEKAZNIK2_PIN, LED_PIN, INTERWAL);
      flaga_s2 = false;
      flaga_s1 = true;
   }

    
}

void fun(byte relay, byte led_pin, int interwal) {

    digitalWrite(relay, LOW);
    stan_led = 0;
  for (byte i = 0; i < ILOSC_MIGNIEC; i++) {
    digitalWrite(led_pin, stan_led = !stan_led);
    delay(interwal);
  
}
     digitalWrite(relay, HIGH);
     digitalWrite(LED_PIN, HIGH);
     

}

powinno byc

przekaźniki działają perfekcyjnie, tylko dioda jest stale włączona 😕

Link do komentarza
Share on other sites

#define PRZEKAZNIK1_PIN 2 // pin przekaznika 1
#define PRZEKAZNIK2_PIN 3 // pin przekaznika 2
#define LED_PIN 4 // pin leda
#define INTERWAL 500 // czas "mrygania" led w ms
#define SW_PIN 5   //pin przelacznika 
#define ILOSC_MIGNIEC 10   // ilosc migniec led * 2 (5 migniec = 10)

bool flaga_s1 = 1;
bool flaga_s2 = 1;
bool stan_led = 0;

void setup() {
   pinMode(PRZEKAZNIK1_PIN, OUTPUT);
   pinMode(PRZEKAZNIK2_PIN, OUTPUT);
   pinMode(LED_PIN, OUTPUT);
   pinMode(SW_PIN, INPUT_PULLUP);
   digitalWrite(PRZEKAZNIK1_PIN, HIGH);
   digitalWrite(PRZEKAZNIK2_PIN, HIGH);

}

void loop() {
    if (digitalRead(SW_PIN) == HIGH && flaga_s1 == true) {
      fun(PRZEKAZNIK1_PIN, LED_PIN,INTERWAL, 1);
      flaga_s1 = false;
      flaga_s2 = true;
   }
    if (digitalRead(SW_PIN) == LOW && flaga_s2 == true) {
      fun(PRZEKAZNIK2_PIN, LED_PIN, INTERWAL, 0);
      flaga_s2 = false;
      flaga_s1 = true;
   }

    
}

void fun(byte relay, byte led_pin, int interwal, bool stan) {

    digitalWrite(relay, LOW);
    stan_led = 0;
  for (byte i = 0; i < ILOSC_MIGNIEC; i++) {
    digitalWrite(led_pin, stan_led = !stan_led);
    delay(interwal);
  
}
     digitalWrite(relay, HIGH);
    
     if (stan == 1) {
     digitalWrite(LED_PIN, HIGH);
  }  else { 
     digitalWrite(LED_PIN, LOW);
    }
  
}

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

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

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.