Kod Ara

Çift eksenli XY joystick'i Nokia 5110 LCD ekranla kullanmak için Arduino kodu

Ç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).

Nokia 5110_LCD

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ı

ÜreticiTexas 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önergesi20 kHz
Giriş mantık eşikleriTTL uyumlu
Gerilim düşümü / RDS(on) / doyum1.5 V maks.
Termal sınırlar150 °C
PaketDIP-16
Notlar / varyantlarMotor 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ı

Arduino wiring for Nokia 5110 LCD  with Joystick
Arduino wiring for Nokia 5110 LCD with Joystick

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.

Nokia 5110_LCD back view

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

Görseller

Nokia 5110_LCD back view
Nokia 5110_LCD back view
Arduino wiring for Nokia 5110 LCD  with Joystick
Arduino wiring for Nokia 5110 LCD with Joystick
Nokia 5110_LCD
Nokia 5110_LCD
81-Arduino code: Dual-axis joystick with Nokia 5110 screen to display dots
Dil: C++
/*
 * 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

Kaynaklar ve referanslar

Henüz kaynak yok.

Dosyalar📁

Gerekli Dosya (.h)

Fritzing Dosyası