µµ¼­(BOOK)
Å°Æ®(KIT)
ƯÆÇ »óÇ°
Á¹¾÷ÀÛÇ°&ÀüÀÚ±âÃÊ
ÀÀ¿ë¸ðµâ
ÀüÀÚºÎÇ°
¸ðÅÍ
±â±¸
¿£Å¬·ÎÁ®
°³ÀΰáÁ¦¿ë
 
°í°´¼¾ÅÍ °Ô½ÃÆÇ
ÀÚÀ¯°Ô½ÃÆÇ
MCU ÅëÇÕ °Ô½ÃÆÇ
°­ÁÂ-RaspberryPi
°­ÁÂ-µå·Ð(ÄõµåÄßÅÍ)
°­ÁÂ-¾ÆµÎÀ̳ë(±âÃÊ)
°­ÁÂ-¾ÆµÎÀ̳ë(ÀÀ¿ë)
½ÅÁ¦Ç°/½Å±â¼ú ¼Ò°³
DIY °øÀÛ °Ô½ÃÆÇ
À±±³¼öÀÇ ¿¬±¸½Ç Ä®·³
 
 
 
1 ÀÚ·á½ÇÀÌ¿ë½Ã Âü°í»çÇ×
 
 
2 2024³â °©Áø³â (Ë£òãÒ´) »õ..
 
 
3 »ç¹«½Ç ÀÌÀü ¾È³»
 
 
4 2023 °è¹¦³â »õÇØ º¹ ¸¹ÀÌ..
 
 
5 AVR128DA64 Á¤º¹ Ãâ°£¾È³»
 
 
 
 
 
 
 ¢Ï : 02-776-4868

 £Æ: 02-779-6757
À̸ÞÀϹ®ÀÇ
 
¢Ñ ÆòÀÏ(¿ù~±Ý) : 10~17½Ã
¢Ñ ÁÖ¸», °øÈÞÀÏ ÈÞ¹«
 
±¹¹Î822437-04-008415
¢Ñ ¿¹±ÝÁÖ : À̹ÎÈñ(¿È»ç(OHM»ç))
 
 
1 À±±³¼öÀÇ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ ¿ùµå
 
2 (ÁÖ)¼®¿µºê¶óÀ̽ºÅæ
 

 

 
°­ÁÂ-¾ÆµÎÀ̳ë(ÀÀ¿ë)
 
2015. 02. 17 (10:27)
Á¦¸ñ[¾ÆµÎÀ̳ë ÀÀ¿ë] 6. 2.4" TFT LCD Shield (with Touch)
ÀÛ¼ºÀÚohmsa     ÆÄÀÏ÷ºÎ : TFTLCD.zip Á¶È¸ : 10211

6. 2.4¡± TFT LCD Shield (with Touch)

 

À̹ø °­Á¿¡¼­´Â 2.4ÀÎÄ¡ TFT LCD ShieldÀÇ »ç¿ë¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸µµ·Ï ÇÑ´Ù. ¾Õ¿¡¼­¿Í ¸¶Âù°¡Áö·Î Á¦°øµÇ´Â ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© °£´ÜÇÑ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸µµ·Ï ÇÑ´Ù. ÀÌ ½¯µå´Â ÅÍÄ¡ Æе尡 ºÎÂøµÈ ÇüÅ·ΠÀ̹ø °­Á¿¡¼­´Â TFT LCD¿Í ÅÍÄ¡¸¦ µ¿½Ã¿¡ ´Ù·ê ¼ö ÀÖ´Â ¿¹Á¦¸¦ ÀÌ¿ëÇØ º¸µµ·Ï ÇÑ´Ù.

 

»ç½Ç, ÀÌ ½¯µå º¸µå¿Í Á¦°øµÈ ¶óÀ̺귯¸®¿Í ¿¹Á¦´Â ¸¹Àº ¿¡·¯¸¦ °¡Áö°í À־, º»ÀÎÀÌ ¸î ±ºµ¥ ¼öÁ¤À» ÇÑ ÈÄ¿¡ »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù. ÷ºÎ ÆÄÀÏÀÇ ¶óÀ̺귯¸®¿Í ¿¹Á¦´Â ¼öÁ¤µÈ ³»¿ëÀÌ Àû¿ëµÈ °ÍÀ¸·Î »ç¿ëÇϴµ¥ ¹®Á¦ ¾øÀ» °ÍÀ¸·Î º»´Ù.

 

TFT LCD¿¡ ´ëÇÑ »ç¾çÀº ¾Æ·¡¿Í °°´Ù.

 

 


 

½¯µåÀÇ ¿ÜÇüÀº À§¿Í °°À¸¸ç, ¾ÆµÎÀ̳ë¿Í ¿¬°áµÇ´Â ÇɸÊÀº ¾Æ·¡¿Í °°´Ù.

 

