• 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
Skrzyżowanie z przejściami dla pieszych.
#1
Kod:
 void setup() {
 
 //Lewa strona i prawa
 
 pinMode(2, OUTPUT);pinMode(7, OUTPUT);//Dioda czerwona
 pinMode(3, OUTPUT);pinMode(8, OUTPUT); //Dioda pomarańczowa
 pinMode(4, OUTPUT);pinMode(9, OUTPUT); //Dioda zielona

 pinMode(5, OUTPUT);pinMode(10, OUTPUT);//Dioda czerwona
 pinMode(6, OUTPUT);pinMode (11, OUTPUT); //Dioda zielona

 pinMode(0, INPUT_PULLUP);pinMode(1, INPUT_PULLUP); //Przyciski
 
 digitalWrite(2, LOW); digitalWrite(7, LOW); //Dioda czerwona
 digitalWrite(3, LOW); digitalWrite(8, LOW); //Dioda pomarańczowa
 digitalWrite(4, LOW); digitalWrite(9, LOW); //Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona
 
}

void loop() {
 
 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(5000);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(2000);

 //Miganie diod pomarańczowej i zielonej

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(90, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, LOW);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, LOW);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, LOW);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, LOW);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, LOW);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);
   
 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(5000);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(2000);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 }  
Napisałem taki kod i działa mi wszystko oprócz przycisków.Wypróbowane na płytce 830 stykowej(zmieściło się tylko 15 diod Led z dwoma przyciskami) Mam też pytanie jak napisać  ten kod w pętli aby wykonywał się 5 razy? 
Kod:
//Miganie diod pomarańczowej i zielonej

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);
 
Odpowiedź
#2
Cytat:Napisałem taki kod i działa mi wszystko oprócz przycisków
Przyciski zapewne nie działają bo używasz delay() zamiast millis(). Nie ma ich w programie to trudno mieć pewność.


Cytat:Mam też pytanie jak napisać  ten kod w pętli aby wykonywał się 5 razy?

Od tego jest instrukcja 'for'.
Proponuję przerobić dowolny kurs arduino.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
(02-02-2017, 08:41)namok napisał(a):
Cytat:Napisałem taki kod i działa mi wszystko oprócz przycisków
Przyciski zapewne nie działają bo używasz delay() zamiast millis(). Nie ma ich w programie to trudno mieć pewność.


Cytat:Mam też pytanie jak napisać  ten kod w pętli aby wykonywał się 5 razy?

Od tego jest instrukcja 'for'.
Proponuję przerobić dowolny kurs arduino.

Dziękuję, zrobiłem tak. Teraz tylko sterowanie przejściami dla pieszych przyciskami. Myśle czy nie kupić Arduino Mega 2560 startet kit. Gdzieś widziałem klona za 105 zł. Warto go kupić? Czy lepiej oryginał? Podobno na Attiny2313 przyciski lepiej zrobić na przerwaniach niż na delay()?Jakiś przykład zastosowania millis()?Czytałem że na Arduino Uno i Leonardo interrupt można zrobić tylko na digital 2 i 3. A na na Attiny2313 ?

Kod:
  void setup() {
 
 //Lewa strona i prawa
 
 pinMode(2, OUTPUT);pinMode(7, OUTPUT);//Dioda czerwona
 pinMode(3, OUTPUT);pinMode(8, OUTPUT); //Dioda pomarańczowa
 pinMode(4, OUTPUT);pinMode(9, OUTPUT); //Dioda zielona

 pinMode(5, OUTPUT);pinMode(10, OUTPUT);//Dioda czerwona
 pinMode(6, OUTPUT);pinMode (11, OUTPUT); //Dioda zielona

 pinMode(0, INPUT_PULLUP);pinMode(1, INPUT_PULLUP); //Przyciski
 
 digitalWrite(2, LOW); digitalWrite(7, LOW); //Dioda czerwona
 digitalWrite(3, LOW); digitalWrite(8, LOW); //Dioda pomarańczowa
 digitalWrite(4, LOW); digitalWrite(9, LOW); //Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona
 
}

