Raadi Koodka

Koodka Arduino si loo isticmaalo joystick-ka laba-dhidibeedka XY oo leh shaashadda Nokia 5110 LCD.

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

Nokia 5110_LCD

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-saareTexas Instruments
Nambarka qaybtaL293D
Danabka Logic/IO5 V
Danabka sahayda4.5–36 V
Korontada soo-saarka (kanaal kasta)600 mA
Korontada ugu sarreysa (kanaal kasta)1.2 A
Hagaha soo-noqnoqoshada PWM20 kHz
Heerarka gelinta logic-gaLa jaanqaada TTL
Hoos u dhaca danabka / RDS(on) / saturation1.5 V ugu badnaan
Xadka kulaylka150 °C
BaakadDIP-16
Qoraallo / noocyo kaleSi 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

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

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.

Nokia 5110_LCD back view

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

Sawirro

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
Luqadda: 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);


}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Faylka Loo Baahan Yahay (.h)

Faylka Fritzing