Кодты іздеу

Ардуино кодын қос осьті XY джойстик пен Nokia 5110 LCD экранымен пайдалану үшін

Ардуино кодын қос осьті XY джойстик пен Nokia 5110 LCD экранымен пайдалану үшін

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

Nokia 5110_LCD

Бұл жобада сіз джойстиктің 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 сигналдарымен абай болыңыз; олардың көрсетілген шектерде екеніне көз жеткізіңіз.
  • Қысқа тұйықталуды болдырмау үшін сым қосылымдарын тексеріңіз.

Сым қосу нұсқаулары

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

Джойстик пен 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-дің ақпаратты көрсетуге дайын екенін қамтамасыз етеді.

Nokia 5110_LCD back view

Цикл функциясында біз джойстиктің орнын оқып, оны экран өлшемдеріне салыстырамыз. Нүктенің орны джойстиктің 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 - Функционалдылықты демонстрациялау

Суреттер

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
Тіл: 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);


}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Әлі ресурстар жоқ.

Файлдар📁

Талап етілетін файл (.h)

Fritzing файлы