Untitled

 avatar
unknown
plain_text
5 months ago
20 kB
4
Indexable
// pripojenie potrebných knihovien
// displej
#include <UTFT.h>
#include <TFT_Touch.h>
#include <virtuabotixRTC.h>
// Led strip
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// prehravac
#include "DFRobotDFPlayerMini.h"
// rfid
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9
#define SS_PIN          10
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance


// deklaracia fontov pre použité písma
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
extern uint8_t GroteskBold32x64[];

// vytvorenie premennnych pre nastavenie dotykového displeja
#define HMIN 0    // minimum pre suradnicu X
#define HMAX 4095 // maximum pre suradnicu X
#define VMIN 0    // minimum pre suradnicu Y
#define VMAX 4095 // maximum pre suradnicu Y
#define XYSWAP 1  // nastavenie pre správnu orientaciu os X a Y
// nastavenie velkosti displeja pre správnu detekciu dotyku
#define HRES 320  // počet pixelov na osi X
#define VRES 240  // počet pixelov na osi Y

// LCD displej
UTFT displej(ILI9341_16, 38, 39, 40, 41);
TFT_Touch dotyk = TFT_Touch(5, 6, 4, 3);

// CLOCK
virtuabotixRTC myRTC(10, 11, 12);

// LED pásik
#define NUMPIXELS 10
Adafruit_NeoPixel LED = Adafruit_NeoPixel(NUMPIXELS, A1, NEO_GRB + NEO_KHZ800);

// Prehravanie hudby 
DFRobotDFPlayerMini myDFPlayer;
bool play = false;
int song = 0;

unsigned long previousMillis = 5000; // Premenná na uloženie predchádzajúceho času
const long interval = 5000;       // Nastavenie intervalu na 5000 milisekúnd (5 sekúnd)

// Definujeme enum pre obrazovky
enum Screen {
  MAIN_SCREEN,     // Hlavná obrazovka
  ALARM_SCREEN,     // Obrazovka pre nastavenie budíka
  RGB_SCREEN,      // Obrazovka pre nastavenie RGB LED
  FAVORITE_ALARMS_SCREEN // Nová obrazovka pre obľúbené časy
};

// Aktuálne zobrazená obrazovka
Screen currentScreen = MAIN_SCREEN;

// Premenné pre RGB
int R = 0;
int G = 0;
int B = 0;
int xR = 0;
int xG = 0;
int xB = 0;
int dR = 32;
int dG = 32;
int dB = 32;
bool LED_on = true;
bool svetlo_auto = false;
int svetlo = 0;


char date[12];
char time[12];

bool budikPlayed = false;
int lastMin = 0;

// Premenné pre budík
int alarmHour = 0;
int alarmMinute = 0;
bool settingAlarm = false; // Indikátor, či sa nastavuje budík

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial.println(F("Pripravené prijímať UID."));
  Serial3.begin(9600);
  myDFPlayer.begin(Serial3);
  pinMode(13, OUTPUT);
  digitalWrite(13, 1);
  // seconds, minutes, hours, day of the week, day of the month, month, year
  //myRTC.setDS1302Time(00, 04, 23, 5, 6, 12, 2024);

  initialize_display();

  LED.begin();
  LED.setBrightness(50);

  myDFPlayer.setTimeOut(500);
  myDFPlayer.volume(15);
  myDFPlayer.EQ(0);

  SPI.begin();
  mfrc522.PCD_Init();
  
}

