Пребарување код

Ардуино код за користење на двоосен XY џојстик со Nokia 5110 LCD екран

Ардуино код за користење на двоосен XY џојстик со Nokia 5110 LCD екран

Овој туторијал ќе ве води низ процесот на користење на двоосен XY џојстик за контролирање на точка прикажана на Nokia 5110 LCD екран. Проектот вклучува читање на позицијата на џојстикот и ажурирање на екранот соодветно. До крајот на овој водич, ќе имате функционална поставка каде движењето на џојстикот ја менува позицијата на точката на екранот (во видео на 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 V
Напон на напојување4.5–36 V
Излезна струја (по канал)600 mA
Врвна струја (по канал)1.2 A
Насоки за PWM фреквенција20 kHz
Прагови на влезна логикаКомпатибилно со TTL
Пад на напон / RDS(on) / заситување1.5 V макс.
Термички граници150 °C
ПакетDIP-16
Белешки / варијантиШироко користен во апликации за моторни драјвери

  • Обезбедете соодветно ладење за континуирана работа.
  • Користете раздвојувачки кондензатори за стабилно напојување.
  • Проверете ги напонските оценки за да избегнете оштетување на компонентите.
  • Бидете внимателни со PWM сигналите; осигурете се дека се во наведените граници.
  • Проверете ги жичените врски за да избегнете кратки споеви.

Инструкции за жичање

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

За да го жичате џојстикот и LCD екранот на Arduino, започнете со поврзување на VCC пинот на џојстикот на 5V на Arduino и GND пинот на GND на Arduino. Поврзете го 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 датотека