Ардуино код за користење на двоосен XY џојстик со Nokia 5110 LCD екран
Овој туторијал ќе ве води низ процесот на користење на двоосен XY џојстик за контролирање на точка прикажана на Nokia 5110 LCD екран. Проектот вклучува читање на позицијата на џојстикот и ажурирање на екранот соодветно. До крајот на овој водич, ќе имате функционална поставка каде движењето на џојстикот ја менува позицијата на точката на екранот (во видео на 00:00).

Во овој проект, ќе ги користите аналогните излези на џојстикот за да ја одредите неговата позиција на X и Y оските. Читањата од џојстикот ќе бидат мапирани на димензиите на LCD екранот, овозможувајќи мазно движење на точката. Дополнително, ќе научите како да го читате влезот на прекинувачот на џојстикот, кој може да се користи за понатамошни интеракции.
Објаснување на хардверот
Примарните компоненти за овој проект вклучуваат Arduino, двоосен XY џојстик и Nokia 5110 LCD екран. Arduino служи како микроконтролер, обработувајќи ги влезовите од џојстикот и контролирајќи го LCD екранот.
Џојстикот обично има два потенциометри — еден за X-оската и еден за Y-оската. Како што го движите џојстикот, овие потенциометри ја менуваат отпорноста, испраќајќи различни нивоа на напон до аналогните влезни пинови на Arduino. Nokia 5110 LCD екранот се контролира преку SPI комуникација, што овозможува ефикасен пренос на податоци и ажурирање на екранот.
Детали од табелата со податоци
| Производител | Texas Instruments |
|---|---|
| Број на дел | L293D |
| Логички/IO напон | 5 V |
| Напон на напојување | 4.5–36 V |
| Излезна струја (по канал) | 600 mA |
| Врвна струја (по канал) | 1.2 A |
| Насоки за PWM фреквенција | 20 kHz |
| Прагови на влезна логика | Компатибилно со TTL |
| Пад на напон / RDS(on) / заситување | 1.5 V макс. |
| Термички граници | 150 °C |
| Пакет | DIP-16 |
| Белешки / варијанти | Широко користен во апликации за моторни драјвери |
- Обезбедете соодветно ладење за континуирана работа.
- Користете раздвојувачки кондензатори за стабилно напојување.
- Проверете ги напонските оценки за да избегнете оштетување на компонентите.
- Бидете внимателни со PWM сигналите; осигурете се дека се во наведените граници.
- Проверете ги жичените врски за да избегнете кратки споеви.
Инструкции за жичање

За да го жичате џојстикот и LCD екранот на Arduino, започнете со поврзување на VCC пинот на џојстикот на 5V на Arduino и GND пинот на GND на Arduino. Поврзете го X-оскиниот излез на џојстикот на аналогниот пин A0 и Y-оскиниот излез на аналогниот пин A1. Излезот на прекинувачот на џојстикот треба да биде поврзан на дигиталниот пин 2.
За Nokia 5110 LCD, поврзете ги следниве пинови: VCC на 5V, GND на GND, SCE на пин 7, RST на пин 6, D/C на пин 5, DN(MOSI) на пин 11 и SCLK на пин 13. На крај, поврзете го LED пинот преку отпорник од 330 Ом на пин 9 за контрола на позадинското осветлување.
Примери на код и објаснување
Во функцијата за поставување, ја иницијализираме сериската комуникација и LCD екранот. Командата lcdBegin() ги поставува пиновите и го иницијализира екранот. Контрастот е поставен за оптимална видливост.
void setup() {
Serial.begin(9600);
lcdBegin();
setContrast(40);
delay(1000);
clearDisplay(BLACK);
updateDisplay();
}
Ова ги иницијализира потребните компоненти за проектот, осигурувајќи дека LCD екранот е подготвен да прикажува информации.

Во функцијата за јамка, ја читаме позицијата на џојстикот и ја мапираме на димензиите на екранот. Позицијата на точката се ажурира врз основа на X и Y вредностите на џојстикот.
void loop() {
int x = analogRead(A0); // читај ја x позицијата на џојстикот
int y = analogRead(A1); // читај ја y позицијата на џојстикот
int xPos = map(x, 0, 1023, 0, screenWidth); // мапирај x на екранот
int yPos = map(y, 0, 1023, 0, screenHeight); // мапирај y на екранот
setCircle(xPos, yPos, thickness, BLACK, 2); // прикажи ја точката
updateDisplay();
delay(10);
}
Овој код континуирано ја ажурира позицијата на точката на LCD екранот врз основа на движењето на џојстикот.
Демонстрација / Што да очекувате
Кога ќе го вклучите колото, LCD екранот ќе прикаже точка. Движењето на џојстикот ќе ја репозиционира точката во реално време според X и Y движењата на џојстикот. Ако прекинувачот на џојстикот е притиснат, може да активира дополнителни функционалности што може да ги имплементирате. Бидете свесни за потенцијални лебдечки влезови ако џојстикот не е центриран, што може да доведе до неочекувани движења на точката (во видео на 01:30).
Временски ознаки на видеото
- 00:00 - Вовед во проектот
- 01:30 - Објаснување на жичањето
- 02:45 - Објаснување на кодот
- 04:10 - Демонстрација на функционалноста
/*
* 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);
}
Работи што можеби ќе ви требаат
-
Amazon
-
AmazonPurchase XY joystick from Amazonamzn.to
Ресурси и референци
Сè уште нема ресурси.
Датотеки📁
Потребна датотека (.h)
-
robojax-nokia5110.h header file for Arduino
robojax-nokia5110.zip0.01 MB -
LCD_Functions. file for Nokia
LCD_Functions.h0.02 MB
Fritzing датотека
-
Nokia 5110 LCD
Nokia_5110_LCD.fzpz0.03 MB -
Black Joystick KY-023
Black Joystick KY-023.fzpz0.02 MB