void loop() {
  unsigned long currentMillis = millis();

  // Každých 5 sekúnd aktualizujeme čas, ak nie sme v režime nastavovania budíka
  if ((unsigned long)(currentMillis - previousMillis) >= interval && currentScreen == MAIN_SCREEN) {
    previousMillis = currentMillis;

      // Kontrola osvetlenia
    svetlo = analogRead(A0);
    Serial.println(svetlo);
    if (svetlo_auto == true){
      if (svetlo < 350){
        LED_on = true;
        for(int i=0; i<NUMPIXELS; i++) {
          LED.setPixelColor(i, R, G, B);
          LED.show();
          }
        }
      else if (svetlo > 400){
        LED_on = false;
        for(int i=0; i<NUMPIXELS; i++) {
          LED.setPixelColor(i, 0, 0, 0);
          LED.show();
          }
        }
    }

    if (Serial1.available() > 0) { // Ak sú dostupné dáta na Serial1
     String uid = Serial1.readStringUntil('\n'); // Prečítať UID ako reťazec do ukončenia riadku
     Serial.print(F("Prijaté UID: "));
     Serial.println(uid); // Zobraziť prijaté UID
 
     // Príklad spracovania UID
     if (uid == "33:D0:FB:F7") {
       Serial.println(F("Zapína sa rozprávka č. 1"));
       myDFPlayer.play(1);
       song = 1;
       play = true;
       initialize_display();
     }
     else if (uid == "83:3A:62:2D") {
       Serial.println(F("Zapína sa rozprávka č. 2"));
       myDFPlayer.play(2);
       song = 2;
       play = true;
       initialize_display();
     } 
     else if (uid == "3:38:51:13") {
       Serial.println(F("Zapína sa rozprávka č. 3"));
       myDFPlayer.play(3);
       song = 3;
       play = true;
       initialize_display();
     } 
     else {
       Serial.println(F("Neznáme UID."));
     }
    }


    myRTC.updateTime();
    // Zobrazenie aktuálneho času
    Serial.println(myRTC.seconds);
    Serial.println(myRTC.minutes);
    int hodiny = myRTC.hours;
    int minuty = myRTC.minutes;
    sprintf(date, "%02d. %02d. %04d", myRTC.dayofmonth, myRTC.month, myRTC.year);
    sprintf(time, " %02d:%02d ", hodiny, minuty);
    Serial.println(time);
    displej.setColor(255, 255, 255);
    displej.setFont(SmallFont);
    displej.print(date, CENTER, 135);
    displej.setFont(GroteskBold32x64);
    displej.print(time, CENTER, 70);

    if (minuty != lastMin){
      lastMin = minuty;
      budikPlayed = false;
    }
    
    if (budikPlayed == false && hodiny == alarmHour && minuty == alarmMinute){
      Serial.println(F("BUDIIIIIK"));
      myDFPlayer.play(3);
      budikPlayed = true;
      song = 10;
      play = true;
      initialize_display();
    }
    
  }


  // Kontrola dotyku
  if (dotyk.Pressed()) {
    unsigned int dotykX = dotyk.RawX();
    unsigned int dotykY = dotyk.RawY();
    displej.setColor(255, 255, 255);
    displej.setBackColor(0, 0, 0);
    displej.setFont(SmallFont);
    displej.print("     ", 270, 10);
    displej.print("     ", 270, 30);
    displej.printNumI(dotykX, 270, 10);
    displej.printNumI(dotykY, 270, 30);

    // Správa dotykov podľa aktuálnej obrazovky
    if (currentScreen == MAIN_SCREEN) {
      handleMainScreenTouch(dotykX, dotykY);
    } 
    else if (currentScreen == ALARM_SCREEN) {
      handleAlarmScreenTouch(dotykX, dotykY);
    }
    else if (currentScreen == FAVORITE_ALARMS_SCREEN) {
      handleFavoriteAlarmsTouch(dotykX, dotykY);
    }
    else if (currentScreen == RGB_SCREEN) {
      handleRGBScreenTouch(dotykX, dotykY);
    }
    

  }

  //delay(2);
}

// Funkcia na spracovanie dotyku na hlavnej obrazovke
void handleMainScreenTouch(unsigned int dotykX, unsigned int dotykY) {
  // Ak je dotyk v oblasti, kde sa zobrazuje čas
  if (dotykX > 1200 && dotykX < 3100 && dotykY > 1900 && dotykY < 2800) {
    changeScreen(ALARM_SCREEN);  // Prepneme na obrazovku pre budík
  }
  // Ak je dotyk v oblasti LED štvorca
  else if (dotykX > 1450 && dotykX < 2850 && dotykY > 3350 && dotykY < 3800) {
    changeScreen(RGB_SCREEN);  // Prepneme na obrazovku pre ovladanie LED
  }
  // Ak je dotyk v oblasti prehravania hudby
  else if (dotykX > 1900 & dotykX < 2500 & dotykY > 300 & dotykY < 1100) {
      if (play == true) {
        play = false;
        displej.setColor(0, 0, 0);
        displej.fillCircle(160, 205, 22);
        displej.setColor(255, 255, 255);
        displej.drawLine(155, 196, 170, 205);
        displej.drawLine(155, 214, 170, 205);
        displej.drawLine(155, 196, 155, 214);

        myDFPlayer.pause();
      } 
      else{
        play = true;
        displej.setColor(0, 0, 0);
        displej.fillCircle(160, 205, 22);
        displej.setColor(255, 255, 255);
        displej.drawLine(155, 196, 155, 214);
        displej.drawLine(165, 196, 165, 214);

        myDFPlayer.start();
      }
    }
}

