- Erforderliches Material
- Grundlegendes zum Joystick-Modul:
- Schaltplan:
- Programmierung für die Schnittstelle des Joysticks:
- Simulationsansicht:
- Hardware und Arbeitsweise:
Eingabegeräte spielen bei Elektronikprojekten eine wichtige Rolle. Diese Eingabegeräte helfen dem Benutzer, mit der digitalen Welt zu interagieren. Ein Eingabegerät kann so einfach wie ein Druckknopf oder so kompliziert wie ein Touchscreen sein. Sie hängt von den Anforderungen des Projekts ab. In diesem Tutorial lernen wir, wie man einen Joystick mit unserem PIC-Mikrocontroller verbindet. Ein Joystick ist eine coole Möglichkeit, mit der digitalen Welt zu interagieren, und fast jeder hätte einen im Jugendalter zum Spielen von Videospielen verwendet.
Ein Joystick scheint ein ausgeklügeltes Gerät zu sein, aber es ist eigentlich nur eine Kombination aus zwei Potentiometern und einem Druckknopf. Daher ist es auch sehr einfach, eine Schnittstelle zu einer MCU herzustellen, vorausgesetzt, wir wissen, wie die ADC-Funktion dieser MCU verwendet wird. Wir haben bereits gelernt, wie man ADC mit PIC verwendet, daher wäre dies nur eine Lösung für die Anbindung des Joysticks. Personen, die noch keine Erfahrung mit pickit haben, wird empfohlen, das obige ADC-Projekt sowie das LED-Blinksequenzprojekt zu lernen, um das Verständnis des Projekts zu erleichtern.
Erforderliches Material
- PicKit 3 zum Programmieren
- Joy Stick Modul
- PIC16F877A IC
- 40 - Pin IC Halter
- Perf Board
- 20 MHz Crystal OSC
- Bergstik-Stifte
- 220 Ohm Widerstand
- 5-LEDs jeder Farbe
- 1 Lötsatz
- IC 7805
- 12V Adapter
- Kabel anschließen
- Steckbrett
Grundlegendes zum Joystick-Modul:
Joysticks sind in verschiedenen Formen und Größen erhältlich. Ein typisches Joystick-Modul ist in der folgenden Abbildung dargestellt. Ein Joystick ist nichts anderes als ein paar Potentiometer und ein Druckknopf, die über einer intelligenten mechanischen Anordnung montiert sind. Das Potentiometer wird verwendet, um die X- und Y-Bewegung des Joysticks zu verfolgen, und die Taste wird verwendet, um zu erfassen, ob der Joystick gedrückt wird. Beide Potentiometer geben eine analoge Spannung aus, die von der Position des Joysticks abhängt. Und wir können die Bewegungsrichtung ermitteln, indem wir diese Spannungsänderungen mit einem Mikrocontroller interpretieren. Zuvor haben wir Joystick mit AVR, Joystick mit Arduino und Raspberry Pi verbunden.
Bevor Sie einen Sensor oder ein Modul mit einem Mikrocontroller verbinden, ist es wichtig zu wissen, wie er funktioniert. Hier hat unser Joystick 5 Ausgangspins, von denen zwei für die Stromversorgung und drei für Daten sind. Das Modul sollte mit + 5V versorgt werden. Die Datenpins werden als VRX, VRY und SW bezeichnet.
Der Begriff "VRX" steht für variable Spannung auf der X-Achse und der Begriff "VRY" steht für variable Spannung auf der Y-Achse und "SW" steht für Schalter.
Wenn wir also den Joystick nach links oder rechts bewegen, ändert sich der Spannungswert am VRX und wenn wir ihn nach oben oder unten variieren, ändert sich der VRY. In ähnlicher Weise variieren sowohl VRX als auch VRY, wenn wir es diagonal bewegen. Wenn wir den Schalter drücken, wird der SW-Pin mit Masse verbunden. Die folgende Abbildung hilft Ihnen dabei, die Ausgabewerte besser zu verstehen
Schaltplan:
Nachdem wir nun wissen, wie der Joy-Stick funktioniert, können wir zu dem Schluss kommen, dass wir zwei ADC-Pins und einen digitalen Eingangspin benötigen, um alle drei Datenpins des Joystick-Moduls zu lesen. Das vollständige Schaltbild ist in der Abbildung unten dargestellt
Wie Sie im Schaltplan sehen können, haben wir anstelle des Joysticks zwei Potentiometer RV1 und RV3 als analoge Spannungseingänge und einen Logikeingang für den Schalter verwendet. Sie können den violett geschriebenen Beschriftungen folgen, um den Pinsnamen zu entsprechen, und Ihre Verbindungen entsprechend herstellen.
Beachten Sie, dass die analogen Pins mit den Kanälen A0 und A1 verbunden sind und der digitale Schalter mit RB0 verbunden ist. Wir werden auch 5 LED-Leuchten als Ausgang haben, so dass wir eine leuchten können, basierend auf der Richtung, in die der Joystick bewegt wird. Diese Ausgangspins sind also von RC0 bis RC4 mit PORT C verbunden. Sobald wir unseren Schaltplan geschwenkt haben, können wir mit der Programmierung fortfahren, dann das Programm auf dieser Schaltung simulieren, die Schaltung auf einem Steckbrett aufbauen und dann das Programm auf die Hardware hochladen. Um Ihnen eine Vorstellung von meiner Hardware zu geben, nachdem Sie die obigen Verbindungen hergestellt haben, wird unten gezeigt
Programmierung für die Schnittstelle des Joysticks:
Das Programm zur Schnittstelle des Joysticks mit dem PIC ist einfach und unkompliziert. Wir wissen bereits, an welche Pins der Joystick angeschlossen ist und welche Funktion sie haben. Daher müssen wir einfach die analoge Spannung von den Pins ablesen und die Ausgangs-LEDs entsprechend steuern.
Das vollständige Programm dazu finden Sie am Ende dieses Dokuments. Zur Erläuterung der Dinge zerlege ich den Code in kleine, aussagekräftige Ausschnitte.
Wie immer wird das Programm durch Setzen der Konfigurationsbits gestartet, wir werden nicht viel über das Setzen von Konfigurationsbits diskutieren, da wir es bereits im LED-Blinkprojekt gelernt haben und es auch für dieses Projekt dasselbe ist. Sobald die Konfigurationsbits gesetzt sind, müssen wir die ADC-Funktionen für die Verwendung des ADC-Moduls in unserem PIC definieren. Diese Funktion wurde auch im Tutorial zur Verwendung von ADC mit PIC gelernt. Danach müssen wir deklarieren, welche Pins Eingänge und welche Ausgangspins sind. Hier ist die LED mit PORTC verbunden, so dass sie Ausgangspins sind und der Switch-Pin des Joysticks ein digitaler Eingangspin ist. Daher verwenden wir die folgenden Zeilen, um dasselbe zu deklarieren:
// ***** E / A-Konfiguration **** // TRISC = 0X00; // PORT C wird als Ausgangsport verwendet PORTC = 0X00; // Alle Pins niedrig halten TRISB0 = 1; // RB0 wird als Eingabe verwendet // *** Ende der E / A-Konfiguration ** ///
Die ADC-Pins müssen nicht als Eingangspins definiert werden, da sie bei Verwendung der ADC-Funktion als Eingangspins zugewiesen werden. Sobald die Pins definiert sind, können wir die zuvor definierte Funktion ADC_initialize aufrufen . Diese Funktion stellt die erforderlichen ADC-Register ein und bereitet das ADC-Modul vor.
ADC_Initialize (); // Konfigurieren Sie das ADC-Modul
Jetzt treten wir in unsere unendlichen während Schleife. Innerhalb dieser Schleife müssen wir die Werte von VRX, VRY und SW überwachen und basierend auf den Werten den Ausgang der LED steuern. Wir können den Überwachungsprozess beginnen, indem wir die analoge Spannung von VRX und VRY anhand der folgenden Zeilen ablesen
int joy_X = (ADC_Read (0)); // Lies die X-Achse des Joysticks int joy_Y = (ADC_Read (1)); // Lesen Sie die Y-Achse des Joysticks
Diese Zeile speichert den Wert von VRX und VRY in der Variablen joy_X bzw. joy_Y . Die Funktion ADC_Read (0) bedeutet, dass wir den ADC-Wert von Kanal 0 lesen, der Pin A0 ist. Wir haben VRX und VRY an Pin A0 und A1 angeschlossen und lesen daher von 0 und 1.
Wenn Sie sich an unser ADC-Tutorial erinnern können, wissen wir, dass wir die analoge Spannung lesen. Der PIC, der ein digitales Gerät ist, liest sie von 0 bis 1023. Dieser Wert hängt von der Position des Joystick-Moduls ab. Sie können das Beschriftungsdiagramm oben verwenden, um zu erfahren, welchen Wert Sie für jede Position des Joysticks erwarten können.
Hier habe ich den Grenzwert von 200 als Untergrenze und einen Wert von 800 als Obergrenze verwendet. Sie können alles verwenden, was Sie wollen. Verwenden wir also diese Werte und beginnen die LEDs entsprechend zu leuchten. Dazu müssen wir den Wert von joy_X mit den vordefinierten Werten unter Verwendung einer IF-Schleife vergleichen und die LED-Pins wie unten gezeigt hoch oder niedrig machen. Die Kommentarzeilen helfen Ihnen, besser zu verstehen
if (joy_X <200) // Joy ist aufgestiegen {RC0 = 0; RC1 = 1;} // Leuchte obere LED sonst wenn (joy_X> 800) // Joy nach unten bewegt {RC0 = 1; RC1 = 0;} // Leuchte untere LED sonst // Wenn nicht bewegt {RC0 = 0; RC1 = 0;} // Beide LEDs ausschalten
Dasselbe können wir auch für den Wert der Y-Achse tun. Wir müssen nur die Variable joy_X durch joy_Y ersetzen und auch die nächsten beiden LED-Pins wie unten gezeigt steuern. Beachten Sie, dass wir beide LED-Leuchten ausschalten, wenn der Joystick nicht bewegt wird.
if (joy_Y <200) // Joy hat sich nach links bewegt {RC2 = 0; RC3 = 1;} // LED links leuchten sonst wenn (joy_Y> 800) // Freude nach rechts bewegt {RC2 = 1; RC3 = 0;} // Leuchtet rechts LED sonst // Wenn nicht bewegt {RC2 = 0; RC3 = 0;} // Beide LEDs ausschalten
Jetzt haben wir noch eine letzte Sache zu erledigen, wir müssen den Schalter überprüfen, wenn er gedrückt wird. Der Schalterstift ist mit RB0 verbunden, sodass wir die if-Schleife wieder verwenden und prüfen können, ob sie eingeschaltet ist. Wenn es gedrückt wird, schalten wir die LED aus, um anzuzeigen, dass der Schalter gedrückt wurde.
if (RB0 == 1) // Wenn Joy gedrückt wird RC4 = 1; // Mittlere LED leuchten sonst RC4 = 0; // mittlere LED AUS
Simulationsansicht:
Das gesamte Projekt kann mit der Proteus-Software simuliert werden. Nachdem Sie das Programm geschrieben haben, kompilieren Sie den Code und verknüpfen Sie den Hex-Code der Simulation mit der Schaltung. Dann sollten Sie feststellen, dass die LED-Leuchten entsprechend der Position der Potentiometer leuchten. Die Simulation ist unten dargestellt:
Hardware und Arbeitsweise:
Nachdem wir den Code mithilfe der Simulation überprüft haben, können wir die Schaltung auf einem Steckbrett aufbauen. Wenn Sie den PIC-Tutorials gefolgt sind, haben Sie bemerkt, dass wir dieselbe Perf-Karte verwenden, auf die die PIC- und 7805-Schaltung gelötet ist. Wenn Sie auch daran interessiert sind, eine zu erstellen, damit Sie sie für alle Ihre PIC-Projekte verwenden können, löten Sie die Schaltung auf eine Perf-Platine. Oder Sie können die komplette Schaltung auch auf einem Steckbrett aufbauen. Sobald die Hardware fertig ist, sieht es so aus.
Laden Sie nun den Code mit dem PICkit3 auf den PIC-Mikrocontroller hoch. Sie können das LED-Blink-Projekt als Anleitung verwenden. Sie sollten bemerken, dass das gelbe Licht hoch geht, sobald das Programm hochgeladen wird. Verwenden Sie nun den Joystick und variieren Sie den Knopf. Für jede Richtung des Joysticks werden Sie feststellen, dass die entsprechende LED hoch geht. Wenn der Schalter in der Mitte gedrückt wird, erlischt die LED in der Mitte.
Diese Arbeit ist nur ein Beispiel, Sie können viele interessante Projekte darauf aufbauen. Die vollständige Arbeitsweise des Projekts finden Sie auch in dem Video am Ende dieser Seite.
Ich hoffe, Sie haben das Projekt verstanden und es genossen, es zu erstellen. Wenn Sie Probleme damit haben, können Sie es gerne im Kommentarbereich unten posten oder in die Foren schreiben, um Hilfe zu erhalten.