A0

LCD_RD

A1

LCD_WR / TS_YP

A2

LCD_RS / TS_XM

A3

LCD_CS

A4

LCD_RST

D8

LCD_D0

D9

LCD_D1

D2

LCD_D2

D3

LCD_D3

D4

LCD_D4

D5

LCD_D5

D6

LCD_D6 / TS_XP

D7

LCD_D7 / TS_YM

D8

SD_SS

D9

SD_DI

D10

SD_DO

D11

SD_SCK

 

TS_XP, TS_XM, TS_YP, TS_YMÀº ÅÍÄ¡ ½ºÅ©¸° ÇÉÀ¸·Î LCD Á¦¾î Æ÷Æ®¿Í °°ÀÌ »ç¿ëÇÏ°í ÀÖ´Ù.

 

 

#include "TFTLCD.h"

#include "TouchScreen.h"

 

//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:

 

#define YP A1  // must be an analog pin, use "An" notation!

#define XM A2  // must be an analog pin, use "An" notation!

#define YM 7   // can be a digital pin

#define XP 6   // can be a digital pin

 

#define TS_MINX 150

#define TS_MINY 120

#define TS_MAXX 920

#define TS_MAXY 940

 

// For better pressure precision, we need to know the resistance

// between X+ and X- Use any multimeter to read it

// For the one we're using, its 300 ohms across the X plate

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

 

#define LCD_CS A3

#define LCD_CD A2

#define LCD_WR A1

#define LCD_RD A0

// optional

#define LCD_RESET A4

 

// Color definitions

#define      BLACK           0x0000

#define      BLUE            0x001F

#define      RED             0xF800

#define      GREEN           0x07E0

#define        CYAN            0x07FF

#define       MAGENTA         0xF81F

#define       YELLOW          0xFFE0

#define       WHITE           0xFFFF

 

TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

 

#define BOXSIZE 40

#define PENRADIUS 3

int oldcolor, currentcolor;

 

void setup(void) {

  Serial.begin(9600);

  Serial.println("Paint!");

 

  tft.reset();

 

  /*

  uint16_t identifier = tft.readRegister(0x0);

  if (identifier == 0x9325) {

    Serial.println("Found ILI9325");

  } else if (identifier == 0x9328) {

    Serial.println("Found ILI9328");

  } else {

    Serial.print("Unknown driver chip ");

    Serial.println(identifier, HEX);

    while (1);

  }

*/

 

  tft.initDisplay();

  tft.fillScreen(BLACK);

 

  tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);

  tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);

  tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);

  tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);

  tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);

  tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);

 

 tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);

 currentcolor = RED;

 

  pinMode(13, OUTPUT);

}

 

#define MINPRESSURE 10

#define MAXPRESSURE 1000

 

void loop()

{

  digitalWrite(13, HIGH);

  Point p = ts.getPoint();

  digitalWrite(13, LOW);

 

  pinMode(XM, OUTPUT);

  pinMode(YP, OUTPUT);

 

  // we have some minimum pressure we consider 'valid'

  // pressure of 0 means no pressing!

 

  if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {

  

    // turn from 0->1023 to tft.width

    p.x = tft.height() - map(p.x, TS_MINX, TS_MAXX, 0, tft.height());

    p.y = tft.width() - map(p.y, TS_MINY, TS_MAXY, 0, tft.width());

   

    Serial.print(p.x, DEC);

    Serial.print("\t");

    Serial.println(p.y, DEC);

 

    if (p.x < BOXSIZE) {

       oldcolor = currentcolor;

 

       if (p.y < BOXSIZE) {

         currentcolor = RED;

         tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);

       }

       else if (p.y < BOXSIZE*2) {

         currentcolor = YELLOW;

         tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);

       }

       else if (p.y < BOXSIZE*3) {

         currentcolor = GREEN;

         tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, WHITE);

       }

       else if (p.y < BOXSIZE*4) {

         currentcolor = CYAN;

         tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, WHITE);

       }

       else if (p.y < BOXSIZE*5) {

         currentcolor = BLUE;

         tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, WHITE);

       }

       else if (p.y < BOXSIZE*6) {

         currentcolor = MAGENTA;

         tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, WHITE);

       }

      

       if (oldcolor != currentcolor) {

          if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);

          if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);

          if (oldcolor == GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);

          if (oldcolor == CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);

          if (oldcolor == BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);

          if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);

       }

    }

    if (((p.x-PENRADIUS) > BOXSIZE) && ((p.x+PENRADIUS) < tft.height())) {

      tft.fillRect(p.y, p.x, PENRADIUS, PENRADIUS, currentcolor);

    }

  }

}

 

