#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 9
#define TFT_CS 10
// Définition de quelques couleurs simples:
#define NOIR 0x0000
#define BLEU 0x001F
#define ROUGE 0xF800
#define VERT 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define JAUNE 0xFFE0
#define BLANC 0xFFFF
#define Black 0x0000 /* 0, 0, 0 */
#define Navy 0x000F /* 0, 0, 128 */
#define DarkGreen 0x03E0 /* 0, 128, 0 */
#define DarkCyan 0x03EF /* 0, 128, 128 */
#define Maroon 0x7800 /* 128, 0, 0 */
#define Purple 0x780F /* 128, 0, 128 */
#define Olive 0x7BE0 /* 128, 128, 0 */
#define LightGrey 0xC618 /* 192, 192, 192 */
#define DarkGrey 0x7BEF /* 128, 128, 128 */
#define Blue 0x001F /* 0, 0, 255 */
#define Green 0x07E0 /* 0, 255, 0 */
#define Cyan 0x07FF /* 0, 255, 255 */
#define Red 0xF800 /* 255, 0, 0 */
#define Magenta 0xF81F /* 255, 0, 255 */
#define Yellow 0xFFE0 /* 255, 255, 0 */
#define White 0xFFFF /* 255, 255, 255 */
#define Orange 0xFD20 /* 255, 165, 0 */
#define GreenYellow 0xAFE5 /* 173, 255, 47 */
#define Pink 0xF81F
Adafruit_ILI9341 ECRAN = Adafruit_ILI9341(TFT_CS, TFT_DC);
uint16_t RGBto16bitColor(char red, char green, char blue) {
/*
Thanks to https://stackoverflow.com/a/13721235
*/
return (((31*(red+4))/255)<<11) | (((63*(green+2))/255)<<5) | ((31*(blue+4))/255);
}
void drawHexagon(int origin_x, int origin_y, int color, int scale) {
int origin_rect_x = origin_x + scale;
int origin_rect_y = origin_y;
int lenght_rect = scale;
int height_rect = scale*2;
ECRAN.fillRect(origin_rect_x,origin_rect_y,lenght_rect,height_rect,color);
int peak1_trig_x = origin_x + 0.5*scale;
int peak1_trig_y = origin_y + scale;
int peak2_trig_x = origin_x + scale;
int peak2_trig_y = origin_y;
int peak3_trig_x = origin_x + scale;
int peak3_trig_y = origin_y + 2*scale;
ECRAN.fillTriangle(peak1_trig_x, peak1_trig_y, peak2_trig_x, peak2_trig_y, peak3_trig_x, peak3_trig_y, color);
int peak1_trig2_x = origin_x + 2.5*scale;
int peak1_trig2_y = origin_y + scale;
int peak2_trig2_x = origin_x + 2*scale;
int peak2_trig2_y = origin_y;
int peak3_trig2_x = origin_x + 2*scale;
int peak3_trig2_y = origin_y + 2*scale;
ECRAN.fillTriangle(peak1_trig2_x, peak1_trig2_y, peak2_trig2_x, peak2_trig2_y, peak3_trig2_x, peak3_trig2_y, color);
}
void drawBolt(int origin_x, int origin_y, int color, int scale) {
int origin_line1_x = origin_x + scale;
int origin_line1_y = origin_y;
int end_line1_x = origin_x;
int end_line1_y = origin_y + scale;
ECRAN.drawLine(origin_line1_x, origin_line1_y, end_line1_x, end_line1_y, color);
int origin_line2_x = origin_x;
int origin_line2_y = origin_y + scale;
int end_line2_x = origin_x + scale;
int end_line2_y = origin_y + scale;
ECRAN.drawLine(origin_line2_x, origin_line2_y, end_line2_x, end_line2_y, color);
int origin_line3_x = origin_x + scale;
int origin_line3_y = origin_y + scale;
int end_line3_x = origin_x;
int end_line3_y = origin_y + scale * 2;
ECRAN.drawLine(origin_line3_x, origin_line3_y, end_line3_x, end_line3_y, color);
}
void drawWrench(int origin_x, int origin_y, int color, int bgColor, int scale) {
int origin_rect1_x = origin_x + 0.54*scale;
int origin_rect1_y = origin_y + 2*scale;
int width_rect1 = scale;
int height_rect1 = scale;
ECRAN.fillRect(origin_rect1_x, origin_rect1_y, width_rect1, height_rect1, color);
int origin_circle2_x = origin_x + scale;
int origin_circle2_y = origin_y + scale;
int r_circle2 = scale;
ECRAN.fillCircle(origin_circle2_x, origin_circle2_y, r_circle2, color);
int origin_rect2_x = origin_x + 0.54*scale;
int origin_rect2_y = origin_y;
int width_rect2 = scale;
int height_rect2 = scale;
ECRAN.fillRect(origin_rect2_x, origin_rect2_y, width_rect2, height_rect2, bgColor);
}
void drawPeople(int origin_x, int origin_y, int color, int scale) {
int origin_rect_x = origin_x ;
int origin_rect_y = origin_y + scale * 1.5;
int lenght_rect = scale* 2;
int height_rect = scale * 0.5;
ECRAN.fillRect(origin_rect_x,origin_rect_y,lenght_rect,height_rect,color);
int peak1_trig_x = origin_x + scale;
int peak1_trig_y = origin_y + scale;
int peak2_trig_x = origin_x;
int peak2_trig_y = origin_y + scale * 1.5;
int peak3_trig_x = origin_x + scale * 2;
int peak3_trig_y = origin_y + scale * 1.5;
ECRAN.fillTriangle(peak1_trig_x, peak1_trig_y, peak2_trig_x, peak2_trig_y, peak3_trig_x, peak3_trig_y, color);
int origin_circ_x = origin_x + scale;
int origin_circ_y = origin_y + scale * 0.5;
int ray_circ= scale * 0.5;
ECRAN.fillCircle(origin_circ_x, origin_circ_y, ray_circ, color);
}
void drawWhiteboard(int origin_x, int origin_y, int color, int scale) {
int origin_rect_x = origin_x ;
int origin_rect_y = origin_y ;
int lenght_rect = scale * 2;
int height_rect = scale * 2;
ECRAN.fillRect(origin_rect_x,origin_rect_y,lenght_rect,height_rect,color);
}
void drawBinary(int origin_x, int origin_y, int color, int scale) {
int seq1_x = origin_x;
int seq1_y = origin_y;
int seq2_x = origin_x;
int seq2_y = origin_y + scale;
int seq3_x = origin_x;
int seq3_y = origin_y + 2*scale;
int textSize = scale / 10;
ECRAN.setTextSize(textSize) ;
ECRAN.setTextColor(color);
ECRAN.setCursor(seq1_x, seq1_y);
ECRAN.print("01010011");
ECRAN.setTextSize(textSize) ;
ECRAN.setTextColor(color);
ECRAN.setCursor(seq2_x, seq2_y);
ECRAN.print("01001001");
ECRAN.setTextSize(textSize) ;
ECRAN.setTextColor(color);
ECRAN.setCursor(seq3_x, seq3_y);
ECRAN.print("01001110");
}
void drawSTI2DLogo() {
ECRAN.setTextSize(7) ;
ECRAN.setTextColor(BLANC);
ECRAN.setCursor(0, 95);
ECRAN.print("STI");
ECRAN.setTextSize(7) ;
ECRAN.setTextColor(VERT);
ECRAN.setCursor(125, 95);
ECRAN.print("2D");
drawHexagon(122,0,RGBto16bitColor( 227, 242, 172), 37 );
drawHexagon(187,42,RGBto16bitColor( 141, 191, 33), 37 );
drawHexagon(187,125,RGBto16bitColor( 70, 115, 2), 37 );
drawHexagon(122, 166, RGBto16bitColor(61, 89, 18) , 37 );
}
void setup() {
ECRAN.begin();
ECRAN.setRotation(1) ; //ecran paysage
ECRAN.fillScreen(NOIR); //fond noir
ECRAN.setTextSize(2) ;
drawSTI2DLogo();
drawWrench(229, 138, NOIR, RGBto16bitColor( 70, 115, 2), 14);
drawWhiteboard(166, 178, RGBto16bitColor(10, 90, 20), 16);
drawPeople(153, 193, NOIR, 15);
drawBolt(229, 50, NOIR, 27);
drawBolt(230, 50, NOIR, 27);
drawBolt(229, 51, NOIR, 27);
drawBolt(229, 52, NOIR, 27);
drawBolt(229, 53, NOIR, 27);
drawBolt(231, 50, NOIR, 27);
drawBolt(228, 50, NOIR, 27);
drawBolt(227, 50, NOIR, 27);
drawBolt(226, 50, NOIR, 27);
drawBolt(225, 50, NOIR, 27);
drawBinary(115, 12, NOIR, 20);
}
void loop() { }