Luka Code

Mpiko ya Arduino ya kosalela joystick ya ba-axes mibale (XY) elongo na ekran ya LCD Nokia 5110.

Mpiko ya Arduino ya kosalela joystick ya ba-axes mibale (XY) elongo na ekran ya LCD Nokia 5110.

Lithu oyo ekotondimbola yo na nzela ya kosalela joystick ya ba-axes mibale (dual-axis XY) mpo na kokamba moto oyo ezali komonana na ekran ya Nokia 5110 LCD. Projɛ́ oyo ezali kosangisa kotanga esika joystick ezali mpe kobongola ekran kolanda yango. Na suka ya lithu oyo, okozala na ebongiseli oyo esali malamu epai wapi kotambwisa joystick ekobongola esika ya moto na ekran (na vidéo na 00:00).

Nokia 5110_LCD

Na projɛ́ oyo, okosalela ba sorties analogiques ya joystick mpo na koyeba esika na yango na ba axes X mpe Y. Ba lectures oyo ewuti na joystick ekokende na bamɛtrɛ ya ekran ya LCD, mpo na kotinda moto na yango na nzela ya malamu. Na libanda ya yango, okoyekola mpe kotanga entrée ya commutateur ya joystick, oyo ekoki kosalelama mpo na ba interactions mosusu.

Biloko oyo ezali na Hardware

Ba composants ya liboso mpo na projɛ́ oyo ezali Arduino, joystick ya ba-axes mibale (dual-axis XY), mpe ekran ya Nokia 5110 LCD. Arduino ezali mosala ya contrôleur, oyo ezali kosala ba entrées oyo ewuti na joystick mpe kokamba ekran ya LCD.

Joystick yango ezali na ba potentiomètres mibale—moko mpo na axe X mpe mosusu mpo na axe Y. Ntango okotambwisa joystick, ba pots oyo babongolaka résistance, batindaka ba niveaux ya voltage oyo ebongwanaka na ba pins ya entrée analogique ya Arduino. Ekran ya Nokia 5110 LCD ekambamaka na nzela ya communication SPI, oyo epesaka possibilité ya kopesa ba données mpe kobongola ekran na nzela ya malamu.

Ba Détails ya Datasheet

FabricantTexas Instruments
Numéro ya pièceL293D
Voltage ya logique/IO5 V
Voltage ya alimentation4.5–36 V
Courant de sortie (na canal)600 mA
Courant de pointe (na canal)1.2 A
Guidance ya fréquence PWM20 kHz
Seuils ya logique d'entréeCompatible na TTL
Chute ya voltage / RDS(on) / saturation1.5 V max
Limites thermiques150 °C
PaquetDIP-16
Notes / variantesEsalelamaka mingi na ba applications ya moteur driver

  • Kokanisa ete okosala refroidissement malamu mpo na fonctionnement ya libela.
  • Salela ba condensateurs de découplage mpo na alimentation ya nguya oyo ezali ngala.
  • Vérifier ba ratings ya voltage mpo na kokitisa likama ya kobebisa ba composants.
  • Kokanisa na ba signaux PWM; kotala ete bazali na kati ya ba limites oyo esengeli.
  • Vérifier ba connexions ya ba fils mpo na kokitisa likama ya ba courts-circuits.

Ba Instructions ya Câblage

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

Mpo na kokangisa joystick mpe ekran ya LCD na Arduino, banda na kokangisa pin ya VCC ya joystick na 5V ya Arduino mpe pin ya GND na GND ya Arduino. Kokangisa sortie ya axe X ya joystick na pin analogique A0 mpe sortie ya axe Y na pin analogique A1. Sortie ya commutateur ya joystick esengeli kokangama na pin digitale 2.

Mpo na Nokia 5110 LCD, kokangisa ba pins oyo: VCC na 5V, GND na GND, SCE na pin 7, RST na pin 6, D/C na pin 5, DN(MOSI) na pin 11, mpe SCLK na pin 13. Na suka, kokangisa pin ya LED na nzela ya résistor ya 330 Ohm na pin 9 mpo na contrôle ya backlight.

Ba Exemples ya Code & Explication

Na fonction ya setup, tokomence communication série mpe LCD. Commande lcdBegin() esaleli ba pins mpe ebandisi ekran. Contraste esalemi mpo na visibility ya malamu.

void setup() {
  Serial.begin(9600);
  lcdBegin(); 
  setContrast(40); 
  delay(1000);
  clearDisplay(BLACK);
  updateDisplay();
}

Oyo ebandisi ba composants ya nécessaires mpo na projɛ́, mpo na kotala ete ekran ya LCD ezali prêt na kopesa information.

Nokia 5110_LCD back view

Na fonction ya loop, tokomba kotanga esika ya joystick mpe tokopesa yango na bamɛtrɛ ya ekran. Esika ya moto ebongwanaka kolanda ba valeurs ya X mpe Y ya joystick.

void loop() {
  int x = analogRead(A0); // tanga esika ya x ya joystick
  int y = analogRead(A1); // tanga esika ya y ya joystick
  int xPos = map(x, 0, 1023, 0, screenWidth); // pesa x na ekran
  int yPos = map(y, 0, 1023, 0, screenHeight); // pesa y na ekran
  setCircle(xPos, yPos, thickness, BLACK, 2); // monisa moto
  updateDisplay();
  delay(10);
}

Code oyo ebongolaka esika ya moto na ekran ya LCD kolanda mouvement ya joystick.

Démonstration / Nini Okomona

Ntango okofungola circuit, ekran ya LCD ekomonisa moto. Kotambwisa joystick ekobongola esika ya moto na temps réel kolanda ba mouvements ya X mpe Y ya joystick. Soki commutateur ya joystick epresé, ekoki kotinda ba fonctionnalités mosusu oyo okoki kosala. Keba na ba entrées oyo ezali na flottement soki joystick ezali na centre te, oyo ekoki kotinda ba mouvements ya moto oyo esengeli te (na vidéo na 01:30).

Ba Timestamps ya Vidéo

  • 00:00 - Introduction na projɛ́
  • 01:30 - Explication ya câblage
  • 02:45 - Explication ya code
  • 04:10 - Démonstration ya fonctionnement

Images

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


}

Mokili na bisika

Pas encore de ressources.

Fichiers📁

Fichye ki nesesè (.h)

Fritzing File