Skocz do zawartości

Sterowanie kierunkowskazami do roweru


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ę
  }
}
  

 

(edytowany)

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

Mam pytanie jak  zrobić aby diody stop świeciły się  gdy przycisk jest wciśnięty a nie świecił gdy puszczę przycisk?

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
// 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ę?

  • 2 tygodnie później...

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ę
   
  }
    }



  

 

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?

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.

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.

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

(edytowany)

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

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