// Funkcia na spracovanie dotyku na obrazovke nastavenia budíka
void handleAlarmScreenTouch(unsigned int dotykX, unsigned int dotykY) {
  // Nastavenie hodín
  if (dotykX > 700 && dotykX < 1200 && dotykY > 2150 && dotykY < 2700) {
    alarmHour = (alarmHour + 1) % 24;
    showAlarmScreen();  // Aktualizácia obrazovky
  }
  else if (dotykX > 700 && dotykX < 1200 && dotykY > 1600 && dotykY < 2150) {
    if (alarmHour > 0){
    alarmHour = (alarmHour - 1) % 24;}
    else{alarmHour = 23;}
    showAlarmScreen();  // Aktualizácia obrazovky
  }
  // Nastavenie minút
  else if (dotykX > 3150 && dotykX < 3650 && dotykY > 2150 && dotykY < 2700) {
    alarmMinute = (alarmMinute + 1) % 60;
    showAlarmScreen();  // Aktualizácia obrazovky
  }
  else if (dotykX > 3150 && dotykX < 3650 && dotykY > 160 && dotykY < 2150) {
    if (alarmMinute > 0){
    alarmMinute = (alarmMinute - 1) % 60;}
    else{alarmMinute = 59;}
    showAlarmScreen();  // Aktualizácia obrazovky
  }
  // Potvrdenie budíka
  else if (dotykX > 1300 && dotykX < 3000 && dotykY > 650 && dotykY < 1200) {
    changeScreen(MAIN_SCREEN);  // Prepneme späť na hlavnú obrazovku
  }
  else if (dotykX > 380 && dotykX < 1000 && dotykY > 2900 && dotykY < 3890) {
    changeScreen(FAVORITE_ALARMS_SCREEN);
  }
}

void handleFavoriteAlarmsTouch(unsigned int dotykX, unsigned int dotykY) {
  // Šípka späť
  if (dotykX > 340 && dotykX < 1050 && dotykY > 2900 && dotykY < 4000) {
    changeScreen(ALARM_SCREEN);
  }
  
  // LAVY STLPEC
  if (dotykX > 900 && dotykX < 2100 && dotykY > 2000 && dotykY < 2800) {
    alarmHour = 6;
    alarmMinute = 0;
    changeScreen(ALARM_SCREEN);
  }
  if (dotykX > 900 && dotykX < 2100 && dotykY > 1150 && dotykY < 1999) {
    alarmHour = 6;
    alarmMinute = 30;
    changeScreen(ALARM_SCREEN);
  }
  if (dotykX > 900 && dotykX < 2100 && dotykY > 330 && dotykY < 1149) {
    alarmHour = 7;
    alarmMinute = 0;
    changeScreen(ALARM_SCREEN);
  }
  // PRAVY STLPEC
  if (dotykX > 2150 && dotykX < 3500 && dotykY > 2000 && dotykY < 2800) {
    alarmHour = 7;
    alarmMinute = 30;
    changeScreen(ALARM_SCREEN);
  }
  if (dotykX > 2150 && dotykX < 3500 && dotykY > 1150 && dotykY < 1999) {
    alarmHour = 8;
    alarmMinute = 0;
    changeScreen(ALARM_SCREEN);
  }
  if (dotykX > 2150 && dotykX < 3500 && dotykY > 330 && dotykY < 1149) {
    alarmHour = 8;
    alarmMinute = 30;
    changeScreen(ALARM_SCREEN);
  }
  
}


