Things used in this project

Hardware components:
GLCD 128x128 Color TFT / SPI Interface
http://www.ebay.com/itm/310876068105
×1
Ard nano
Arduino Nano R3
http://www.ebay.com/itm/New-Mini-USB-Nano-V3-0-ATmega328-5V-16M-Micro-controller-board-Arduino-/200964325858
×1
Mercury Switch (optional)
Automobile or Appliance store or eBay
×1

Code

file_3556.txtPlain text
SPI Connection notes
/*

GLCD                     Signal           Arduino 328P

J2#                        Name           Pin / Signal

1 . . . . . . . . . . . .  Vcc . . . . .  Pin#27 on Nano

2 . . . . . . . . . . . .  GND . . . . .  Pin#29 on Nano

3 . . . . . . . . . . . .   CS . . . . .  D10

4 . . . . . . . . . . . .  Reset . . . .  D12

5 . . . . . . . . . . . .  DC(A0). . . .   D9

6 . . . . . . . . . . . .  MOSI(SDA) . .  D11

7 . . . . . . . . . . . .  SCLK(SCK) . .  D13

8 . . . . . . . . . . . .  LED Backlight  3.3 Vcc (Verify 10 Ohm on display)



Note: This example sketch and wiring REQUIRES that the Nano be run at 3.3V maximum

*/
file_3557.txtPlain text
Ray's Notes
/*

   Hardware Library for 128x128 GLCD: https://github.com/sumotoy/TFT_ILI9163C

   Author/Ref: http://forum.pjrc.com/threads/25862-ILI9163C-128x128-TFT-driver

   

   Adafruit (Ladyada) Graphic core: https://github.com/adafruit/Adafruit-GFX-Library

   

   GLCD source: http://www.ebay.com/itm/310876068105



   YouTube of testing: http://youtu.be/RLDTBaXMmX4 



http://en.wikipedia.org/wiki/Magic_8-Ball

Magic 8 Ball...

The 20 answers inside a Magic 8 Ball are:



G  It is certain

G  It is decidedly so

G  Without a doubt

G  Yes definitely

G  You may rely on it

G  As I see it, yes

G  Most likely

G  Outlook good

G  Yes

G  Signs point to yes

Y  Reply hazy try again

Y  Ask again later

Y  Better not tell you now

Y  Cannot predict now

Y  Concentrate and ask again

R  Don't count on it

R  My reply is no

R  My sources say no

R  Outlook not so good

R  Very doubtful

Ten of the possible answers are Positive(G), five are Negative (R), and five are Neutral(Y).
file_3558.txtPlain text
Arduino Source
/* Binary sketch size: 9,598 bytes (of a 30,720 byte maximum)

   Compiled and tested on Arduino (clone) Nano

// 20140814 using 1.0.5r2 */



#include <SPI.h>

#include <Adafruit_GFX.h>

#include <TFT_ILI9163C.h>



// Connecct all 5 connections to LCD for hardware SPI

#define __DC   9

#define __CS  10

// MOSI(SDA) D11

#define __RST 12

// SCLK(SCK) D13



// 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

#define TRANSPARENT     -1



char* PROGMEM Spirits[] = {"It is\ncertain",      // Green

                           "It is\ndecidedly\nso",

                           "Without a\ndoubt",

                           "Yes\ndefinitely",

                           "You may\nrely on it",

                           "As I see\nit, yes",

                           "Most\nlikely",

                           "Outlook\ngood",

                           "Yes",

                           "Signs\npoint\nto yes", // end of Green. Begin Yellow

                           "Reply hazy\ntry again",

                           "Ask again\nlater",

                           "Better nottell you\nnow",

                           "Cannot\npredict\nnow",  // end of Yellow. Begin Red

                           "Reflect\nand ask\nagain",

                           "Don't\ncount on\nit",

                           "My reply\nis no",

                           "My sourcessay no",

                           "Outlook\nnot so\ngood",

                           "Very\ndoubtful"} ;



TFT_ILI9163C display = TFT_ILI9163C(__CS, __DC, __RST);



float p = 3.1415926;

int nIndex = 0;



void setup(void) {

  // pinMode() 

  display.begin();

  display.setBitrate(16000000); // 16MHz clock: UNO (24000000 Teensy)



  uint16_t time = millis();

  time = millis() - time;



  display.clearScreen();

}