void loop() {
 
 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(8000);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(2000);

 //Miganie diod pomarańczowej i zielonej

 for(int i=0;i<5;i++)
 
 {
   
 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, HIGH);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, HIGH); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 digitalWrite(2, HIGH);digitalWrite(7, LOW);//Dioda czerwona
 digitalWrite(3, LOW);digitalWrite(8, LOW);//Dioda pomarańczowa
 digitalWrite(4, LOW);digitalWrite(9, HIGH);//Dioda zielona

 digitalWrite(5, LOW); digitalWrite(10, HIGH); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);

 }
 
 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(8000);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(2000);

 //Miganie diod pomarańczowej i zielonej
 
 for(int i=0;i<5;i++)
 
 {
 
 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, HIGH);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, HIGH);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, HIGH); //Dioda zielona

 delay(500);

 digitalWrite(7, HIGH);digitalWrite(2, LOW);//Dioda czerwona
 digitalWrite(8, LOW);digitalWrite(3, LOW);//Dioda pomarańczowa
 digitalWrite(9, LOW);digitalWrite(4, LOW);//Dioda zielona

 digitalWrite(5, HIGH); digitalWrite(10, LOW); //Dioda czerwona
 digitalWrite(6, LOW); digitalWrite(11, LOW); //Dioda zielona

 delay(500);
 
 }
 
 }  
 
Odpowiedź
#4
Skup się na jednym problemie, rozwiąż go do końca i dopiero wtedy bierz się za następny.
'for' zastosowałeś ale delay() zostało. W takim przypadku przyciski możesz zrobić tylko na przerwaniach ale nie wejść tylko timera. Powinna wystarczyć biblioteka TimerOne.
W przykładach masz 'BlinkWithoutDelay'(Przykłady->02.Digital). Przejrzyj, zastanów się jak dziła. Może pozbedziesz się delay(). Pomocny może być symulator UnoArduSim: https://www.sites.google.com/site/unoardusim/home
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#5
(02-02-2017, 20:29)namok napisał(a): Skup się na jednym problemie, rozwiąż go do końca i dopiero wtedy bierz się za następny.
'for' zastosowałeś ale delay() zostało. W takim przypadku przyciski możesz zrobić tylko na przerwaniach ale nie wejść tylko timera. Powinna wystarczyć biblioteka TimerOne.
W przykładach masz 'BlinkWithoutDelay'(Przykłady->02.Digital). Przejrzyj, zastanów się jak dziła. Może pozbedziesz się delay(). Pomocny może być symulator UnoArduSim: https://www.sites.google.com/site/unoardusim/home

Pobrałem symulator UnoArduSim v 1.7.1. Przy próbie uruchomienia wykrywa wirusa. Muszę  wyłączyć antywirusa. Można gdzieś do niego znaleźć spolszczenie albo przynajmniej opis po polsku?Albo inny po polsku?
 
Odpowiedź
#6
O spolszczenu nie słyszałem. Wszystkie symulatory które widziałem były "po angielsku".
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#7
(03-02-2017, 00:36)namok napisał(a): O spolszczenu nie słyszałem.  Wszystkie symulatory które widziałem były "po angielsku".





Najszybciej uczę się na przykładach. Teraz wiem jak zastosować instrukcję for.
Kod:
(for(int i=0;i<5;i++)
 
 {
// Zawartość pętli
})
Pętla jest wykonywana(int i=0;i<5; ) od 0 do 4 czyli 5 razy, i++ zwiększa o 1. Tak? W przypadku i=5 od 0 do 5 czyli 6 razy? Mam pytanie czy w dolnym kodzie wszystko dobrze?Uprościłem kod do mijanki aby się nauczyć obsługi przycisków. Jak zrobić żeby diody świeciły się tak czerwona w pierwszym a zielona w drugim przez cały czas a dopiero po naciśnięciu przycisku załączyła się sekwencja zmiany na zielona pierwszy i czerwona drugi sygnalizator?Niby mi działa ale wszystko nie tak. 
Kod:
 // Pierwszy sygnalizator
 
 int led0 = 2;// Dioda czerwona
 int led1 = 3;// Dioda pomarańczowa
 int led2 = 4;// Dioda zielona

  // Drugi sygnalizator
 
 int led3 = 7;// Dioda czerwona
 int led4 = 8;// Dioda pomarańczowa
 int led5 = 9;// Dioda zielona
 
 
 int switch0 = 0;    //  przycisk na pin 0
 int switch1 = 1;    //  przycisk na pin 0
 