void handleRGBScreenTouch(unsigned int dotykX, unsigned int dotykY) {

  if (dotykX > 700 && dotykX < 3820 && dotykY > 2200 && dotykY < 2600) {
    xR = dotykX;
    R = map(xR,700,3820,0,255);
    dR = map(xR,700,3820,31,309);
  }
  if (dotykX > 700 && dotykX < 3820 && dotykY > 1500 && dotykY < 2000) {
    xG = dotykX;
    G = map(xG,700,3820,0,255);
    dG = map(xG,700,3820,31,309);
  }
  if (dotykX > 700 && dotykX < 3820 && dotykY > 970 && dotykY < 1350) {
    xB = dotykX;
    B = map(xB,700,3820,0,255);
    dB = map(xB,700,3820,31,309);
  }

  if (dotykX > 520 && dotykX < 1000 && dotykY > 250 && dotykY < 900) {
    R = 255;
    G = 255;
    B = 255;
  }
  if (dotykX > 1090 && dotykX < 1555 && dotykY > 250 && dotykY < 900) {
    R = 255;
    G = 127;
    B = 80;
  }
  if (dotykX > 1650 && dotykX < 2100 && dotykY > 250 && dotykY < 900) {
    R = 153;
    G = 255;
    B = 204;
  }
  if (dotykX > 2200 && dotykX < 2700 && dotykY > 250 && dotykY < 900) {
    R = 255;
    G = 255;
    B = 0;
  }
  if (dotykX > 2770 && dotykX < 3250 && dotykY > 250 && dotykY < 900) {
    R = 0;
    G = 255;
    B = 255;
  }
  if (dotykX > 3350 && dotykX < 3800 && dotykY > 250 && dotykY < 900) {
    R = 255;
    G = 0;
    B = 255;
  }

  // Zapnutie / Vypnutie Led pásika
  if (dotykX > 1550 && dotykX < 2750 && dotykY > 2750 && dotykY < 3200) {
    if (LED_on == false) {LED_on = true;}
    else {LED_on = false;}
  }

  if (dotykX > 3000 && dotykX < 3650 && dotykY > 2750 && dotykY < 3200) {
    if (svetlo_auto == false) {svetlo_auto = true;}
    else {svetlo_auto = false;}
  }

  if (svetlo_auto == true){
      displej.setColor(0, 255, 0);
      displej.fillRoundRect(241, 51, 289, 74);
    }
  if (svetlo_auto == false){
      displej.setColor(255, 0, 0);
      displej.fillRoundRect(241, 51, 289, 74);
    }
  
  displej.setColor(R, G, B);
  displej.fillRoundRect(110, 50, 210, 75);
  if (LED_on == false){ 
    displej.setColor(255, 255, 255);
    displej.setFont(SmallFont);
    displej.print("OFF", CENTER, 57);
    displej.setColor(255, 0, 0);
    for(int i=0; i<NUMPIXELS; i++) { 
      LED.setPixelColor(i, 0, 0, 0);
      LED.show();
    }
  }
  if (LED_on == true){
    displej.setColor(255, 255, 255);
    for(int i=0; i<NUMPIXELS; i++) {
      LED.setPixelColor(i, R, G, B);
      LED.show();
    }
    
  }
  displej.drawRoundRect(110, 50, 210, 75);
  // R
  displej.setColor(255, 0, 0);
  displej.fillRect(32, 94, (dR-1), 102);
  displej.setColor(0, 0, 0);
  displej.fillRect(dR, 94, 309, 102);
  // G
  displej.setColor(0, 255, 0);
  displej.fillRect(32, 134, (dG-1), 142);
  displej.setColor(0, 0, 0);
  displej.fillRect(dG, 134, 309, 142);
  // B
  displej.setColor(0, 0, 255);
  displej.fillRect(32, 174, (dB-1), 182);
  displej.setColor(0, 0, 0);
  displej.fillRect(dB, 174, 309, 182);

  if (dotykX > 380 && dotykX < 1000 && dotykY > 2900 && dotykY < 3890) {
    changeScreen(MAIN_SCREEN);
  }

}

