arduino:displays_for_classic_arduinos:1.8_and_1.44_tft_displays_and_classic_arduinos
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
arduino:displays_for_classic_arduinos:1.8_and_1.44_tft_displays_and_classic_arduinos [2018/01/28 01:50] – [Ucglib] mithat | arduino:displays_for_classic_arduinos:1.8_and_1.44_tft_displays_and_classic_arduinos [2018/01/28 04:33] – mithat | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Summary evaluation ===== | ===== Summary evaluation ===== | ||
- | Small 1.8" (160x128) and 1.44" (128x128) TFT displays with ST7735 controllers have been available for a while now. They are only slightly more expensive than the very inexpensive [[arduino: | + | These small 1.8" (160x128) and 1.44" (128x128) TFT displays with ST7735 controllers have been [[https:// |
One of the concerns with with TFT displays is that they are data gluttons, meaning they put a lot of stress on a piddly Uno/ | One of the concerns with with TFT displays is that they are data gluttons, meaning they put a lot of stress on a piddly Uno/ | ||
Line 39: | Line 39: | ||
[[display_st7735_1.44_ucglib_transparent.ino | source code]] | [[display_st7735_1.44_ucglib_transparent.ino | source code]] | ||
- | |||
==== Arduino TFT library==== | ==== Arduino TFT library==== | ||
Line 49: | Line 48: | ||
{{youtube> | {{youtube> | ||
- | <file c++ display_st7735_1.44_TFT.ino> | + | [[display_st7735_1.44_TFT.ino |
- | /* | + | |
- | * display_st7735_1.44_TFT.ino | + | |
- | | + | |
- | * Test screen update speed with large solid fonts on | + | |
- | * a 128x128 TFT screen that uses the ST7735 chip. | + | |
- | | + | |
- | * Consumes 26% of program storage space and | + | |
- | * 5% of dynamic memory on a Pro Mini. | + | |
- | * | + | |
- | * Mithat Konar | + | |
- | */ | + | |
- | #include < | ||
- | #include < | ||
- | |||
- | /* | ||
- | * Pin assignments: | ||
- | * RST: 8 | ||
- | * CE/CS/SCE: 10 | ||
- | * DC/" | ||
- | * DIN/ | ||
- | * CLK/ | ||
- | * VCC: 3.3V | ||
- | * LIGHT/LED: ground through 1 ohm resistor (yields about 20mA) | ||
- | * GND: ground | ||
- | */ | ||
- | |||
- | const unsigned int CLOCK_PIN = 13, | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | const unsigned int LEFT_MARGIN = 32; // number of pixels you need to shift for 128x128 screen | ||
- | |||
- | |||
- | TFT TFTscreen = TFT(CS_PIN, DC_PIN, RESET_PIN); | ||
- | char dispStr[4]; | ||
- | unsigned int counter = 80; | ||
- | |||
- | void setup() { | ||
- | TFTscreen.begin(); | ||
- | TFTscreen.background(0, | ||
- | |||
- | TFTscreen.stroke(255, | ||
- | TFTscreen.setTextSize(1); | ||
- | TFTscreen.text(" | ||
- | | ||
- | TFTscreen.setTextSize(7); | ||
- | } | ||
- | |||
- | void loop() { | ||
- | // draw over what you wrote last time | ||
- | TFTscreen.stroke(0, | ||
- | String(counter).toCharArray(dispStr, | ||
- | TFTscreen.text(dispStr, | ||
- | |||
- | // update and draw something new | ||
- | counter++; | ||
- | |||
- | TFTscreen.stroke(255, | ||
- | String(counter).toCharArray(dispStr, | ||
- | TFTscreen.text(dispStr, | ||
- | |||
- | // inherent frame rate of this loop is about 15 fps w/o added delay (8 MHz processor). | ||
- | delay(500); | ||
- | } | ||
- | |||
- | </ | ||
==== Adafruit ST7735 Library ==== | ==== Adafruit ST7735 Library ==== | ||
Line 128: | Line 59: | ||
The Adafruit library with its default font performs and looks almost the same as the Arduino TFT library. | The Adafruit library with its default font performs and looks almost the same as the Arduino TFT library. | ||
- | FIXME video | + | {{youtube> |
- | <file c++ display_st7735_1.44_adafruit_st7735.ino> | + | [[display_st7735_1.44_adafruit_st7735.ino |
- | /* | + | |
- | * display_st7735_1.44_adafruit_st7735.ino | + | |
- | | + | |
- | * Test screen update speed with large default fonts on | + | |
- | * a 128x128 TFT screen that uses the ST7735 chip. | + | |
- | * | + | |
- | * Consumes 26% of program storage space and | + | |
- | * 6% of dynamic memory on a Pro Mini. | + | |
- | * | + | |
- | * Mithat Konar | + | |
- | */ | + | |
- | + | ||
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | + | ||
- | /* | + | |
- | * Pin assignments: | + | |
- | * RST: 8 | + | |
- | * CE/CS/SCE: 10 | + | |
- | * DC/" | + | |
- | * DIN/ | + | |
- | * CLK/ | + | |
- | * VCC: 3.3V | + | |
- | * LIGHT/LED: ground through 1 ohm resistor (yields about 20mA) | + | |
- | * GND: ground | + | |
- | */ | + | |
- | + | ||
- | const unsigned int CLOCK_PIN = 13, | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | const unsigned int TOP_MARGIN = 32; // number of pixels you need to shift for 128x128 screen | + | |
- | + | ||
- | // Use hardware SPI. | + | |
- | Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, | + | |
- | unsigned int counter = 80; | + | |
- | + | ||
- | void setup(void) { | + | |
- | // mfk note: neither initializer below works for the 128x128 | + | |
- | tft.initR(INITR_BLACKTAB); | + | |
- | // tft.initR(INITR_144GREENTAB); | + | |
- | + | ||
- | tft.fillScreen(ST7735_BLACK); | + | |
- | tft.setTextWrap(false); | + | |
- | + | ||
- | tft.setCursor(0, | + | |
- | tft.setTextSize(1); | + | |
- | tft.setTextColor(ST7735_WHITE); | + | |
- | tft.setTextWrap(true); | + | |
- | tft.print(" | + | |
- | } | + | |
- | + | ||
- | void loop() { | + | |
- | tft.setTextSize(7); | + | |
- | + | ||
- | // draw over what you wrote last time | + | |
- | tft.setCursor(0, | + | |
- | tft.setTextColor(ST7735_BLACK); | + | |
- | tft.print(counter); | + | |
- | + | ||
- | // update and draw something new | + | |
- | counter++; | + | |
- | tft.setCursor(0, | + | |
- | tft.setTextColor(ST7735_WHITE); | + | |
- | tft.print(counter); | + | |
- | + | ||
- | // inherent frame rate of this loop is about 15 fps w/o added delay (8 MHz processor). | + | |
- | delay(500); | + | |
- | } | + | |
- | + | ||
- | </ | + | |
=== Fancy large font === | === Fancy large font === | ||
Line 212: | Line 69: | ||
FIXME video | FIXME video | ||
- | <file c++ display_st7735_1.44_adafruit_st7735_fonts.ino> | + | [[display_st7735_1.44_adafruit_st7735_fonts.ino |
- | /* | + | |
- | * display_st7735_1.44_adafruit_st7735_fonts.ino | + | |
- | | + | |
- | * Test screen update speed with large fancy font on | + | |
- | * a 128x128 TFT screen that uses the ST7735 chip. | + | |
- | * | + | |
- | * Consumes 53% of program storage space and | + | |
- | * 6% of dynamic memory on a Pro Mini. | + | |
- | * | + | |
- | * Mithat Konar | + | |
- | */ | + | |
- | + | ||
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | + | ||
- | /* | + | |
- | * Pin assignments: | + | |
- | * RST: 8 | + | |
- | * CE/CS/SCE: 10 | + | |
- | * DC/" | + | |
- | * DIN/ | + | |
- | * CLK/ | + | |
- | * VCC: 3.3V | + | |
- | * LIGHT/LED: ground through 1 ohm resistor (yields about 20mA) | + | |
- | * GND: ground | + | |
- | */ | + | |
- | + | ||
- | const unsigned int CLOCK_PIN = 13, | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | const unsigned int TOP_MARGIN = 32; // number of pixels you need to shift for 128x128 screen | + | |
- | + | ||
- | // Use hardware SPI. | + | |
- | Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, | + | |
- | unsigned int counter = 80; | + | |
- | + | ||
- | void setup(void) { | + | |
- | // mfk note: neither initializer below works for the 128x128 | + | |
- | tft.initR(INITR_BLACKTAB); | + | |
- | // tft.initR(INITR_144GREENTAB); | + | |
- | + | ||
- | tft.fillScreen(ST7735_BLACK); | + | |
- | tft.setTextWrap(false); | + | |
- | + | ||
- | tft.setCursor(0, | + | |
- | tft.setTextSize(1); | + | |
- | tft.setTextColor(ST7735_WHITE); | + | |
- | tft.setTextWrap(true); | + | |
- | tft.print(" | + | |
- | + | ||
- | tft.setFont(& | + | |
- | } | + | |
- | + | ||
- | void loop() { | + | |
- | // draw over what you wrote last time | + | |
- | tft.setCursor(0, | + | |
- | tft.setTextColor(ST7735_BLACK); | + | |
- | tft.print(counter); | + | |
- | + | ||
- | // update and draw something new | + | |
- | counter++; | + | |
- | tft.setCursor(0, | + | |
- | tft.setTextColor(ST7735_WHITE); | + | |
- | tft.print(counter); | + | |
- | + | ||
- | // inherent frame rate of this loop is about 2.5 fps w/o added delay (8 MHz processor). | + | |
- | delay(500); | + | |
- | } | + | |
- | </ |
arduino/displays_for_classic_arduinos/1.8_and_1.44_tft_displays_and_classic_arduinos.txt · Last modified: 2018/01/31 04:55 by mithat