Ардуино кодын қос осьті XY джойстик пен Nokia 5110 LCD экранымен пайдалану үшін
Бұл оқу құралы сізді Nokia 5110 LCD экранында көрсетілетін нүктені басқару үшін қос осьті XY джойстикті пайдалану процесі арқылы бағыттайды. Жоба джойстиктің орнын оқуды және дисплейді сәйкесінше жаңартуды қамтиды. Осы нұсқаулықтың соңында сізде джойстикті жылжыту экрандағы нүктенің орнын өзгертетін (00:00 бейнеде) функционалды қондырғы болады.

Бұл жобада сіз джойстиктің X және Y осьтеріндегі орнын анықтау үшін оның аналогтық шығыстарын пайдаланасыз. Джойстиктен алынған көрсеткіштер LCD экранның өлшемдеріне салыстырылады, бұл нүктенің тегіс қозғалуына мүмкіндік береді. Сонымен қатар, сіз одан әрі өзара әрекеттесу үшін пайдалануға болатын джойстиктің қосқыш кірісін оқуды үйренесіз.
Аппараттық құрал түсіндірмесі
Бұл жобаның негізгі компоненттеріне Arduino, қос осьті XY джойстик және Nokia 5110 LCD экраны кіреді. Arduino микроконтроллер ретінде қызмет етеді, джойстиктен кірістерді өңдейді және LCD дисплейді басқарады.
Джойстикте әдетте екі потенциометр болады — біреуі X осі үшін, екіншісі Y осі үшін. Джойстикті жылжытқанда, бұл потенциометрлер кедергіні өзгертеді, Arduino-ның аналогтық кіріс түйреуіштеріне әртүрлі кернеу деңгейлерін жібереді. Nokia 5110 LCD экраны SPI байланысы арқылы басқарылады, бұл деректерді тиімді тасымалдауға және дисплейді жаңартуға мүмкіндік береді.
Деректер парағының мәліметтері
| Өндіруші | Texas Instruments |
|---|---|
| Бөлшек нөмірі | L293D |
| Логика/IO кернеуі | 5 В |
| Қоректендіру кернеуі | 4.5–36 В |
| Шығыс тогы (арнаға) | 600 мА |
| Ең жоғары ток (арнаға) | 1.2 А |
| PWM жиілігі бойынша нұсқау | 20 кГц |
| Кіріс логикалық шектері | TTL үйлесімді |
| Кернеу төмендеуі / RDS(on) / қанығу | 1.5 В макс |
| Жылулық шектер | 150 °C |
| Қаптама | DIP-16 |
| Ескертулер / нұсқалар | Мотор жетек қолданбаларында кеңінен қолданылады |
- Үздіксіз жұмыс үшін тиісті жылуды таратуды қамтамасыз етіңіз.
- Тұрақты қоректендіру үшін разрядтаушы конденсаторларды пайдаланыңыз.
- Компоненттерді зақымдамау үшін кернеу рейтингтерін тексеріңіз.
- PWM сигналдарымен абай болыңыз; олардың көрсетілген шектерде екеніне көз жеткізіңіз.
- Қысқа тұйықталуды болдырмау үшін сым қосылымдарын тексеріңіз.
Сым қосу нұсқаулары

Джойстик пен LCD экранды Arduino-ға қосу үшін алдымен джойстиктің VCC түйреуішін Arduino-ның 5V және GND түйреуішін Arduino-ның GND-ге қосыңыз. Джойстиктің 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);
}
Сізге қажет болуы мүмкін нәрселер
-
Амазонка
-
АмазонкаPurchase XY joystick from Amazonamzn.to
Ресурстар мен сілтемелер
Әлі ресурстар жоқ.
Файлдар📁
Талап етілетін файл (.h)
-
Arduino үшін robojax-nokia5110.h тақырыптық файлы
robojax-nokia5110.zip0.01 MB -
Nokia үшін LCD_Functions файлы
LCD_Functions.h0.02 MB
Fritzing файлы
-
Nokia 5110 LCD
Nokia_5110_LCD.fzpz0.03 MB -
Қара Джойстик KY-023
Black Joystick KY-023.fzpz0.02 MB