greg801 Napisano Wrzesień 17, 2020 Udostępnij Napisano Wrzesień 17, 2020 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); } } Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!