Skocz do zawartości

Sterowanie kierunkowskazami do roweru


Rumuru

Pomocna odpowiedź

Mam problem z zrobieniem świateł awaryjnych aby   świeciły wszystkie. Tyle zrobiłem.

// Przycisk Awaryjny 4
// Przycisk w lewo 7
// Przycisk Stop 6
// Przyciskj w prawo 5
// Światrło Awaryjne 
// światło w lewo 8
// światło stop 10
// światło w prawo 9

#define przyciskAwaryjny 4
#define przyciskLewy 5
#define przyciskStop 6
#define przyciskPrawy 7

#define Lewy 8
#define Stop 10
#define Prawy 9

void setup() {
  
 //Lewy  
pinMode(Lewy, OUTPUT); //Dioda jako wyjście
pinMode( przyciskLewy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Lewy, LOW); //Wyłączenie diody

//Stop
pinMode(Stop, OUTPUT); //Dioda jako wyjście
pinMode(przyciskStop, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Stop, LOW); //Wyłączenie diody

//Prawy  
pinMode(Prawy, OUTPUT); //Dioda jako wyjście
pinMode(przyciskPrawy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Prawy, LOW); //Wyłączenie diody
}

void loop() {
if (digitalRead(przyciskLewy) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(Lewy, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(Lewy, LOW); //Wyłączamy diodę
  }
  if (digitalRead(przyciskStop) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(Stop, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(Stop, LOW); //Wyłączamy diodę
  }
  if (digitalRead(przyciskPrawy) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(Prawy, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(Prawy, LOW); //Wyłączamy diodę
  }
}
  

 

Link do komentarza
Share on other sites

Przycisk od świateł stop może mieć swój własny 'if', ale kierunki i awaryjne, jako że to są te same elementy wykonawcze to raczej tak, nie ja pisałem - skopiowane. Do awaryjnych i kierunków, to PWM 1, 2, 3 Hz by był dobry.

if(warunek1){
  // instrukcje wykonywane gdy warunek 1-szy jest spełniony
}else if(warunek2){
  // instrukcje wykonywane gdy warunek 1-szy nie jest spełniony natomiast drugi jest
}else if(warunek3){
  // instrukcje wykonywane gdy warunki 1-szy i 2-gi nie są spełniona a 3-ci jest
}
Edytowano przez matsobdev
  • Lubię! 1
Link do komentarza
Share on other sites

Pierwszy przykład dla if else z podlinkowanego kursu. 😉

if (digitalRead(7) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(8, HIGH); //Włącz diodę
  } else { //Jeśli warunek nie został spełniony (przycisk nie jest wciśnięty)
    digitalWrite(8, LOW); //Wyłącz diodę
  }

 

  • Lubię! 1
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

// Przelacznik suwakowy Awaryjny 4
// Przycisk w lewo 7
// Przycisk Stop 6
// Przycisk w prawo 5
// Światrło Awaryjne 
// światło w lewo 8
// światło stop 10
// światło w prawo 9

#define przelacznikAwaryjny 4
#define przyciskLewy 5
#define przyciskStop 6
#define przyciskPrawy 7

#define Lewy 8
#define Stop 10
#define Prawy 9

void setup() {
  
 //Lewy  
pinMode(Lewy, OUTPUT); //Dioda jako wyjście
pinMode( przyciskLewy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Lewy, LOW); //Wyłączenie diody

//Stop
pinMode(Stop, OUTPUT); //Dioda jako wyjście
pinMode(przyciskStop, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Stop, LOW); //Wyłączenie diody

//Prawy  
pinMode(Prawy, OUTPUT); //Dioda jako wyjście
pinMode(przyciskPrawy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Prawy, LOW); //Wyłączenie diody
}

void loop() {
  
if (digitalRead(przyciskLewy) == LOW) { //Jeśli przycisk wciśnięty

    digitalWrite(Lewy, HIGH); //Włącz diodę
    delay(5000); //Czekamy 10 sekund
    digitalWrite(Lewy, LOW); //Wyłączamy diodę
  }
  if (digitalRead(przyciskStop) == LOW) { //Jeśli przycisk wciśnięty

     digitalWrite(Stop, HIGH); //Włącz diodę
     digitalWrite(Stop, LOW); //Wyłączamy diodę

     } else { //Jeśli warunek nie został spełniony (przycisk  jest nie wciśnięty)

    digitalWrite(Stop, LOW); //Włącz diodA
    digitalWrite(Stop, LOW); //Wyłączamy diodę

  }
  if (digitalRead(przyciskPrawy) == LOW) { //Jeśli przycisk wciśnięty

    digitalWrite(Prawy, HIGH); //Włącz diodę
    delay(5000); //Czekamy 5 sekund
    digitalWrite(Prawy, LOW); //Wyłączamy diodę
  }
  
    if (digitalRead(przelacznikAwaryjny) == HIGH) { //Jeśli przelacznik suwakowy ON

    digitalWrite(Lewy, LOW); //Wyłącz diodę
    digitalWrite(Stop, LOW); //Wyłącz diodę
    digitalWrite(Prawy, LOW); //Wyłącz diodę
    delay(1000); //Czekamy 1 sekunda   

   digitalWrite(Lewy, HIGH); //Włącz diodę
   digitalWrite(Stop, HIGH); //Włącz diodę
   digitalWrite(Prawy, HIGH); //Włącz diodę     
   delay(1000); //Czekamy 1 sekunda 

    digitalWrite(Lewy, LOW); //Wyłącz diodę
    digitalWrite(Stop, LOW); //Wyłącz diodę
    digitalWrite(Prawy, LOW); //Wyłącz diodę
    delay(1000); //Czekamy 1 sekunda        
      
  } else { //Jeśli warunek nie został spełniony (przerlacznik Of)
   
   digitalWrite(Lewy, LOW); //Wyłącz diodę
   digitalWrite(Stop, LOW); //Wyłącz diodę
   digitalWrite(Prawy, LOW); //Wyłącz diodę
   
  }
    }



  

Działa. Dałem przełącznik suwakowy  do alarmu. Co dać  do stop aby zapalało się po naciśnięciu hamulca? Czym zaprojektować schemat? I płytkę?

Link do komentarza
Share on other sites

Kupiłem Ardino Uno , płytkę , kabelki , kontraktron  10 szt.  diody Led Red 20 szt. diody Led żółtej ( nie było pomarańczowych) , 2 przyciski , 1 przełącznik suwakowy. Jest tu ktoś z Bytomia? Można poprawić kod? Kod poniżej.

// Przelacznik suwakowy Awaryjny 4
// Przycisk w lewo 7
// Przycisk Stop 6
// Kontrakton 6
// Przycisk w prawo 5
// Światrło Awaryjne 
// światło w lewo 8
// światło stop 10
// światło w prawo 9

#define przelacznikAwaryjny 4
#define przyciskLewy 5
#define przyciskStop 6
#define przyciskPrawy 7
//#define Kontraskton 6
#define Lewy 8
#define Stop 10
#define Prawy 9

void setup() {
  
 //Lewy  
 
pinMode(Lewy, OUTPUT); //Dioda jako wyjście
pinMode( przyciskLewy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Lewy, LOW); //Wyłączenie diody

//Stop
//  pinMode(kontrakton, INPUT_PULLUP); //Kontaktron jako wejście
pinMode(Stop, OUTPUT); //Dioda jako wyjście
//pinMode(kontraktonStop, INPUT_PULLUP); //Przycisk jako wejście
pinMode(przyciskStop, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Stop, LOW); //Wyłączenie diody

//Prawy  

pinMode(Prawy, OUTPUT); //Dioda jako wyjście
pinMode(przyciskPrawy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(Prawy, LOW); //Wyłączenie diody
}

void loop() {
  
if (digitalRead(przyciskLewy) == LOW) { //Jeśli przycisk wciśnięty

    digitalWrite(Lewy, HIGH); //Włącz diodę
    delay(5000); //Czekamy 10 sekund
    digitalWrite(Lewy, LOW); //Wyłączamy diodę
  }
  //if (digitalRead(kontraktonStop) == LOW) { //Jeśli przycisk wciśnięty

  if (digitalRead(przyciskStop) == LOW) { //Jeśli przycisk wciśnięty

     digitalWrite(Stop, HIGH); //Włącz diodę
     digitalWrite(Stop, LOW); //Wyłączamy diodę

     } else { //Jeśli warunek nie został spełniony (przycisk  jest nie wciśnięty)

    digitalWrite(Stop, LOW); //Włącz diodA
    digitalWrite(Stop, LOW); //Wyłączamy diodę

  }
  if (digitalRead(przyciskPrawy) == LOW) { //Jeśli przycisk wciśnięty

    digitalWrite(Prawy, HIGH); //Włącz diodę
    delay(5000); //Czekamy 5 sekund
    digitalWrite(Prawy, LOW); //Wyłączamy diodę
  }
  
    if (digitalRead(przelacznikAwaryjny) == HIGH) { //Jeśli przelacznik suwakowy ON

    digitalWrite(Lewy, LOW); //Wyłącz diodę
    digitalWrite(Stop, LOW); //Wyłącz diodę
    digitalWrite(Prawy, LOW); //Wyłącz diodę
    delay(500); //Czekamy 1 sekunda   

   digitalWrite(Lewy, HIGH); //Włącz diodę
   digitalWrite(Stop, HIGH); //Włącz diodę
   digitalWrite(Prawy, HIGH); //Włącz diodę     
   delay(1000); //Czekamy 1 sekunda 

    digitalWrite(Lewy, LOW); //Wyłącz diodę
    digitalWrite(Stop, LOW); //Wyłącz diodę
    digitalWrite(Prawy, LOW); //Wyłącz diodę
    delay(500); //Czekamy 1 sekunda        
      
  } else { //Jeśli warunek nie został spełniony (przerlacznik Of)
   
   digitalWrite(Lewy, LOW); //Wyłącz diodę
   digitalWrite(Stop, LOW); //Wyłącz diodę
   digitalWrite(Prawy, LOW); //Wyłącz diodę
   
  }
    }



  

 

Link do komentarza
Share on other sites

11 godzin temu, Danyeru napisał:

A co masz do zasilania diod? Tranzystory, przekaźnik?

Co do kodu: Dlaczego masz na raz high i low dla stopu, i podwójne low później?

Przez rezystory 220 om z Arduino Uno. Podłączyłem 33 diody Led , Kontraktron , 2 przyciski i przełącznik suwakowy.

Link do komentarza
Share on other sites

11 godzin temu, farmaceuta napisał:

@Rumuru a gdzie masz zainicjowany przycisk od awaryjnych?...może jutro się zlituje to jakoś ten kod doprowadzimy do ładu...😜

Nie mam przycisku bo nie dałem rady zrobić on/off.  Jest zrobiony na przełączniku suwakowym.

Link do komentarza
Share on other sites

No ale dalej, czy to suwak, kołyska, krańcówka, to zamykasz lub otwierasz obwód, czyli w tym przypadku tak samo określisz piny, ich tryb i instrukcję warunkową dla odczytanego stanu. 

  • Lubię! 1
Link do komentarza
Share on other sites

12 minut temu, Danyeru napisał:

No ale dalej, czy to suwak, kołyska, krańcówka, to zamykasz lub otwierasz obwód, czyli w tym przypadku tak samo określisz piny, ich tryb i instrukcję warunkową dla odczytanego stanu. 

Suwak, są 3 piny. Mam środkowy i lewy podłączony. Off awaryjne wyłączone , On załączone.

Link do komentarza
Share on other sites

Tak siedząc przy piwie (tylko kierunkowskazy):

void loop()
  bool a = digitalRead(AWARYJNE);
  bool l = digitalRead(LEWY) && a;
  bool r = digitalRead(PRAWY) && a;
  int m = millis() & 0x100;
  digitalWrite(LewyKier, l ? 0 : m);
  digitalWrite(PrawyKier, r ? 0 : m);
}
                     

Może być?

Edytowano przez ethanak
  • Lubię! 2
Link do komentarza
Share on other sites

37 minut temu, ethanak napisał:

Tak siedząc przy piwie (tylko kierunkowskazy):

void loop()
  bool a = digitalRead(AWARYJNE);
  bool l = digitalRead(LEWY) && a;
  bool r = digitalRead(PRAWY) && a;
  int m = millis() & 0x100;
  digitalWrite(LewyKier, l ? 0 : m);
  digitalWrite(PrawyKier, r ? 0 : m);
}
                     

Może być?

Może być tylko co jest co? millis to czas? bool?

Link do komentarza
Share on other sites

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.