|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <SPI.h>
- #include <Adafruit_GFX.h>
- #include <TFT_ILI9163C.h>
-
-
- // 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
-
- const float sin_d[] = {
- 0,0.17,0.34,0.5,0.64,0.77,0.87,0.94,0.98,1,0.98,0.94,
- 0.87,0.77,0.64,0.5,0.34,0.17,0,-0.17,-0.34,-0.5,-0.64,
- -0.77,-0.87,-0.94,-0.98,-1,-0.98,-0.94,-0.87,-0.77,
- -0.64,-0.5,-0.34,-0.17 };
- const float cos_d[] = {
- 1,0.98,0.94,0.87,0.77,0.64,0.5,0.34,0.17,0,-0.17,-0.34,
- -0.5,-0.64,-0.77,-0.87,-0.94,-0.98,-1,-0.98,-0.94,-0.87,
- -0.77,-0.64,-0.5,-0.34,-0.17,0,0.17,0.34,0.5,0.64,0.77,
- 0.87,0.94,0.98};
- const float d = 10;
- float px[] = {
- -d, d, d, -d, -d, d, d, -d };
- float py[] = {
- -d, -d, d, d, -d, -d, d, d };
- float pz[] = {
- -d, -d, -d, -d, d, d, d, d };
-
- float p2x[] = {
- 0,0,0,0,0,0,0,0};
- float p2y[] = {
- 0,0,0,0,0,0,0,0};
-
- int r[] = {
- 0,0,0};
-
- /*
- Teensy3.x and Arduino's
- You are using 4 wire SPI here, so:
- MOSI: 11//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
- MISO: 12//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
- SCK: 13//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
- the rest of pin below:
- */
- #define __CS 10
- #define __DC 9
- /*
- Teensy 3.x can use: 2,6,9,10,15,20,21,22,23
- Arduino's 8 bit: any
- DUE: check arduino site
- If you do not use reset, tie it to +3V3
- */
-
-
- TFT_ILI9163C tft = TFT_ILI9163C(__CS, __DC);
-
- void setup() {
- tft.begin();
- }
-
- void loop(){
- tft.fillScreen(WHITE);
- r[0]=r[0]+1;
- r[1]=r[1]+1;
- if (r[0] == 36) r[0] = 0;
- if (r[1] == 36) r[1] = 0;
- if (r[2] == 36) r[2] = 0;
- for (int i=0;i<8;i++)
- {
- float px2 = px[i];
- float py2 = cos_d[r[0]]*py[i] - sin_d[r[0]]*pz[i];
- float pz2 = sin_d[r[0]]*py[i] + cos_d[r[0]]*pz[i];
-
- float px3 = cos_d[r[1]]*px2 + sin_d[r[1]]*pz2;
- float py3 = py2;
- float pz3 = -sin_d[r[1]]*px2 + cos_d[r[1]]*pz2;
-
- float ax = cos_d[r[2]]*px3 - sin_d[r[2]]*py3;
- float ay = sin_d[r[2]]*px3 + cos_d[r[2]]*py3;
- float az = pz3-190;
-
- p2x[i] = ((tft.width())/2)+ax*500/az;
- p2y[i] = ((tft.height())/2)+ay*500/az;
- }
- for (int i=0;i<3;i++) {
- tft.drawLine(p2x[i],p2y[i],p2x[i+1],p2y[i+1],BLACK);
- tft.drawLine(p2x[i+4],p2y[i+4],p2x[i+5],p2y[i+5],BLACK);
- tft.drawLine(p2x[i],p2y[i],p2x[i+4],p2y[i+4],BLACK);
- }
- tft.drawLine(p2x[3],p2y[3],p2x[0],p2y[0],BLACK);
- tft.drawLine(p2x[7],p2y[7],p2x[4],p2y[4],BLACK);
- tft.drawLine(p2x[3],p2y[3],p2x[7],p2y[7],BLACK);
- delay(15);
- }
|