Çift eksenli XY joystick'i Nokia 5110 LCD ekranla kullanmak için Arduino kodu
Bu eğitim, çift eksenli XY joystick kullanarak Nokia 5110 LCD ekranda görüntülenen bir noktayı kontrol etme sürecinde size rehberlik edecektir. Proje, joystick'in konumunu okumayı ve ekranı buna göre güncellemeyi içerir. Bu rehberin sonunda, joystick'i hareket ettirmenin ekrandaki bir noktanın konumunu değiştirdiği işlevsel bir kuruluma sahip olacaksınız (videoda 00:00'da).

Bu projede, joystick'in X ve Y eksenlerindeki konumunu belirlemek için analog çıkışlarını kullanacaksınız. Joystick'ten okunan değerler, LCD ekranın boyutlarına eşlenecek ve noktanın yumuşak hareketini sağlayacaktır. Ayrıca, daha fazla etkileşim için kullanılabilecek joystick'in anahtar girişini nasıl okuyacağınızı da öğreneceksiniz.
Donanım Açıklaması
Bu projenin ana bileşenleri Arduino, çift eksenli XY joystick ve Nokia 5110 LCD ekrandır. Arduino, joystick'ten gelen girdileri işleyen ve LCD ekranı kontrol eden mikrodenetleyici görevi görür.
Joystick genellikle biri X ekseni, diğeri Y ekseni için olmak üzere iki potansiyometreye sahiptir. Joystick'i hareket ettirdikçe bu potansiyometreler direnci değiştirir ve Arduino'nun analog giriş pinlerine değişen voltaj seviyeleri gönderir. Nokia 5110 LCD ekran, verimli veri aktarımı ve ekran güncellemeleri sağlayan SPI iletişimi ile kontrol edilir.
Veri Sayfası Detayları
| Üretici | Texas Instruments |
|---|---|
| Parça numarası | L293D |
| Mantık/G/Ç voltajı | 5 V |
| Besleme voltajı | 4.5–36 V |
| Çıkış akımı (kanal başına) | 600 mA |
| Tepe akımı (kanal başına) | 1.2 A |
| PWM frekansı yönergesi | 20 kHz |
| Giriş mantık eşikleri | TTL uyumlu |
| Gerilim düşümü / RDS(on) / doyum | 1.5 V maks. |
| Termal sınırlar | 150 °C |
| Paket | DIP-16 |
| Notlar / varyantlar | Motor sürücü uygulamalarında yaygın olarak kullanılır |
- Sürekli çalışma için uygun ısı emici kullanımını sağlayın.
- Stabil güç kaynağı için dekuplaj kapasitörleri kullanın.
- Bileşenlere zarar vermemek için voltaj değerlerini kontrol edin.
- PWM sinyallerine dikkat edin; belirtilen sınırlar içinde olduklarından emin olun.
- Kısa devreleri önlemek için kablo bağlantılarını doğrulayın.
Bağlantı Talimatları

Joystick ve LCD ekranı Arduino'ya bağlamak için, joystick'in VCC pinini Arduino'nun 5V'sine ve GND pinini Arduino'nun GND'sine bağlayarak başlayın. Joystick'in X ekseni çıkışını analog pin A0'a ve Y ekseni çıkışını analog pin A1'e bağlayın. Joystick'in anahtar çıkışı dijital pin 2'ye bağlanmalıdır.
Nokia 5110 LCD için şu pinleri bağlayın: VCC'yi 5V'ye, GND'yi GND'ye, SCE'yi pin 7'ye, RST'yi pin 6'ya, D/C'yi pin 5'e, DN(MOSI) pin 11'e ve SCLK'yı pin 13'e bağlayın. Son olarak, arka ışık kontrolü için LED pinini 330 Ohm'luk bir direnç üzerinden pin 9'a bağlayın.
Kod Örnekleri ve Açıklaması
Kurulum fonksiyonunda, seri iletişimi ve LCD'yi başlatıyoruz. lcdBegin() komutu pinleri ayarlar ve ekranı başlatır. Kontrast, en iyi görünürlük için ayarlanır.
void setup() {
Serial.begin(9600);
lcdBegin();
setContrast(40);
delay(1000);
clearDisplay(BLACK);
updateDisplay();
}
Bu, proje için gerekli bileşenleri başlatarak LCD'nin bilgi görüntülemeye hazır olmasını sağlar.

Döngü fonksiyonunda, joystick'in konumunu okuyoruz ve ekran boyutlarına eşliyoruz. Noktanın konumu, joystick'in X ve Y değerlerine göre güncellenir.
void loop() {
int x = analogRead(A0); // joystick'in x konumunu oku
int y = analogRead(A1); // joystick'in y konumunu oku
int xPos = map(x, 0, 1023, 0, screenWidth); // x'i ekrana eşle
int yPos = map(y, 0, 1023, 0, screenHeight); // y'yi ekrana eşle
setCircle(xPos, yPos, thickness, BLACK, 2); // noktayı göster
updateDisplay();
delay(10);
}
Bu kod, joystick'in hareketine göre LCD'deki noktanın konumunu sürekli olarak günceller.
Gösterim / Beklentiler
Devreye güç verdiğinizde, LCD bir nokta gösterecektir. Joystick'i hareket ettirmek, noktayı joystick'in X ve Y hareketlerine göre gerçek zamanlı olarak yeniden konumlandıracaktır. Joystick anahtarına basılırsa, uygulayabileceğiniz ek işlevleri tetikleyebilir. Joystick ortalanmamışsa, beklenmeyen nokta hareketlerine yol açabilecek potansiyel yüzen girişlere dikkat edin (videoda 01:30'da).
Video Zaman Damgaları
- 00:00 - Projeye giriş
- 01:30 - Bağlantı açıklaması
- 02:45 - Kod açıklaması
- 04:10 - İşlevselliğin gösterimi
/*
* This is Arduino code to use a dual-axis XY joystick with a Nokia 5110 screen to move a dot on the screen.
* It also reads the switch.
* Other Arduino libraries and videos: https://robojax.com
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/zqDZybR5JSE
* This code is offered "as is" without any warranty.
* If you are sharing this code, you must keep this copyright note.
*/
/*
/* Nokia 5100 LCD Example Code with Added Joystick by Robojax
Graphics driver and PCD8544 interface code for SparkFun's
84x48 Graphic LCD.
https://www.sparkfun.com/products/10168
Original source code:
https://github.com/sparkfun/GraphicLCD_Nokia_5110
This stuff could all be put into a library, but we wanted to
leave it all in one sketch to keep it as transparent as possible.
Hardware: (Note most of these pins can be swapped)
Graphic LCD Pin ---------- Arduino Pin
1-VCC ---------------- 5V
2-GND ---------------- GND
3-SCE ---------------- 7
4-RST ---------------- 6
5-D/C ---------------- 5
6-DN(MOSI) ---------------- 11
7-SCLK ---------------- 13
8-LED - 330 Ohm res -- 9
The SCLK, DN(MOSI), must remain where they are, but the other
pins can be swapped. The LED pin should remain a PWM-capable
pin. Don't forget to stick a current-limiting resistor in line
between the LCD's LED pin and Arduino pin 9!
Modified by Ahmad S. for Robojax.com
on Mar 11, 2018 at 20:49 at Ajax, Ontario, Canada
*/
#include <SPI.h>
#include "LCD_Functions.h"
#define sw 2 // pint 2 is used for joystick switch input
#define screenWidth 83 // NOkia screen width
#define screenHeight 47 // Nokia screen height
int thickness =1;// the thickness of the dot
void setup()
{
// Robojax Dual Axis joystick with Nokia 5110 LCD screen project
Serial.begin(9600);
lcdBegin(); // This will setup our pins, and initialize the LCD
//updateDisplay(); // with displayMap untouched, SFE logo
setContrast(40); // Good values range from 40-60
delay(1000);
clearDisplay(BLACK);
updateDisplay();
}
void loop()
{
clearDisplay(WHITE);
// Robojax Dual Axis joystick with Nokia 5110 LCD screen project
int x = analogRead(A0);// read the x position of joystick
int y = analogRead(A1); // read the y position of joystick
int xPos = map(x, 0, 1023,0,screenWidth);// map or translate the x of joystick to x of screen
int yPos = map(y, 0, 1023,0,screenHeight); // map or translate the y of joystick to y of screen
int sStat = digitalRead(sw);//read the switch from pin 2
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);// Robojax prints y
// Robojax Dual Axis joystick with Nokia 5110 LCD screen project
//setCircle(xPos, yPos, thicness, BLACK, 2);
// xPos is the position of x
// yPos is the position of y
// thickness
setCircle(xPos, yPos, thickness, BLACK, 2);// display the dot on the screen
updateDisplay();
delay(10);
}
İhtiyacın olabileceğini düşünüyor
-
Amazon
-
AmazonPurchase XY joystick from Amazonamzn.to
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Gerekli Dosya (.h)
-
robojax-nokia5110.h header file for Arduino
robojax-nokia5110.zip0.01 MB -
LCD_Functions. file for Nokia
LCD_Functions.h0.02 MB
Fritzing Dosyası
-
Nokia 5110 LCD
Nokia_5110_LCD.fzpz0.03 MB -
Black Joystick KY-023
Black Joystick KY-023.fzpz0.02 MB