À§ ¿¹Á¦´Â, ÅÍÄ¡ ½ºÅ©¸°°ú TFT LCDÀÇ µ¿½Ã »ç¿ëÀ» À§ÇÑ ¿¹Á¦·Î¼­, »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ Ä®¶ó·Î ÀÓÀÇÀÇ À§Ä¡¿¡ Á¡À» Âï´Â(¿©±â¼­´Â 3x3ÀÇ »ç°¢¹Ú½º) µ¿ÀÛÀ» ÇÑ´Ù.

 

#include "TFTLCD.h"

#include "TouchScreen.h"

 

÷ºÎ ÆÄÀÏÀÇ ¶óÀ̺귯¸®¿¡ Á¦°øµÇ´Â Çì´õ ÆÄÀÏ·Î, TFT LCD °ü·Ã ÇÔ¼ö¿Í ÅÍÄ¡½ºÅ©¸° °ü·Ã ÇÔ¼ö¿¡ ´ëÇؼ­ Á¤ÀÇ µÇ¾î ÀÖ´Ù.

 

           TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

 

ÅÍÄ¡½ºÅ©¸°¿¡ ´ëÇÑ º¯¼ö¸¦ ÁöÁ¤ÇÏ°í, ÃʱⰪÀ» Á¤ÀÇÇÑ´Ù.

XP, YP, XM, YMÀº ÅÍÄ¡ ½ºÅ©¸° ´ÜÀÚ¿Í ¿¬°áµÈ Æ÷Æ®¸¦ ÁöÁ¤ÇÏ°í, 300ÀÇ °ªÀº ÅÍÄ¡½ºÅ©¸° X ¸é¿¡ ´ëÇÑ ÀúÇ× °ªÀ» ÀǹÌÇÑ´Ù.

 

           TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

 

TFT LCDÀÇ º¯¼ö¸¦ ÁöÁ¤ÇÏ°í, ÇØ´ç Æ÷Æ®¸¦ Á¤ÀÇÇÑ´Ù.

 

           tft.reset();

 

TFT LCDÀÇ ÃʱâÈ­ À§ÇØ ¹°¸®ÀûÀÎ ¸®¼ÂÀ» ÇÑ´Ù.

 

 

uint16_t identifier = tft.readRegister(0x0);

  if (identifier == 0x9325) {

    Serial.println("Found ILI9325");

  } else if (identifier == 0x9328) {

    Serial.println("Found ILI9328");

  } else {

    Serial.print("Unknown driver chip ");

    Serial.println(identifier, HEX);

    while (1);

  }

 

¿¹Á¦¿¡¼­´Â ÁÖ¼® 󸮰¡ µÇ¾î ÀÖ´Â À§ ºÎºÐÀº TFT LCDÀÇ µå¶óÀ̹ö ICÀÇ ·¹Áö½ºÅ͸¦ Àо »ç¿ë °¡´ÉÇÑ µå¶óÀ̹ö¸¦ °¡·Á³»´Â ºÎºÐÀ¸·Î ÀÌ»óÇÏ°Ô ¿©±â¼­ »ç¿ëµÈ ½¯µå º¸µåÀÇ LCD¿¡¼­´Â 0xC0C0¸¸ ¿¢¼¼½º°¡ µÈ´Ù. µ¿ÀÏÇÑ Á¦Ç° ¸î °³¸¦ ÇØ ºÁµµ °°Àº °ªÀÌ ÀÐÇô¼­ ÇÁ·Î±×·¥ÀÌ ´õ ÀÌ»ó ÁøÇàÀÌ µÇÁö ¾Ê¾Æ, À§ ºÎºÐÀº ÁÖ¼® 󸮸¦ Çؼ­ ½ÇÇàÀÌ µÇÁö ¾Êµµ·Ï ÇÏ¿´´Ù. ÀÌ ½¯µå º¸µå¸¦ ´Ù·é ´Ù¸¥ »çÀÌÆ®ÀÇ ¿¹Á¦¿¡¼­µµ ÀÌ ºÎºÐÀÌ ¾ð±ÞµÇ¾î À־, ÀÌ ½¯µå º¸µåÀÇ ¹®Á¦·Î »ý°¢ÇÏ°í ³Ñ¾î°¡±â·Î ÇÑ´Ù.  < Âü°í »çÀÌÆ®  http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/>

 

           tft.initDisplay();

       tft.fillScreen(BLACK);

 

TFT LCD µå¶óÀ̹ö¸¦ ÃʱâÈ­ÇÒ ·¹Áö½ºÅÍÀÇ °ªÀ» Á¤ÀÇÇÑ ÈÄ¿¡, Àüü È­¸éÀ» °ËÀº»öÀ¸·Î ä¿î´Ù.

 

           tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);

       tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);

       tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);

       tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);

       tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);

       tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);

 

