အဲဒီ module လေးက LCD display ရော၊ touch input ရော၊ SD card reader လေးပါ ပါပါတယ်။ Adafruit libraries တွေကို သုံးပြီး ကျွန်တော် ရေးကြည့်ထားတဲ့ နမူနာ program တချို့ကို
https://github.com/yan9a/TFT_LCD_Touch_Arduino
မှာ တွေ့နိုင်ပါတယ်။
LCD Display
ဒါကတော့ display နမူနာပါ။ Adafruit_GFX နဲ့ Adafruit_TFTLCD libraries တွေကို Arduino libraries folder ထဲမှာ အရင်ထဲ့ထားဖို့ လိုပါတယ်။#include < Adafruit_GFX.h > // Core graphics library #include < Adafruit_TFTLCD.h > // Hardware-specific library //The control pins for the LCD can be assigned to any digital or analog pins. #define LCD_CS A3 // Chip Select #define LCD_CD A2 // Command/Data #define LCD_WR A1 // LCD Write #define LCD_RD A0 // LCD Read #define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin // When using the BREAKOUT BOARD only, use these 8 data lines to the LCD: // For the Arduino Uno, Duemilanove, Diecimila, etc.: // D0 connects to digital pin 8 (Notice these are // D1 connects to digital pin 9 NOT in order!) // D2 connects to digital pin 2 // D3 connects to digital pin 3 // D4 connects to digital pin 4 // D5 connects to digital pin 5 // D6 connects to digital pin 6 // D7 connects to digital pin 7 // For the Arduino Mega, use digital pins 22 through 29 // (on the 2-row header at the end of the board). // Assign human-readable names to some common 16-bit color values: #define BLACK 0xFFFF #define BLUE 0xFFE0 #define RED 0x07FF #define GREEN 0xF81F #define CYAN 0xF800 #define MAGENTA 0x07E0 #define YELLOW 0x001F #define WHITE 0x0000 Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); void setup(void) { tft.reset(); tft.begin(0x9341); tft.setRotation(3); tft.fillScreen(BLACK); } void loop(void) { tft.setCursor(20,20); tft.setTextColor(RED|YELLOW); tft.setTextSize(8); tft.println("16:30"); tft.setCursor(20,100); tft.setTextColor(GREEN); tft.setTextSize(4); tft.println("2016/Jul/22"); tft.setCursor(10,150); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.println("ME 1378 Waso "); tft.setCursor(10,180); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.println("Waning 3"); delay(1000); }
Touch Input
Touch input အတွက် နမူနာ လေးလည်း ကို လည်း အောက်မှာ တွေ့နိုင်ပါတယ်။ Touch screen library ကို Arduino libraries folder မှာ ထည့်ဖို့ လိုပါတယ်။#include < Adafruit_GFX.h > // Core graphics library #include < Adafruit_TFTLCD.h > // Hardware-specific library #include < TouchScreen.h > #define XP 7 #define XM A1 #define YM 6 #define YP A2 #define MINPRESSURE 10 #define MAXPRESSURE 1000 #define PENRADIUS 3 #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 #define LCD_RESET A4 // Assign human-readable names to some common 16-bit color values: #define BLACK 0xFFFF #define BLUE 0xFFE0 #define RED 0x07FF #define GREEN 0xF81F #define CYAN 0xF800 #define MAGENTA 0x07E0 #define YELLOW 0x001F #define WHITE 0x0000 Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); void setup(void) { tft.reset(); tft.begin(0x9341); tft.fillScreen(BLACK); tft.setCursor(20,20); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.println("Touch me!"); pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); TSPoint p = ts.getPoint(); digitalWrite(13, LOW); pinMode(XM, OUTPUT); pinMode(YP, OUTPUT); if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { // scale from 0->1023 to tft.width p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0); tft.fillCircle(p.x, p.y, PENRADIUS, RED); } }
SD Card
ဒါကတော့ SD card reading and writing နမူနာပါ။ ဒါကတော့ ကျွန်တော် က ဆက်ထားတဲ့ CS pin လောက်ပဲ စစ်ပြီး၊ ထပ်ပြင် မထားပါဘူး။ Arduino website မှာ တွေ့ရတဲ့ အတိုင်းပါပဲ။/* SD card read/write This example shows how to read and write data to and from an SD card file The circuit: * SD card attached to SPI bus as follows: ** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 10 created Nov 2010 by David A. Mellis modified 9 Apr 2012 by Tom Igoe This example code is in the public domain. */ #include < SPI.h > #include < SD.h > File myFile; void setup() { // Open serial communications and wait for port to open: Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("Initializing SD card..."); if (!SD.begin(10)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. myFile = SD.open("test.txt", FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing lcd sd writing."); // close the file: myFile.close(); Serial.println("done."); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } // re-open the file for reading: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // read from the file until there's nothing else in it: while (myFile.available()) { Serial.write(myFile.read()); } // close the file: myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup }
No comments:
Post a Comment