void setup()
{
     pinMode(led0, OUTPUT);   //pin 2 jako wyjście
     pinMode(led1, OUTPUT);   //pin 3 jako wyjście
     pinMode(led2, OUTPUT);   //pin 4 jako wyjście
     pinMode(led3, OUTPUT);   //pin 7 jako wyjście
     pinMode(led4, OUTPUT);   //pin 8 jako wyjście
     pinMode(led5, OUTPUT);   //pin 9 jako wyjście
     
     pinMode(switch0, INPUT);  // pin 0 jako wejście
}
void loop()
{  
  if (digitalRead(switch0) == LOW)  // sprawdzanie czy na pinie 0 jest stan wysoki
 
//Miganie diod pomarańczowej i zielonej

 for(int i=0;i<5;i++)
 
 {
    {
  digitalWrite(led0, HIGH); // włącz diodę
  digitalWrite(led1, HIGH); // włącz diodę
  digitalWrite(led2, LOW);  // włącz diodę
  digitalWrite(led3, LOW);  // włącz diodę
  digitalWrite(led4, LOW);  // włącz diodę
  digitalWrite(led5, HIGH); // włącz diodę
 
  delay(1000);
 
  digitalWrite(led0, HIGH);// wyłącz diodę
  digitalWrite(led1, LOW); // wyłącz diodę
  digitalWrite(led2, LOW); // wyłącz diodę
  digitalWrite(led3, LOW); // wyłącz diodę
  digitalWrite(led4, LOW); // wyłącz diodę
  digitalWrite(led5, LOW); // wyłącz diodę
 
  delay(1000);

  // Drugi sygnalizator

  digitalWrite(led0, LOW);  // włącz diodę
  digitalWrite(led1, LOW);  // włącz diodę
  digitalWrite(led2, HIGH);  // włącz diodę
  digitalWrite(led3, HIGH);  // włącz diodę
  digitalWrite(led4, LOW);  // włącz diodę
  digitalWrite(led5, LOW);  // włącz diodę

  delay (5000);

  digitalWrite(led0, LOW);  // włącz diodę
  digitalWrite(led1, LOW);  // włącz diodę
  digitalWrite(led2, HIGH);  // włącz diodę
  digitalWrite(led3, HIGH);  // włącz diodę
  digitalWrite(led4, HIGH);  // włącz diodę
  digitalWrite(led5, LOW);  // włącz diodę

  delay (2000);

if (digitalRead(switch1) == LOW)  // sprawdzanie czy na pinie 1 jest stan wysoki

    //Miganie diod pomarańczowej i zielonej

 for(int i=0;i<5;i++)
 
 {
     {

  digitalWrite(led0, HIGH); // wyłącz diodę
  digitalWrite(led1, LOW); // wyłącz diodę
  digitalWrite(led2, LOW); // wyłącz diodę
  digitalWrite(led3, LOW); // wyłącz diodę
  digitalWrite(led4, LOW); // wyłącz diodę
  digitalWrite(led5, LOW); // wyłącz diodę
     
  delay(1000);
 
  digitalWrite(led0, HIGH);  // włącz diodę
  digitalWrite(led1, HIGH);  // włącz diodę
  digitalWrite(led2, LOW);  // włącz diodę
  digitalWrite(led3, LOW);  // włącz diodę
  digitalWrite(led4, LOW);  // włącz diodę
  digitalWrite(led5, HIGH);  // włącz diodę
 
  delay(1000);
   }
  }    
 }
}
}
 
Odpowiedź
#8
Nie jest dobrze bo prawdopodobnie brakuje klamer '{}' przy instrukcjach if. 
Jak dajesz komentarz do operacji to powinien być zgodny z operacją a u Ciebie jest np:
Kod PHP:
               digitalWrite(czerwonaHIGH); // włącz diodę
 
               digitalWrite(pomaranczHIGH); // włącz diodę
 
               digitalWrite(zielonaLOW);  // włącz diodę
 
               digitalWrite(czerwona_2LOW);  // włącz diodę
 
               digitalWrite(pomarancz_2LOW);  // włącz diodę
 
               digitalWrite(zielona_2HIGH); // włącz diodę 
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#9
(03-02-2017, 21:24)namok napisał(a): Nie jest dobrze bo prawdopodobnie brakuje klamer '{}' przy instrukcjach if. 
Jak dajesz komentarz do operacji to powinien być zgodny z operacją a u Ciebie jest np:
Kod PHP:
               digitalWrite(czerwonaHIGH); // włącz diodę
 
               digitalWrite(pomaranczHIGH); // włącz diodę
 
               digitalWrite(zielonaLOW);  // włącz diodę
 
               digitalWrite(czerwona_2LOW);  // włącz diodę
 
               digitalWrite(pomarancz_2LOW);  // włącz diodę
 
               digitalWrite(zielona_2HIGH); // włącz diodę 

