Skocz do zawartości

Arduino przełącznik on/off


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ę

@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

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?

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
 

#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

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 😕

#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

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