Arduino Joystick PS2 je herní modul, který umožňuje snímat pohyb herní páčky ve dvou směrech. Samotný joystick je tvořen konstrukcí, která obsahuje dva potenciometry o velikosti 10 kiloohmů a taktéž tlačítko pro detekci stisku joysticku. V normálním stavu je tedy potenciometr nastaven přibližně do poloviny svého rozsahu a při pohybu páčky se mění jeho odpor od 0 ohmů až po 10 kiloohmů. V Arduinu pak už jen stačí měřit měnící se napětí díky změně odporu a přepočíst toto napětí na námi zvolené souřadnice.
Pro úspěšné propojení s Arduino deskou stačí zapojit pět propojovacích pinů. Propojíme pin KEY s D2, pin Y s A1, pin X s A0, pin VCC s napájecím napětím 5 V a GND se zemí Arduina. Pro piny KEY, X a Y je možné využít také ostatní piny, ale je nutné použít analogové piny pro X a Y a taktéž volbu provést v programu.
Ukázkový kód na svém začátku obsahuje nastavení propojovacích pinů modulu s joystickem a také vytvoření proměnných pro uložení středových hodnot joysticku. V podprogramu setup() je inicializováno tlačítko jako vstupní s pull-up odporem, nastavena komunikace po sériové lince a následně načteny nulové hodnoty pro obě osy. Nekonečná smyčka loop() obsahuje na svém začátku vytvoření proměnných pro uložení analogových hodnot z obou os a také uložení stavu tlačítka. Poté je provedeno načtení analogových hodnot obou os s odečtením nulové hodnoty následované načtením stavu tlačítka a poté je pomocí funkce map přepočtena naměřená hodnota na rozsah 0 až +100, resp. 0 až -100 pro opačný směr. Díky tomuto přepočtu poté máme v proměnných aktX a aktY uloženy vždy hodnoty v rozsahu -100 až +100. Poté následuje vytištění všech informací po sériové lince, kontrola stisku tlačítka s případným vytištěním informace a volitelná pauza pro přehledný tisk.
// Arduino Joystick PS2
// nastavení propojovacích pinů modulu
#define pinX A0
#define pinY A1
#define pinKey 2
// proměnné pro uložení hodnoty
// středu joysticku
int nulaX, nulaY;
void setup() {
// inicializace tlačítka joysticku
pinMode(pinKey, INPUT_PULLUP);
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// načtení a uložení hodnot pro x a y osy
nulaX = analogRead(pinX);
nulaY = analogRead(pinY);
}
void loop() {
// vytvoření proměnných pro uložení
// hodnot pro osy x, y a stav tlačítka
int aktX, aktY, stavTlac;
// načtení analogových hodnot osy x a y
aktX = analogRead(pinX) - nulaX;
aktY = analogRead(pinY) - nulaY;
// načtení stavu tlačítka
stavTlac = digitalRead(pinKey);
if (aktX > 0) {
aktX = map(aktX, 0, 1023-nulaX, 0, 100);
}
else {
aktX = map(aktX, 0, -nulaX, 0, -100);
}
if (aktY > 0) {
aktY = map(aktY, 0, 1023-nulaY, 0, 100);
}
else {
aktY = map(aktY, 0, -nulaY, 0, -100);
}
// vytištění informací o souřadnicích
// po sériové lince
Serial.print("Souradnice X,Y = ");
Serial.print(aktX);
Serial.print(", ");
Serial.print(aktY);
// kontrola stavu tlačítka, v případě stisku
// vytiskneme informaci po sériové lince
if(stavTlac == LOW) {
Serial.print(" | Tlacitko stisknuto.");
}
Serial.println();
// volitelná pauza pro přehledný tisk
delay(1000);
}
Po nahrání programu do Arduino desky s připojeným joystickem PS2 dostaneme například tento výpis:
Arduino Joystick PS2 je zajímavý herní modul, který lze jednoduše zapojit a dále využívat pro různá herní zařízení či obecně jako ovládací prvek. Velkou výhodou tohoto joysticku je také přítomnost potvrzovacího tlačítka přímo v modulu či přítomnost ovládacího kloboučku přímo v balení, kdy tento klobouček má právě obdobnou velikost jako ten na ovladačích herní konzole Playstation 2 (PS2).
Motorizovaný kulový ventil. Má široké uplatnění v různých průmyslových a obytných instalacích. Může být integrován do automatických systémů řízení, kde je možné ovládat průtok dálkově nebo automatizovaně podle předem nastavených podmínek.
Motorizované kulové vently s obvodem CR01, CR02, CR03 nebo CR04 je poměrně jednoduché po elektrické stránce správně zapojit. U ventilu s obvodem CR05 je tomu ale trochu jinak - ventil si sám nehlídá krajní polohy otevření, nebo zavření. Z toho důvodu vznikl tento článek, ukazující některé výhody, použití a především správné zapojení ventilu s obvodem CR05.