Do budowy urządzenia potrzebnych będzie kilka modułów elektronicznych oraz elementy i materiały niezbędne do wykonania postawy i zastępujące obudowę. Najważniejsze z nich to:
- moduł Arduino Uno,
- płytka stykowa,
- dwa moduły joysticka,
- cztery serwosilniki SG90,
- kable do połączenia elementów,
- sztywny karton bądź cienki MDF,
- śrubki, nakrętki itp. elementy połączeniowe.
Joysticki
W pierwszej kolejności zmontujemy kontroler do sterowania zabawką. Składa się on z dwóch modułów joysticków analogowych oraz podstawek, wykonanych z kartonu bądź MDFu. Konstrukcja jest bardzo prosta – należy umieścić moduł joysticka na tekturze i dodać dwa boczne elementy kartonowe tak, jak to zostało pokazane na fotografii 1. Joysticki posłużą do sterowania serwomechanizmami poruszającymi labiryntem.
W następnej kolejności należy połączyć elementy kontrolera, wraz z elektroniką sterującą. Na wspólnej podstawie montowana jest płytka stykowa oraz moduły z joystickami na podstawkach. Zmontowany fragment został pokazany na fotografii 2.
Machanizm
W pierwszej kolejności trzeba przygotować karton – pociąć go na fragmenty, pozwalające na zamontowanie serwomechanizmów. Gotowe moduły z ułożonymi prostopadle serwomechanizmami zostały pokazane na fotografii 3.
Zestawione w ten sposób serwa mogą niezależnie poruszać się w dwóch osiach – X i Y, którym odpowiadają dwa joysticki. Zmontowane mechanizmy umieszczane są na wspólnej podstawie, co zostało pokazane na fotografii 4.
Labirynt
Ostatnim elementem jest labirynt. Jego projekt w dużym stopniu zależny od pomysłowości konstruktora budującego urządzenie. Może być dowolnie skomplikowany i dopasowany do naszych potrzeb i poziomu trudności, przykładowa realizacja została pokazana na fotografii 5.
Po zmontowaniu kartonowego labiryntu należy umieścić go na zmontowanych wcześniej serwomechanizmach tak, aby zapewnić im swobodę poruszania labiryntem.
Połączenia elektryczne
Ostatnim etapem jest podłączenie poszczególnych elementów do sterującego systemem modułu Arduino. W pierwszej kolejności podłączamy serwomechanizmy od S1...S4 do pinów cyfrowych Arduino (należy zapamiętać, która oś jest podłączona, do którego pinu, aby odpowiednio skonfigurować to w programie.
Następnie podłączane są wyjścia joysticków. Oprócz napięcia zasilania, do joysticka podłącza się wejścia analogowe modułu Arduino. Napięcie wyjściowe z modułu jest proporcjonalne do wychylenia joysticka. Cztery wyjścia z joysticków podpinamy do pinów oznaczonych A0, A1, A2 oraz A3 (lub dowolnych innych pinów analogowych, jeśli odpowiednio zmienimy konfigurację w szkicu Arduino).
Oprogramowanie
Kod programu sterującego labiryntem został napisany w Arduino IDE. Jego główne zadanie polega na monitorowaniu pozycji joysticków, podłączonych do wejść analogowych i zgodnie z ich wychyleniem porusza serwomechanizmami. Kod programu zaprezentowano na listingu 1.
#include<Servo.h>
// Inicjalizacja wyjść serw
Servo s1;
Servo s2;
Servo s3;
Servo s4;
// Definicje pinów analogowych
int x1 = 0; // Pin A0
int y1 = 1; // Pin A1
int x2 = 2; // Pin A2
int y2 = 3; // Pin A3
int val;
void setup(){
// Definicje pinów wyjściowych serw
s1.attach(13); // Pin 13
s2.attach(12); // Pin 12
s3.attach(8); // Pin 8
s4.attach(7); // Pin 7
}
void loop(){
// Odczyt wartości z joysticka
val = analogRead(x1);
// Przemapowanie wartości
val = map(val,0,1023,135,45);
// Ruch serwem
s1.write(val);
delay(15);
val = analogRead(y1);
val = map(val,0,1023,135,45);
s2.write(val);
delay(15);
val = analogRead(y1);
val = map(val,0,1023,135,45);
s2.write(val);
delay(15);
val = analogRead(y1);
val = map(val,0,1023,135,45);
s2.write(val);
delay(15);
}
Do obsługi joysticków wykorzystano wejścia analogowe, ponieważ manipulatory te mają wbudowane dwa potencjometry, które sprzęgnięte są z drążkiem joysticka. Poruszając nim, zmienia się położenie suwaków potencjometrów, które są skonfigurowane jako regulowane dzielniki napięcia – na zewnętrzne nóżki potencjometrów podawane jest napięcie i masa, a suwaki są wyjściami dzielników. W ten sposób zmieniając pozycję manipulatora zmienia się napięcia wyjściowe z joysticka, proporcjonalnie do wychylenia.
Każdy joystick ma dwa wyjścia napięciowe – jedno dla osi X, a jedno Y. Napięcia są monitorowane przez przetwornik analogowo-cyfrowy w mikrokontrolerze, a następnie służą do sterowania położeniem serwomechanizmów. Aby przekonwertować pomiar z ADC (w zakresie od 0 do 1023, ponieważ przetwornik ma 10 bitów) na kąt, który ma być ustawiony na serwomechaniźmie (od 45 do 135 stopni) używana jest funkcja map.
Nikodem Czechowski, EP
Źródło: http://bit.ly/3t0yuVQ