• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Kierunkowskazy , Stop i Awaryjne.
#10
Kod:
// Przycisk Awaryjny 4
// Przycisk w lewo 7
// Przycisk Stop 6
// Przycisk w prawo 5
// Światł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

byte mrugaLewy = 0, mrugaPrawy = 0, mrugaStop = 0;
unsigned long zegar = 0, zegar1 = 0, zegar2 = 0;

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

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


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

//Awaryjny
   pinMode(przyciskAwaryjny, INPUT_PULLUP);
}

void loop() {
 
   zegar = millis();

// sprawdzanie stanu przycisków
   if (digitalRead(przyciskLewy) == LOW) { //Jeśli przycisk wciśnięty
      mrugaLewy = 1;    // mruga lewy, wyłącza się prawy
      mrugaPrawy = 0;
      digitalWrite(Prawy, LOW); // wyłączamy prawy kierunek
   }
 
   if (digitalRead(przyciskStop) == LOW) { //Jeśli przycisk wciśnięty
      digitalWrite(Stop, HIGH);    // włącza się stop
      mrugaStop = 0;
   }
   
   if (digitalRead(przyciskPrawy) == LOW) { //Jeśli przycisk wciśnięty
      mrugaPrawy = 1;        // mruga prawy, wyłącza się lewy
      mrugaLewy = 0;
      digitalWrite(Lewy, LOW);    // lewy zaczyna od stanu ciemnego
   }
 
   if (digitalRead(przyciskAwaryjny) == LOW) { // Jeśli wciśnięty przycisk awaryjny
      mrugaLewy = 1;    // ma mrugać wszystko
      mrugaPrawy = 1;
      mrugaStop = 1;
      digitalWrite(Lewy, LOW);    // wszystko ma mrugać począwszy od stanu ciemnego
      digitalWrite(Stop, LOW);
      digitalWrite(Prawy, LOW);
   }

// wyłączenie Stop po puszczeniu przycisku i gdy awaryjne wyłączone
   if (!mrugaStop) {    // wyłączenie pinu następuje tylko gdy Stop nie mruga
      digitalWrite(Stop, LOW);
   }

// zestaw czynności sterowanych zegarem 1
   if (zegar - zegar1 >= 1000) {    // interwał 1sek - do migania świateł
      if (mrugaLewy) {digitalWrite(Lewy, !digitalRead(Lewy));}    // zmiana stanu pinów na przeciwne
      if (mrugaPrawy) {digitalWrite(Prawy, !digitalRead(Prawy));}    // czyli mruganie :)
      if (mrugaStop) {digitalWrite(Stop, !digitalRead(Stop));}
      zegar1 = millis(); // wrzucenie do zegar1 aktualnego czasu od uruchomienia
   }
 
// zestaw czynności sterowanych zegarem 2
   if (zegar - zegar2 >= 10000) {
      if (mrugaLewy) {mrugaLewy = 0;}    // w przypadku mrugania po 10sek mruganie ma ustać
      if (mrugaPrawy) {mrugaPrawy = 0;}
      if (mrugaStop) {mrugaStop = 0;}
      zegar2 = millis();
   }                     
Tak na szybko bez zbyt wielu testów. W programie wszystko powinno być na tyle czytelne, że baw się dobrze przy modyfikacjach. Zasadniczo w przypadku takich programów jak Twój zastosowanie delay(10000) to zatrzymanie mikrokontrolera na 10 sek! A w tym czasie możesz np. chcieć skręcić w drugą stronę.

Druga sprawa - ilość LED. Na prawdę potrzebne jest aż tyle? Raz, że pobór prądu, a dwa - oślepienie innych użytkowników drogi. Wiem, że główna zasada to bądź widoczny, ale lampki rowerowe mają po 3 diody i dają radę.
 
Odpowiedź
  


Wiadomości w tym wątku
Kierunkowskazy , Stop i Awaryjne. - przez Rumuru - 25-02-2023, 22:08
RE: Kierunkowskazy , Stop i Awaryjne. - przez MadMrQ - 26-02-2023, 12:00
RE: Kierunkowskazy , Stop i Awaryjne. - przez Rumuru - 26-02-2023, 12:37
RE: Kierunkowskazy , Stop i Awaryjne. - przez Rumuru - 26-02-2023, 13:34
RE: Kierunkowskazy , Stop i Awaryjne. - przez MadMrQ - 27-02-2023, 16:16
RE: Kierunkowskazy , Stop i Awaryjne. - przez Rumuru - 27-02-2023, 18:26
RE: Kierunkowskazy , Stop i Awaryjne. - przez Rumuru - 01-03-2023, 21:42
RE: Kierunkowskazy , Stop i Awaryjne. - przez MadMrQ - 02-03-2023, 20:54

Skocz do:


Przeglądający: 1 gości