Witajcie
Od niedawna poznaję Arduino i w tym celu zakupiłem Arduino Mega.
Mianowicie wpadł mi na pomysł wykonanie ruchomej strzelnicy.
Zabawa dla syna na ćwiczenie szybkości reakcji, strzelanie z gumowych nabojów z Nerfa.
Urządzenia:
+ Arduino Mega
+ komputer gdzie wpisuje parametry Opóźnienia STARTU w sekundach , opóźnienia i czasie trwania w milisekundach załączania kanałów,
+ do Arduino są podłączone przekażniki i dalej podpięte są elektrozawory sterujące siłownikami pneumatycznymi ( wyskakujące tarcze lub wyrzutnia małych przedmiotów)
Zasada działania:
- w komputerze wpisuje parametry w milisekundach, wgrywam kod do Arduino,
-Na kabelku wciskam przycisk START.
-wykonuje odliczanie (tu ustawiam zakres od 0 do 30 sekund) + miga dioda led odliczająca
- do momentu odliczania Arduino wykonuje akcje na każdych kanałach,
- po wykonaniu akcji Arduino zatrzymuje się.
Przykład działania jak na rysunkach:
Znam się na elektronice, mam dostęp do pneumatyki, ale niestety programowanie jeszcze czarna magia
Wklejam kod którego zrobiłem z rożnych tutoriali, jak narazie Arduino nie reaguje na przycisk (podłączony GND + PIN 2)
oraz podłączona płytka z przekaźnikami (narazie PINy 13,12,11 do testów). Nie wiem co robię źle w kodzie. Dziękuję
Od niedawna poznaję Arduino i w tym celu zakupiłem Arduino Mega.
Mianowicie wpadł mi na pomysł wykonanie ruchomej strzelnicy.
Zabawa dla syna na ćwiczenie szybkości reakcji, strzelanie z gumowych nabojów z Nerfa.
Urządzenia:
+ Arduino Mega
+ komputer gdzie wpisuje parametry Opóźnienia STARTU w sekundach , opóźnienia i czasie trwania w milisekundach załączania kanałów,
+ do Arduino są podłączone przekażniki i dalej podpięte są elektrozawory sterujące siłownikami pneumatycznymi ( wyskakujące tarcze lub wyrzutnia małych przedmiotów)
Zasada działania:
- w komputerze wpisuje parametry w milisekundach, wgrywam kod do Arduino,
-Na kabelku wciskam przycisk START.
-wykonuje odliczanie (tu ustawiam zakres od 0 do 30 sekund) + miga dioda led odliczająca
- do momentu odliczania Arduino wykonuje akcje na każdych kanałach,
- po wykonaniu akcji Arduino zatrzymuje się.
Przykład działania jak na rysunkach:
Znam się na elektronice, mam dostęp do pneumatyki, ale niestety programowanie jeszcze czarna magia
Wklejam kod którego zrobiłem z rożnych tutoriali, jak narazie Arduino nie reaguje na przycisk (podłączony GND + PIN 2)
oraz podłączona płytka z przekaźnikami (narazie PINy 13,12,11 do testów). Nie wiem co robię źle w kodzie. Dziękuję
Kod:
//opoznienie i czas trwania w ms dla kanału 1
const int opoznienie1 = 2000;
const int czas1 = 50000;
//opoznienie i czas trwania w ms dla kanału 2
const int opoznienie2 = 4000;
const int czas2 = 3000;
//opoznienie i czas trwania w ms dla kanału 3
const int opoznienie3 = 7000;
const int czas3 = 1000;
//pin 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(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(buttonPin, INPUT);
//itd.
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
last_millis = millis();
}
if( millis() >= (last_millis + opoznienie1 + czas1))
{
//tutaj wyłączamy urządzenia kanału 1
digitalWrite(13, HIGH);
}
else if( millis() >= (last_millis + opoznienie1))
{
//tutaj uruchamiamy urządzenia dla kanału 1
digitalWrite(13, LOW);
}
if( millis() >= (last_millis + opoznienie2 + czas2))
{
//tutaj wyłączamy urządzenia kanału 2
digitalWrite(12, LOW);
}
else if( millis() >= (last_millis + opoznienie2))
{
//tutaj uruchamiamy urządzenia dla kanału 2
digitalWrite(12, HIGH);
}
if( millis() >= (last_millis + opoznienie3 + czas3))
{
//tutaj wyłączamy urządzenia kanału 3
digitalWrite(11, LOW);
}
else if( millis() >= (last_millis + opoznienie3))
{
//tutaj uruchamiamy urządzenia dla kanału 3
digitalWrite(11, HIGH);
}
//analogicznie tworzymy stałe const int dla pozostałych kanałów, oraz kopiujemy powyższe instrukcje warunkowe i zmieniamy zmienne
}