// Funkcia na prepínanie medzi obrazovkami
void changeScreen(Screen newScreen) {
  currentScreen = newScreen;
  if (currentScreen == MAIN_SCREEN) {
    initialize_display();  // Vrátime sa na hlavnú obrazovku
  } else if (currentScreen == ALARM_SCREEN) {
    showAlarmScreen();  // Zobrazíme obrazovku na nastavenie budíka
  }
  else if (currentScreen == RGB_SCREEN) {
    showRGBScreen();  // Zobrazíme obrazovku na nastavenie budíka
  }
  else if (currentScreen == FAVORITE_ALARMS_SCREEN) {
    showFavoriteAlarmsScreen();
  }
}

void showRGBScreen(){
  displej.clrScr();
  // MENU
  displej.setColor(255, 255, 255);
  displej.drawRoundRect(10, 10, 60, 60);
  displej.drawLine(35-8, 35, 35+8, 25);
  displej.drawLine(35-8, 35, 35+8, 45);
  // AUTO
  displej.setColor(255, 255, 255);
  displej.drawRoundRect(240, 50, 290, 75);
  displej.setFont(SmallFont);
  displej.print("AUTO", 251, 35);

  displej.setFont(BigFont);
  displej.print("RGB LED", CENTER, 25);

  displej.print("R", 10, 90);   
  displej.print("G", 10, 130);
  displej.print("B", 10, 170);

  displej.setColor(255, 255, 255);
  displej.drawRect(30, 93, 310, 103);  // R - Slider, posunuté o 15 pixelov nahor
  displej.drawRect(30, 133, 310, 143);
  displej.drawRect(30, 173, 310, 183);

  displej.setColor(255, 255, 255);
  displej.fillRoundRect(15, 195, 55, 235);   
  displej.setColor(255, 127, 80); 
  displej.fillRoundRect(65, 195, 105, 235);   
  displej.setColor(153, 255, 204); 
  displej.fillRoundRect(115, 195, 155, 235);
  displej.setColor(255, 255, 0);   
  displej.fillRoundRect(165, 195, 205, 235);  
  displej.setColor(0, 255, 255); 
  displej.fillRoundRect(215, 195, 255, 235);
  displej.setColor(255, 0, 255);   
  displej.fillRoundRect(265, 195, 305, 235);  

  displej.setColor(255, 255, 255);
  displej.drawRoundRect(15, 195, 55, 235);    
  displej.drawRoundRect(65, 195, 105, 235);   
  displej.drawRoundRect(115, 195, 155, 235);  
  displej.drawRoundRect(165, 195, 205, 235);  
  displej.drawRoundRect(215, 195, 255, 235);  
  displej.drawRoundRect(265, 195, 305, 235);  

  handleRGBScreenTouch(0, 0);
}

// Zobrazenie obrazovky pre nastavenie budíka
void showAlarmScreen() {
  displej.clrScr();
  displej.setColor(255, 255, 255);
  displej.setFont(BigFont);
  displej.print("BUDIK", CENTER, 25);

  // MENU
  displej.setColor(255, 255, 255);
  displej.drawRoundRect(10, 10, 60, 60);
  displej.drawLine(20, 25, 50, 25);
  displej.drawLine(20, 35, 50, 35);
  displej.drawLine(20, 45, 50, 45);

  displej.setColor(0, 255, 0);
  displej.fillRect(30, 80, 70, 110);
  displej.fillRect(250, 80, 290, 110);
  displej.setColor(255, 0, 0);
  displej.fillRect(30, 111, 70, 140);
  displej.fillRect(250, 111, 290, 140);

 // TIME
  char budik[12];
  sprintf(budik, "%02d:%02d", alarmHour, alarmMinute);
  displej.setColor(255, 255, 255);
  displej.setFont(GroteskBold32x64);
  displej.print(budik, CENTER, 80);

  displej.setFont(BigFont);
  displej.setColor(255, 255, 255);
  displej.print("NASTAVIT", CENTER, 180);  // Tlačidlo na potvrdenie
}

