#include <Adafruit_ILI9341.h>
Adafruit_ILI9341 tft(10,9);
void drawArc(int x, int y, int r, int startAngle, int endAngle, uint16_t color) {
for(int i=startAngle+1; i<endAngle; i++) {
int x_pos = r*cos((i*3.14)/180);
int y_pos = r*sin((i*3.14)/180);
tft.drawPixel(x_pos+x, y-y_pos, color);
}
}
void drawDigit(int n, int x, int y, uint16_t color) {
switch(n) {
case 0 :
tft.drawRoundRect(x, y, 80, 140, 40, color);
tft.drawRoundRect(x+20, y+20, 40, 100, 20, color); break;
case 1 :
tft.drawRoundRect(x+60, y, 20, 140, 10, color); break;
case 2 :
tft.drawLine(x, y, x+40, y, color);
tft.drawLine(x, y, x, y+20, color);
drawArc(x+40, y+40, 41, -90, 90, color);
tft.drawLine(x, y+20, x+40, y+20, color);
drawArc(x+40, y+40, 21, -90, 90, color);
drawArc(x+40, y+100, 41, 90, 180, color);
drawArc(x+40, y+100, 21, 90, 180, color);
tft.drawLine(x, y+100, x, y+140, color);
tft.drawLine(x+20, y+100, x+20, y+120, color);
tft.drawLine(x, y+140, x+80, y+140, color);
tft.drawLine(x+20, y+120, x+80, y+120, color);
tft.drawLine(x+80, y+120, x+80, y+140, color);
break;
case 3 :
tft.drawLine(x, y, x+40, y, color); // Top horizontal line
drawArc(x+40, y+20, 41, -90, 90, color); // Top-right outer arc
drawArc(x+40, y+20, 21, -90, 90, color); // Top-right inner arc
tft.drawLine(x+20, y+40, x+80, y+40, color); // Middle horizontal line
drawArc(x+40, y+60, 41, -90, 90, color); // Bottom-right outer arc
drawArc(x+40, y+60, 21, -90, 90, color); // Bottom-right inner arc
tft.drawLine(x, y+80, x+40, y+80, color); // Bottom horizontal line
break;
case 4 :
tft.drawLine(x+60, y, x+60, y+80, color); // Vertical line (right)
tft.drawLine(x, y+40, x+60, y+40, color); // Horizontal line (middle)
tft.drawLine(x, y+40, x, y+20, color); // Vertical line (left top)
tft.drawLine(x, y+20, x+20, y, color); // Diagonal line (top left to center)
}
}
void setup() {
tft.begin();
}
void loop() {
drawDigit(4 , 20, 10, 0xffff);
}