void loop() {

    randomSeed(analogRead(0));

    nIndex = random(0, 19) ;

    display.clearScreen();

    display.setCursor(0, 45);

    if (nIndex < 10) {

      display.setTextColor(GREEN, BLACK);

      } else if (nIndex < 15) {

        display.setTextColor(YELLOW, BLACK);

      } else {

        display.setTextColor(MAGENTA, BLACK);

      }

    display.setTextSize(2);

    display.print(Spirits[nIndex]);

    delay(10000) ;  // 10 seconds



  // testlines(random(0x0010,0xFFFF));

  // randomLines();

  randomCircles(1);

  // randomCircles(0);

  // randomRect(1);

  // randomRect(1);

  // randomRect(1);

  // randomRect(1);

  // randomRect(1);

  // randomRect(0);

  // randomRect(0);

  // randomRect(0);

  // randomRect(0);

  // randomRect(0);

  // randomRect(0);

  // randomPoints();

}



void testlines(uint16_t color) {

  display.clearScreen();

  for (int16_t x=0; x < display.width()-1; x+=6) {

    display.drawLine(0, 0, x, display.height()-1, color);

  }

  for (int16_t y=0; y < display.height()-1; y+=6) {

    display.drawLine(0, 0, display.width()-1, y, color);

  }

  display.clearScreen();

  for (int16_t x=0; x < display.width()-1; x+=6) {

    display.drawLine(display.width()-1, 0, x, display.height()-1, color);

  }

  for (int16_t y=0; y < display.height()-1; y+=6) {

    display.drawLine(display.width()-1, 0, 0, y, color);

  }



  display.clearScreen();

  for (int16_t x=0; x < display.width()-1; x+=6) {

    display.drawLine(0, display.height()-1, x, 0, color);

  }

  for (int16_t y=0; y < display.height()-1; y+=6) {

    display.drawLine(0, display.height()-1, display.width()-1, y, color);

  }

  display.clearScreen();

  for (int16_t x=0; x < display.width()-1; x+=6) {

    display.drawLine(display.width()-1, display.height()-1, x, 0, color);

  }

  for (int16_t y=0; y < display.height()-1; y+=6) {

    display.drawLine(display.width()-1, display.height()-1, 0, y, color);

  }

  delay(500);

}





void testdrawtext(char *text, uint16_t color) {

  display.setTextSize(1);

  display.setTextColor(WHITE);

  display.setCursor(0,0);



  for (uint8_t i=0; i < 168; i++) {

    if (i == '\n') continue;

    display.write(i);

    if ((i > 0) && (i % 21 == 0))

      display.println();

  }    

}



void testfastlines(uint16_t color1, uint16_t color2) {

  display.clearScreen();

  for (int16_t y=0; y < display.height()-1; y+=5) {

    display.drawFastHLine(0, y, display.width()-1, color1);

  }

  for (int16_t x=0; x < display.width()-1; x+=5) {

    display.drawFastVLine(x, 0, display.height()-1, color2);

  }

}



void testdrawrects(uint16_t color) {

  display.clearScreen();

  for (int16_t x=0; x < display.height()-1; x+=6) {

    display.drawRect((display.width()-1)/2 -x/2, (display.height()-1)/2 -x/2 , x, x, color);

  }

}



void testfillrects(uint16_t color1, uint16_t color2) {

  display.clearScreen();

  for (int16_t x=display.height()-1; x > 6; x-=6) {

    display.fillRect((display.width()-1)/2 -x/2, (display.height()-1)/2 -x/2 , x, x, color1);

    display.drawRect((display.width()-1)/2 -x/2, (display.height()-1)/2 -x/2 , x, x, color2);

  }

}



void testfillcircles(uint8_t radius, uint16_t color) {

  for (uint8_t x=radius; x < display.width()-1; x+=radius*2) {

    for (uint8_t y=radius; y < display.height()-1; y+=radius*2) {

      display.fillCircle(x, y, radius, color);

    }

  }  

}



void testdrawcircles(uint8_t radius, uint16_t color) {

  for (int16_t x=0; x < (display.width()-1)+radius; x+=radius*2) {

    for (int16_t y=0; y < (display.height())-1+radius; y+=radius*2) {

      display.drawCircle(x, y, radius, color);

    }

  }  

}



void testtriangles() {

  display.clearScreen();

  int color = 0xF800;

  int t;

  int w = display.width()/2;

  int x = display.height();

  int y = 0;

  int z = display.width();

  for(t = 0 ; t <= 15; t+=1) {

    display.drawTriangle(w, y, y, x, z, x, color);

    x-=4;

    y+=4;

    z-=4;

    color+=100;

  }

}