Zrobiłem w ten sposób.Ale to nie to.Miga dioda pomarańczowa i zielona jak jest czerwona z lewej. Jak przełączy czerwoną na prawo to diody pomarańczowa i zielona nie migają tylko przełącza na czerwoną z lewej strony i znowu tu nie migają diody pomarańczowa i zielona a z prawej migają. I tak w koło. Jak zrobić żeby zmianę świateł załączać 
przyciskami?To znaczy świeci się czerwona na lewym a na prawym zielona a po naciśnięciu przycisku włączała by się sekwencja zmiany.Czerwona,czerwona i pomarańczowa ,miganie pomarańczowej i zielonej,zmiana świateł na zielona,czerwona. 


Kod:
 // Pierwszy sygnalizator
 
 int led0 = 2;// Dioda czerwona
 int led1 = 3;// Dioda pomarańczowa
 int led2 = 4;// Dioda zielona

  // Drugi sygnalizator
 
 int led3 = 7;// Dioda czerwona
 int led4 = 8;// Dioda pomarańczowa
 int led5 = 9;// Dioda zielona
   
 int switch0 = 0;    //  przycisk na pin 0
 int switch1 = 1;    //  przycisk na pin 1
 
void setup()

  {
   
     pinMode(led0, OUTPUT);   //pin 2 jako wyjście diody czerwonej
     pinMode(led1, OUTPUT);   //pin 3 jako wyjście diody pomarańczowej
     pinMode(led2, OUTPUT);   //pin 4 jako wyjście diody zielonej
     pinMode(led3, OUTPUT);   //pin 7 jako wyjście diody czerwonej
     pinMode(led4, OUTPUT);   //pin 8 jako wyjście diody pomarańczowej
     pinMode(led5, OUTPUT);   //pin 9 jako wyjście diody zielonej
     
     pinMode(switch0, INPUT);  // pin 0 jako wejście
     pinMode(switch1, INPUT);  // pin 1 jako wejście
     
  }
 
void loop()

  {  
       
   //Miganie diod pomarańczowej i zielonej
     
  digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, LOW);  // włącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
       
  delay(5000);
 
  digitalWrite(led0, HIGH);digitalWrite(led3, LOW);// wyłącz diodę czerwoną
  digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // wyłącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // wyłącz diodę włącz diodę zieloną
     
  delay(2000);
 
  for(int i=0;i<5;i++)
 
 {
   
  digitalWrite(led0, HIGH);digitalWrite(led3, LOW);// wyłącz diodę czerwoną
  digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // wyłącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // wyłącz diodę włącz diodę zieloną

  delay(500);

  digitalWrite(led0, HIGH);digitalWrite(led3, LOW);// wyłącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, LOW); // wyłącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5, LOW); // wyłącz diodę włącz diodę zieloną

  delay(500);

   }  
   
    // Drugi sygnalizator

  digitalWrite(led0, LOW);digitalWrite(led3, HIGH);  // włącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, LOW);  // włącz diodę pomarańczową
  digitalWrite(led2, HIGH);digitalWrite(led5, LOW);  // włącz diodę zieloną
   
  delay (5000);

  digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, HIGH);  // włącz diodę pomarańczową
  digitalWrite(led2, HIGH);digitalWrite(led5, LOW);  // włącz diodę zieloną
   
  delay (2000);

    //Miganie diod pomarańczowej i zielonej
   
  digitalWrite(led0, HIGH);digitalWrite(led3,LOW); // wyłącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, LOW); // wyłącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5,HIGH); // wyłącz diodę zieloną
         
  delay(5000);
 
  digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
  digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczowa
  digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
     
  delay(2000);
 
  for(int i=0;i<5;i++)
 
 {
 
  digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // wyłącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // wyłącz diodę pomarańczową
  digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // wyłącz diodę włącz diodę zieloną

  delay(500);
 
  digitalWrite(led0, LOW);digitalWrite(led3,HIGH);// wyłącz diodę czerwoną
  digitalWrite(led1, LOW);digitalWrite(led4, LOW); // wyłącz diodę pomarańczową
  digitalWrite(led2, LOW);digitalWrite(led5, LOW); // wyłącz diodę włącz diodę zieloną

  delay(500);
     
}
}
 
Odpowiedź
#10
Nie ma takiej możliwości a by jednocześnie działały dwie sekwencje z użyciem delay().
W momencie wywołania delay() program "stoi w miejscu" do momentu aż minie zadany czas.
W momencie wywołania delay() nie działają przyciski czytane w pętli loop().
Możesz to zrobić z użyciem millis() ale musisz dobrze przemyśleć algorytm. Poczytaj: https://techniczny.wordpress.com/2012/04...w-arduino/
Oczywiście są biblioteki pomagające w wielowątkowości np: http://www.jarzebski.pl/arduino/bibliote...duino.html.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości