Koodka Arduino si loo isticmaalo joystick-ka laba-dhidibeedka XY oo leh shaashadda Nokia 5110 LCD.
Tilmaantan waxay ku hagaysaa habka loo isticmaalo joystick-ka laba-dhidibka ah ee XY si loo xakameeyo dhibic lagu muujiyey shaashadda Nokia 5110 LCD. Mashruucu wuxuu ku lug leeyahay akhrinta booska joystick-ka iyo cusboonaysiinta shaashadda si waafaqsan. Markaad dhammayso tilmaantan, waxaad yeelan doontaa qaab shaqeeya halkaasoo dhaqaaqista joystick-ku ay beddesho booska dhibicda shaashadda (fiidiyowga 00:00).

Mashruucan, waxaad isticmaali doontaa wax soo saarka analog-ga ah ee joystick-ka si aad u go'aamiso booskiisa dhidibyada X iyo Y. Akhrinta joystick-ka waxaa loo qaabayn doonaa cabbirrada shaashadda LCD, taasoo u oggolaanaysa dhaqaaq siman oo dhibicda ah. Intaa waxaa dheer, waxaad baran doontaa sida loo akhriyo gelinta kala-beddelka joystick-ka, kaas oo loo isticmaali karo isdhexgal dheeri ah.
Qalabka La Sharaxay
Qaybaha aasaasiga ah ee mashruucan waxaa ka mid ah Arduino-ga, joystick-ka laba-dhidibka ah ee XY, iyo shaashadda Nokia 5110 LCD. Arduino-gu wuxuu u shaqeeyaa sida kontoroolka, isagoo farsameeya gelinta joystick-ka oo xakameeya shaashadda LCD.
Joystick-ku wuxuu caadi ahaan leeyahay laba potentiometer—mid X-dhidibka iyo mid Y-dhidibka. Markaad dhaqaajiso joystick-ka, potentiometer-yadani waxay beddelaan iska caabinta, iyagoo u soo dira heerar danab kala duwan oo ah gelinta analog-ga ee Arduino-ga. Shaashadda Nokia 5110 LCD waxaa lagu xakameeyaa isgaarsiinta SPI, taasoo u oggolaanaysa wareejinta xogta iyo cusboonaysiinta shaashadda si hufan.
Faahfaahinta Xogta
| Soo-saare | Texas Instruments |
|---|---|
| Nambarka qaybta | L293D |
| Danabka Logic/IO | 5 V |
| Danabka sahayda | 4.5–36 V |
| Korontada soo-saarka (kanaal kasta) | 600 mA |
| Korontada ugu sarreysa (kanaal kasta) | 1.2 A |
| Hagaha soo-noqnoqoshada PWM | 20 kHz |
| Heerarka gelinta logic-ga | La jaanqaada TTL |
| Hoos u dhaca danabka / RDS(on) / saturation | 1.5 V ugu badnaan |
| Xadka kulaylka | 150 °C |
| Baakad | DIP-16 |
| Qoraallo / noocyo kale | Si weyn loogu isticmaalo codsiyada darawalnimada matoorrada |
- Hubi inaad si fiican u qaboojiso kulaylka si shaqo joogto ah.
- Isticmaal capacitors-ka decoupling si sahayda korontadu u degganaato.
- Hubi qiimaynta danabka si aad uga fogaato waxyeelada qaybaha.
- Ka digtoonow signalka PWM; hubi inay ku jiraan xadka la cayimay.
- Hubi isku xirka fiilooyinka si aad uga fogaato wareegyada gaaban.
Tilmaamaha Fiilooyinka

Si aad ugu xirto joystick-ka iyo shaashadda LCD ee Arduino-ga, waxaad ku bilaabaysaa isku xirka binka VCC ee joystick-ka ee 5V-ga Arduino-ga iyo binka GND ee GND-ga Arduino-ga. Ku xir soo-saarka X-dhidibka ee joystick-ka binka analog-ga ah A0 iyo soo-saarka Y-dhidibka binka analog-ga ah A1. Soo-saarka kala-beddelka joystick-ka waa in lagu xiraa binka dijitaalka ah 2.
Shaashadda Nokia 5110 LCD, ku xir biinanka soo socda: VCC ee 5V, GND ee GND, SCE ee binka 7, RST ee binka 6, D/C ee binka 5, DN(MOSI) ee binka 11, iyo SCLK ee binka 13. Ugu dambayntii, ku xir binka LED-ka resistor 330 Ohm ah ee binka 9 si loo xakameeyo iftiinka dambe.
Tusaalooyinka Koodka & Sharaxaad
Faylka setup-ka, waxaanu bilaabaynaa isgaarsiinta serial-ka iyo LCD-ga. Amarka lcdBegin() wuxuu dejiyaa biinanka oo bilaabaa shaashadda. Kala-duwanaanshaha waxaa loo dejiyaa si loo helo muuqaal fiican.
void setup() {
Serial.begin(9600);
lcdBegin();
setContrast(40);
delay(1000);
clearDisplay(BLACK);
updateDisplay();
}
Tani waxay bilaabaysaa qaybaha lagama maarmaanka ah ee mashruuca, iyadoo hubinaysa in LCD-ga uu diyaar u yahay inuu muujiyo macluumaadka.

Faylka loop-ka, waxaanu akhrinaynaa booska joystick-ka oo waxaanu u qaabaynaynaa cabbirrada shaashadda. Booska dhibicda waxaa lagu cusboonaysiiyaa iyadoo lagu salaynayo qiimaha X iyo Y ee joystick-ka.
void loop() {
int x = analogRead(A0); // akhri booska x ee joystick-ka
int y = analogRead(A1); // akhri booska y ee joystick-ka
int xPos = map(x, 0, 1023, 0, screenWidth); // qaabee x ee shaashadda
int yPos = map(y, 0, 1023, 0, screenHeight); // qaabee y ee shaashadda
setCircle(xPos, yPos, thickness, BLACK, 2); // muuji dhibicda
updateDisplay();
delay(10);
}
Koodkani wuxuu si joogto ah u cusboonaysiiyaa booska dhibicda ee LCD-ga iyadoo lagu salaynayo dhaqaaqista joystick-ka.
Muuujin / Waxa Lagu Filan Karaa
Markaad koronto siiso wareegga, LCD-ga wuxuu muujin doonaa dhibic. Dhaqaaqista joystick-ka waxay dib u dejin doontaa dhibicda waqti-qaar ah iyadoo loo eegayo dhaqaaqyada X iyo Y ee joystick-ka. Haddii kala-beddelka joystick-ka la riixo, waxay kicin kartaa hawlo dheeri ah oo aad hirgelin karto. Ka warqab gelinta sabeynaysa haddii joystick-ku aanu dhexda ku jirin, taasoo keeni karta dhaqaaqyo dhibic oo lama filaan ah (fiidiyowga 01:30).
Waqtiyada Fiidiyowga
- 00:00 - Hordhaca mashruuca
- 01:30 - Sharaxaadda fiilooyinka
- 02:45 - Sharaxaadda koodka
- 04:10 - Muujinta shaqada
/*
* 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);
}
Waad u baahan tahay
-
Amaazon
-
AmaazonPurchase XY joystick from Amazonamzn.to
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Faylka Loo Baahan Yahay (.h)
-
faylka madaxa ee robojax-nokia5110.h ee Arduino
robojax-nokia5110.zip0.01 MB -
LCD_Functions. file for Nokia
LCD_Functions.h0.02 MB
Faylka Fritzing
-
Nokia 5110 LCD
Nokia_5110_LCD.fzpz0.03 MB -
Joystick Madow KY-023
Black Joystick KY-023.fzpz0.02 MB