void testroundrects() {

  display.clearScreen();

  int color = 100;

  int i;

  int t;

  for(t = 0 ; t <= 4; t+=1) {

    int x = 0;

    int y = 0;

    int w = display.width();

    int h = display.height();

    for(i = 0 ; i <= 24; i+=1) {

      display.drawRoundRect(x, y, w, h, 5, color);

      x+=2;

      y+=3;

      w-=4;

      h-=6;

      color+=1100;

    }

    color+=100;

  }

}



void tftPrintTest() {

  display.clearScreen();

  display.setCursor(0, 5);

  display.setTextColor(RED);  

  display.setTextSize(1);

  display.println("Hello World!");

  display.setTextColor(YELLOW, GREEN);

  display.setTextSize(2);

  display.print("Hello Wo");

  display.setTextColor(BLUE);

  display.setTextSize(3);

  display.print(12.57);

  delay(1500);

  display.setCursor(0, 5);

  display.clearScreen();

  display.setTextColor(WHITE);

  display.setTextSize(0);

  display.println("Hello World!");

  display.setTextSize(1);

  display.setTextColor(GREEN);

  display.print(p, 5);

  display.println(" Want pi?");

  display.print(8675309, HEX); 

  display.print(" Print HEX");

  display.setTextColor(WHITE);

  display.println("Sketch has been");

  display.println("running for: ");

  display.setTextColor(MAGENTA);

  display.print(millis() / 1000);

  display.setTextColor(WHITE);

  display.print(" sec.");

}





void randomRect(bool fill){

  display.clearScreen();

  uint8_t k,c;

  for (k = 0; k < 16; k++) {

    for (c = 0; c < 32; c++) {

      uint8_t cx, cy, x, y, w, h;

      //  center

      cx = random(0,display.width());

      cy = random(0,display.height());

      //  size

      w = random(0,30 + 6);

      h = random(0,20 + 4);

      //  upper-left

      x = cx - w / 2;

      y = cy - h / 2;

      if (x < 0) x = 0;

      if (y < 0) y = 0;

      //  adjust size

      if (x + w > display.width()) w = display.width() - x;

      if (y + h > display.height()) h = display.height() - y;

      if (fill){

        display.fillRect(x, y, w, h,random(0x0010,0xFFFF));

      } 

      else {

        display.drawRect(x, y, w, h,random(0x0010,0xFFFF));

      }



    }

    display.clearScreen();

  }

}



void randomCircles(bool fill){

  display.clearScreen();

  uint8_t k,c;

  for (k = 0; k < display.height(); k++) {

    for (c = 0; c < display.height()/2; c++) {

      //  coordinates

      uint8_t x = random(0,120 + 3), y = random(0,90 + 2), r = random(0,40 + 1);

      if (x - r <  0) r = x;

      if (x + r > (display.width()-1)) r = (display.width() - 1) - x;

      if (y - r <  0) r = y;

      if (y + r > (display.height()-1)) r = (display.height() - 1) - y;

      if (fill){

        display.fillCircle(x, y, r,random(0x0010,0xFFFF));

      } 

      else {

        display.drawCircle(x, y, r,random(0x0010,0xFFFF));

      }

    }

    if (!fill)display.clearScreen();

  }

}





void randomLines(){

  display.clearScreen();

  uint8_t k,c;

  for (k = 0; k < display.height(); k++) {

    for (c = 0; c < display.height()/2; c++) {

      uint8_t x1 = random(0,display.width()), y1 = random(0,display.height()), x2 = random(0,display.width()), y2 = random(0,display.height());

      display.drawLine(x1, y1, x2, y2,random(0x0010,0xFFFF));

    }

    display.clearScreen();

  }

}





void randomPoints(){

  display.clearScreen();

  int k,c;

  for (k = 0; k < 128; k++) {

    for (c = 0; c < 1000; c++) {

      uint8_t x = random(0,display.width()), y = random(0,display.height());

      display.drawPixel(x, y,random(0x0010,0xFFFF));

    }

    display.clearScreen();

  }

}

Credits

Coffeemath
Ray Burnette
57 projects • 359 followers
IT architect - retired AT&T... USAF-Secure Comm , Burroughs, Clemson U. School of EE Research, Southern Bell, BellSouth, SofKinetics, Inc. (President), AT&T IT
Contact
Thanks to Jean Valentin de Boulogne, sumotoy, and Ladyada.

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Sign up / LoginProjectsPlatformsTopicsContestsLiveAppsBetaBlog