»ç¿ëÀÚ°¡ ÁöÁ¤ÇÒ Ä®¶ó ¹Ú½º¸¦ Ãâ·ÂÇÏ´Â ºÎºÐÀ¸·Î,

           tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);

 

Ãʱâ À§Ä¡ (0, 0)¿¡ x,y ¸ðµÎ BOXSIZE ¸¸Å­ Àû»öÀ¸·Î ä¿ö Áø »ç°¢ÇüÀ» ±×¸°´Ù.

 

           Point p = ts.getPoint();

 

ÅÍÄ¡ ½ºÅ©¸°ÀÇ ÀÔ·Â ÁÂÇ¥¸¦ ÀÐ¾î ¿À´Â ÇÔ¼ö·Î Point Ŭ·¡½º´Â x, y, zÀÇ °ªÀ» ÁöÁ¤ÇÑ´Ù. ¿©±â¼­, z °ªÀº ÅÍÄ¡¸¦ ÇÏ´Â ¾Ð·Â°ªÀÌ´Ù.

 

p.x = tft.height() - map(p.x, TS_MINX, TS_MAXX, 0, tft.height());

        p.y = tft.width() - map(p.y, TS_MINY, TS_MAXY, 0, tft.width());

 

ÀÔ·ÂµÈ ÅÍÄ¡ °ªÀ» x ÁÂÇ¥(320)¿Í y ÁÂÇ¥(240)ÀÇ °ªÀ¸·Î ½ºÄÉÀϸµ ÇÑ ÈÄ¿¡ »ç¿ëÀ» ÇÑ´Ù.

 

tft.fillRect(p.y, p.x, PENRADIUS, PENRADIUS, currentcolor);

 

ÀÔ·ÂµÈ ÁÂÇ¥¿¡ 3x3ÀÇ »ç°¢ ¹Ú½º¸¦ ±×¸°´Ù.

 

À§ÀÇ °ªÀ» º¸¸é x¿Í yÀÇ °ªÀÌ ¹Ù²ï °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. LCDÀÇ ÁÂÇ¥¿Í ÅÍÄ¡ ½ºÅ©¸°ÀÇ ÁÂÇ¥°¡ ¹Ý´ë·Î µÇ¾î À־ À§¿Í °°ÀÌ ¹Ù²ã¼­ Ãâ·ÂÀ» ÇÏ°Ô µÇ¾ú´Ù.

 

ÀÚ¼¼ÇÑ µ¿ÀÛÀº ¾Æ·¡ÀÇ µ¿¿µ»óÀ» Âü°íÇϱ⠹ٶõ´Ù.

 

Á¦°øµÇ´Â ¶óÀ̺귯¸®¿Í ¿¹Á¦°¡ ¸î °¡Áö°¡ ÀÖÁö¸¸, Á¦´ë·Î µ¿ÀÛÀÌ µÇ´Â °ÍÀÌ ¾ø¾î¼­ ÀÌ ¿¹Á¦´Â ¼öÁ¤À» Á» Çؼ­ »ç¿ëÇÏ¿´´Ù. ´Ù¸¥ ¿¹Á¦´Â ±âȸ°¡ µÇ¸é ¼öÁ¤ ÈÄ¿¡ ¿Ã·Á ³õÀ» ¼ö ÀÖµµ·Ï ÇÏ°Ú´Ù.

 

 

ºñ¹Ð¹øÈ£ È®ÀÎ ´Ý±â
lee Èì
2016-03-22 18:50:28
name password
  Content name date hits
[¾ÆµÎÀ̳ë ÀÀ¿ë] 6. 2.4" TFT LCD Shield (with Touch) (1) 
2015/02/17 10211


Copyright ¨Ï µµ¼­ÃâÆÇ ¿È»ç All Rights Reserved. ¢Ï : 02-776-4868 ,£Æ: 02-779-6757
»óÈ£¸í : ¿È»ç(OHM»ç) »ç¾÷Àå¼ÒÀçÁö : ¼­¿ïƯº°½Ã ¿µµîÆ÷±¸ ´ë¸²·Î170-1, 1Ãþ(´ë¸²µ¿)
»ç¾÷ÀÚµî·Ï¹øÈ£ : 416-18-31168 [»ç¾÷ÀÚÁ¤º¸È®ÀÎ] Åë½ÅÆǸž÷½Å°í¹øÈ£ : Á¦2023-¼­¿ï¿ë»ê-1034È£
´ëÇ¥ : À̹ÎÈñ °³ÀÎÁ¤º¸ º¸È£ Ã¥ÀÓÀÚ : Á¤È«±â