void showFavoriteAlarmsScreen() {
  displej.clrScr();
  displej.setFont(BigFont);
  displej.setColor(255, 255, 255);
  displej.print("BUDIKY", CENTER, 25);

  // MENU - šípka späť
  displej.drawRoundRect(10, 10, 60, 60);
  displej.drawLine(45, 20, 25, 35);
  displej.drawLine(45, 50, 25, 35);

  const int favoriteAlarms1[3][2] = {
    {6, 0}, {6, 30},
    {7, 0}
  };
  const int favoriteAlarms2[3][2] = {
    {7, 30}, {8, 0},
    {8, 30}
  };

  // Vypíše časy
  for (int i = 0; i < 3; i++) {
    int x = 60;
    int y = 90 + (i*50);

    char timeBuffer[10];
    sprintf(timeBuffer, "%02d:%02d", favoriteAlarms1[i][0], favoriteAlarms1[i][1]);
    // Tlač na konzolu (debug)
    Serial.print("Time: ");
    Serial.print(timeBuffer);
    Serial.print(" X: ");
    Serial.print(x);
    Serial.print(" Y: ");
    Serial.println(y);

    displej.print(timeBuffer, x, y); 
  }

  // Vypíše časy
  for (int i = 0; i < 3; i++) {
    int x = 180;
    int y = 90 + (i*50);
    char timeBuffer[10];
    sprintf(timeBuffer, "%02d:%02d", favoriteAlarms2[i][0], favoriteAlarms2[i][1]);
    // Tlač na konzolu (debug)
    Serial.print("Time: ");
    Serial.print(timeBuffer);
    Serial.print(" X: ");
    Serial.print(x);
    Serial.print(" Y: ");
    Serial.println(y);

    displej.print(timeBuffer, x, y); 
  }

}


// Inicializácia hlavnej obrazovky
void initialize_display() {
  dotyk.setCal(HMIN, HMAX, VMIN, VMAX, HRES, VRES, XYSWAP);
  displej.InitLCD();
  displej.clrScr();

 // MENU
  displej.setColor(255, 255, 255);
  displej.drawRoundRect(10, 10, 60, 60);
  displej.drawLine(20, 25, 50, 25);
  displej.drawLine(20, 35, 50, 35);
  displej.drawLine(20, 45, 50, 45);

 // RGB LED
  displej.setColor(R, G, B);
  displej.fillRoundRect(100, 10, 220, 35);
  displej.setColor(255, 255, 255);
  displej.drawRoundRect(100, 10, 220, 35);
 // TIME
  displej.setColor(255, 255, 255);
  displej.setFont(GroteskBold32x64);
  displej.print(":", CENTER, 70);

  myRTC.updateTime();
  // Zobrazenie aktuálneho času
  int hodiny = myRTC.hours;
  int minuty = myRTC.minutes;
  sprintf(date, "%02d. %02d. %04d", myRTC.dayofmonth, myRTC.month, myRTC.year);
  sprintf(time, " %02d:%02d ", hodiny, minuty);
  displej.setColor(255, 255, 255);
  displej.setFont(SmallFont);
  displej.print(date, CENTER, 135);
  displej.setFont(GroteskBold32x64);
  displej.print(time, CENTER, 70);

 // SONG
  displej.setFont(SmallFont);
  if (song == 0){
    displej.print("Pesnicka", CENTER, 155);
  }
  if (song == 1){
    displej.print("                              ", CENTER, 155);
    displej.print("Sol nad zlato", CENTER, 155);
  }
  if (song == 2){
    displej.print("                              ", CENTER, 155);
    displej.print("Dlhy, Siroky, Bystrozraky", CENTER, 155);
  }
  if (song == 3){
    displej.print("                              ", CENTER, 155);
    displej.print("Zlatovlaska", CENTER, 155);
  }
  if (song == 10){
    displej.print("                              ", CENTER, 155);
    displej.print("BUDIK", CENTER, 155);
  }


  displej.drawCircle(160, 205, 23);
  if (play == false){
   displej.drawLine(155, 196, 170, 205);
   displej.drawLine(155, 214, 170, 205);
   displej.drawLine(155, 196, 155, 214);
  }
  if (play == true){
    displej.drawLine(155, 196, 155, 214);
    displej.drawLine(165, 196, 165, 214);
  }

  displej.drawRoundRect(90, 190, 120, 220);
  displej.drawLine(100, 205, 110, 210);
  displej.drawLine(100, 205, 110, 200);

  displej.drawRoundRect(200, 190, 230, 220);
  displej.drawLine(210, 200, 220, 205);
  displej.drawLine(210, 210, 220, 205);
}
Editor is loading...
Leave a Comment