Skocz do zawartości

Ruchome tarcze strzelnicze z udziałem Arduino Mega


greg801

Pomocna odpowiedź

Witajcie

Uczę i poznaję możliwości Arduino.

Wpadłem na pomysł zbudowania ruchomych tarcz strzelniczych dla synka z użyciem pistoletów na piankowe naboje.

Sterowanie za pomocą Arduino + przekażniki + elektrozawory pneumatyczne + siłowniki.

Stworzyłem jak narazie kod gdzie na każdy kanał podaję parametry czasu opóźnienia i czasu trwania załączenia. Uruchamianie następuje po wciśnięciu przycisku na kablu. Akcja zaczyna z odliczaniem np po 5 sekundach (z regulacja od 0 do 30 sekund w kodzie) po wciśnieciu przycisku.

Potrzebuję dopisać kod z udziałem diody LED mrugający co sekundę odliczanie i zaraz przed rozpoczęciem akcji pali sie np na 3 sekundy.

Niestety programowanie jak dla mnie czarna magia i dlatego zwracam o pomoc.

Dziękuje

 

 

Oto kod:

//opoznienie i czas trwania w ms dla kanału 1
unsigned long opoznienie1 = 1500;
unsigned long czas1 = 50;

//opoznienie i czas trwania w ms dla kanału 2
unsigned long opoznienie2 = 2000;
unsigned long czas2 = 100;

//opoznienie i czas trwania w ms dla kanału 3
unsigned long opoznienie3 = 1500;
unsigned long czas3 = 150;

//opoznienie i czas trwania w ms dla kanału 4
unsigned long opoznienie4 = 3000;
unsigned long czas4 = 200;

//opoznienie i czas trwania w ms dla kanału 5
unsigned long opoznienie5 = 3500;
unsigned long czas5 = 250;

//opoznienie i czas trwania w ms dla kanału 6
unsigned long opoznienie6 = 4000;
unsigned long czas6 = 300;

//opoznienie i czas trwania w ms dla kanału 7
unsigned long opoznienie7 = 4500;
unsigned long czas7 = 350;

//opoznienie i czas trwania w ms dla kanału 8
unsigned long opoznienie8 = 5000;
unsigned long czas8 = 400;

// cyfrowy, pod który podłączony jest przycisk START
const int buttonPin = 2; 
int buttonState = 0;

unsigned long int last_millis;

void setup() 
{
  //tutaj wpisujemy instrukcje pinMode dla wszystkich kanałów
  
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(buttonPin, INPUT);

   
  //itd.
}

void loop() 
{
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) 
  {
    delay(5000);
    last_millis = millis();   
  }

//KANAL 1

  if( millis() >= (last_millis + opoznienie1 + czas1))
  {
    //tutaj wyłączamy urządzenia kanału 1
    digitalWrite(12, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie1))
  {
    //tutaj uruchamiamy urządzenia dla kanału 1
    digitalWrite(12, LOW);
  }

//KANAL 2
  
  if( millis() >= (last_millis + opoznienie2 + czas2))
  {
    //tutaj wyłączamy urządzenia kanału 2
    digitalWrite(11, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie2))
  {
    //tutaj uruchamiamy urządzenia dla kanału 2
    digitalWrite(11, LOW);
  }


//KANAL 3
  
  if( millis() >= (last_millis + opoznienie3 + czas3))
  {
    //tutaj wyłączamy urządzenia kanału 3
    digitalWrite(10, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie3))
  {
    //tutaj uruchamiamy urządzenia dla kanału 3
    digitalWrite(10, LOW);
  }

//KANAL 4

  if( millis() >= (last_millis + opoznienie4 + czas4))
  {
    //tutaj wyłączamy urządzenia kanału 4
    digitalWrite(9, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie4))
  {
    //tutaj uruchamiamy urządzenia dla kanału 4
    digitalWrite(9, LOW);
  }


//KANAL 5

  if( millis() >= (last_millis + opoznienie5 + czas5))
  {
    //tutaj wyłączamy urządzenia kanału 5
    digitalWrite(8, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie5))
  {
    //tutaj uruchamiamy urządzenia dla kanału 5
    digitalWrite(8, LOW);
  }

//KANAL 6
      if( millis() >= (last_millis + opoznienie6 + czas6))
  {
    //tutaj wyłączamy urządzenia kanału 6
    digitalWrite(7, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie6))
  {
    //tutaj uruchamiamy urządzenia dla kanału 6
    digitalWrite(7, LOW);
  }

  
//KANAL 7
      if( millis() >= (last_millis + opoznienie7 + czas7))
  {
    //tutaj wyłączamy urządzenia kanału 7
    digitalWrite(6, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie7))
  {
    //tutaj uruchamiamy urządzenia dla kanału 7
    digitalWrite(6, LOW);
  }

  //KANAL 8
      if( millis() >= (last_millis + opoznienie8 + czas8))
  {
    //tutaj wyłączamy urządzenia kanału 8
    digitalWrite(5, HIGH);
  }
  else if( millis() >= (last_millis + opoznienie8))
  {
    //tutaj uruchamiamy urządzenia dla kanału 8
    digitalWrite(5, LOW);
  }
          
          }

 

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.