BlackphoenixPT

m5stack Euromillions

Mar 12th, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 24.22 KB | None | 0 0
  1. #include <M5Stack.h>
  2. #include <EEPROM.h>
  3.  
  4. int FinalNumber[51];
  5. int FinalStar[13];
  6. int MatrixNumber[51];
  7. int MatrixStar[13];
  8. int TempV;
  9. int TempM;
  10. int TempN;
  11. int TempP;
  12. int NumberPos;
  13. int Temp;
  14. int Loopi;
  15. int i,j;
  16. int IndexPos;
  17. int oldBatteryLevel=1000;
  18. int newBatteryLevel=0;
  19. signed char Option1=1;
  20. signed char Option2=1;
  21. signed char Option3=1;
  22. signed char Option4=1;
  23. signed char Option5=1;
  24. signed char Option6=1;
  25. signed char Option7=1;
  26. signed char Option8=1;
  27. int MenuLine=1;
  28. int ExitMe=0;
  29. int NTemp1,NTemp2;
  30.  
  31.  
  32.  
  33. void swapInt(int a, int b)
  34. {
  35.  int c = a;
  36.  a = b;
  37.  b = c;
  38. }
  39.  
  40.  
  41. void ReadEprom()
  42. {
  43.  Option1=EEPROM.read(0);
  44.  Option2=EEPROM.read(1);
  45.  Option3=EEPROM.read(2);
  46.  Option4=EEPROM.read(3);
  47.  Option5=EEPROM.read(4);
  48.  Option6=EEPROM.read(5);
  49.  Option7=EEPROM.read(6);
  50.  Option8=EEPROM.read(7);
  51.  if (Option1==1) Option1=-2;  if (Option1==2) Option1=-1;  if (Option1==3) Option1=0; if (Option1==4) Option1=1; if (Option1==5) Option1=2;
  52.  if (Option2==1) Option2=-2;  if (Option2==2) Option2=-1;  if (Option2==3) Option2=0; if (Option2==4) Option2=1; if (Option2==5) Option2=2;
  53.  if (Option3==1) Option3=-2;  if (Option3==2) Option3=-1;  if (Option3==3) Option3=0; if (Option3==4) Option3=1; if (Option3==5) Option3=2;
  54.  if (Option4==1) Option4=-2;  if (Option4==2) Option4=-1;  if (Option4==3) Option4=0; if (Option4==4) Option4=1; if (Option4==5) Option4=2;
  55.  if (Option5==1) Option5=-2;  if (Option5==2) Option5=-1;  if (Option5==3) Option5=0; if (Option5==4) Option5=1; if (Option5==5) Option5=2;
  56.  if (Option6==1) Option6=-2;  if (Option6==2) Option6=-1;  if (Option6==3) Option6=0; if (Option6==4) Option6=1; if (Option6==5) Option6=2;
  57.  if (Option7==1) Option7=-2;  if (Option7==2) Option7=-1;  if (Option7==3) Option7=0; if (Option7==4) Option7=1; if (Option7==5) Option7=2;
  58.  if (Option8==1) Option8=-2;  if (Option8==2) Option8=-1;  if (Option8==3) Option8=0; if (Option8==4) Option8=1; if (Option8==5) Option8=2;
  59. }
  60.  
  61.  
  62. void WriteEprom()
  63. {
  64.  if (Option1==-2) EEPROM.write(0, 1); if (Option1==-1) EEPROM.write(0, 2); if (Option1==0) EEPROM.write(0, 3); if (Option1==1) EEPROM.write(0, 4); if (Option1==2) EEPROM.write(0, 5);
  65.  if (Option2==-2) EEPROM.write(1, 1); if (Option2==-1) EEPROM.write(1, 2); if (Option2==0) EEPROM.write(1, 3); if (Option2==1) EEPROM.write(1, 4); if (Option2==2) EEPROM.write(1, 5);
  66.  if (Option3==-2) EEPROM.write(2, 1); if (Option3==-1) EEPROM.write(2, 2); if (Option3==0) EEPROM.write(2, 3); if (Option3==1) EEPROM.write(2, 4); if (Option3==2) EEPROM.write(2, 5);
  67.  if (Option4==-2) EEPROM.write(3, 1); if (Option4==-1) EEPROM.write(3, 2); if (Option4==0) EEPROM.write(3, 3); if (Option4==1) EEPROM.write(3, 4); if (Option4==2) EEPROM.write(3, 5);
  68.  if (Option5==-2) EEPROM.write(4, 1); if (Option5==-1) EEPROM.write(4, 2); if (Option5==0) EEPROM.write(4, 3); if (Option5==1) EEPROM.write(4, 4); if (Option5==2) EEPROM.write(4, 5);
  69.  if (Option6==-2) EEPROM.write(5, 1); if (Option6==-1) EEPROM.write(5, 2); if (Option6==0) EEPROM.write(5, 3); if (Option6==1) EEPROM.write(5, 4); if (Option6==2) EEPROM.write(5, 5);
  70.  if (Option7==-2) EEPROM.write(6, 1); if (Option7==-1) EEPROM.write(6, 2); if (Option7==0) EEPROM.write(6, 3); if (Option7==1) EEPROM.write(6, 4); if (Option7==2) EEPROM.write(6, 5);
  71.  if (Option8==-2) EEPROM.write(7, 1); if (Option8==-1) EEPROM.write(7, 2); if (Option8==0) EEPROM.write(7, 3); if (Option8==1) EEPROM.write(7, 4); if (Option8==2) EEPROM.write(7, 5);
  72.  EEPROM.commit();
  73. }
  74.  
  75.  
  76. void ClearEprom()
  77. {
  78.  EEPROM.write(0, 0);
  79.  EEPROM.write(1, 0);
  80.  EEPROM.write(2, 0);
  81.  EEPROM.write(3, 0);
  82.  EEPROM.write(4, 0);
  83.  EEPROM.write(5, 0);
  84.  EEPROM.write(6, 0);
  85.  EEPROM.write(7, 0);
  86. }
  87.  
  88.  
  89.  
  90. int8_t getBatteryLevel()
  91. {
  92.   Wire.beginTransmission(0x75);
  93.   Wire.write(0x78);
  94.   if (Wire.endTransmission(false) == 0
  95.    && Wire.requestFrom(0x75, 1)) {
  96.     switch (Wire.read() & 0xF0) {
  97.     case 0xE0: return 25;
  98.     case 0xC0: return 50;
  99.     case 0x80: return 75;
  100.     case 0x00: return 100;
  101.     default: return 0;
  102.     }
  103.   }
  104.   return -1;
  105. }
  106.  
  107.  
  108. void displayBattery()
  109. {
  110. // Draw Battery
  111.  oldBatteryLevel=1000;
  112.  M5.Lcd.drawRect(295, 4, 5, 7, WHITE);
  113.  M5.Lcd.drawRect(300, 0, 20, 14, WHITE);
  114. }
  115.  
  116.  
  117. void displayLogo()
  118. {
  119.  M5.Lcd.setTextColor(YELLOW);    
  120.  M5.Lcd.setTextFont(1);
  121.  M5.Lcd.setTextSize(1);  
  122.  M5.Lcd.setCursor( 0, 20);   M5.Lcd.print(" __           __  __   _   _   _                     ");
  123.  M5.Lcd.setCursor( 0, 30);   M5.Lcd.print("|__|    _  _ |  \\/  | (_) | | | |_    ___   ___   ___");
  124.  M5.Lcd.setCursor( 0, 40);   M5.Lcd.print("|_| | ||_|| || |\\/| | | | | | | | \\  / _ \\ / -_) (_-<");
  125.  M5.Lcd.setCursor( 0, 50);   M5.Lcd.print("|__||_||\\ |_||_|  |_| |_| |_| |_||_| \\___/ \\___| /__/");
  126. }
  127.  
  128.  
  129. void displayBatteryLevel()
  130. {
  131.  newBatteryLevel=getBatteryLevel();
  132. // M5.Lcd.setTextColor(YELLOW);    
  133. // M5.Lcd.setTextFont(1);
  134. // M5.Lcd.setTextSize(2);  
  135. // M5.Lcd.setCursor( 0, 0);   M5.Lcd.print("   ");
  136. // M5.Lcd.setCursor( 0, 0);   M5.Lcd.print(getBatteryLevel());
  137.  
  138.  if (oldBatteryLevel!=newBatteryLevel)
  139.  {
  140.   M5.Lcd.fillRect(303, 2, 12, 11, BLACK);
  141.   M5.Lcd.drawRect(300, 0, 20, 14, WHITE);
  142.   if (newBatteryLevel>=100) M5.Lcd.fillRect(303, 2, 3, 11, GREEN);
  143.   if (newBatteryLevel>=75)  M5.Lcd.fillRect(307, 2, 3, 11, GREEN);
  144.   if (newBatteryLevel>=50)  M5.Lcd.fillRect(310, 2, 3, 11, GREEN);
  145.   if (newBatteryLevel>=25)  M5.Lcd.fillRect(313, 2, 4, 11, GREEN);
  146.   oldBatteryLevel=newBatteryLevel;
  147.  }
  148. }
  149.  
  150.  
  151. void getEuroMillionsNumbers()
  152. {
  153.  M5.update();
  154.  M5.Lcd.setTextColor(WHITE);    
  155.  M5.Lcd.setTextFont(2);
  156.  M5.Lcd.setTextSize(3);  
  157.  M5.Lcd.fillRect(0, 80, 320, 100, BLACK);
  158.  delay(500);
  159.  
  160.  for (int i=1;i<=50; i++) MatrixNumber[i]=1;
  161.  for (int k=1; k<25000; k++)
  162.  {
  163.   randomSeed(analogRead(35));
  164.   NTemp1=random(50)+1;
  165.   if (NTemp1>=1 && NTemp1<=6)
  166.   {
  167.    NTemp2=NTemp1+Option1;
  168.    if (NTemp2==-1) NTemp2=49;
  169.    if (NTemp2==0)  NTemp2=50;
  170.   }
  171.   if (NTemp1>=13 && NTemp1<=18) NTemp2=NTemp1+Option3;
  172.   if (NTemp1>=19 && NTemp1<=24) NTemp2=NTemp1+Option4;
  173.   if (NTemp1>=25 && NTemp1<=30) NTemp2=NTemp1+Option5;
  174.   if (NTemp1>=31 && NTemp1<=36) NTemp2=NTemp1+Option6;
  175.   if (NTemp1>=37 && NTemp1<=42) NTemp2=NTemp1+Option7;
  176.   if (NTemp1>=43 && NTemp1<=48) NTemp2=NTemp1+Option8;
  177.   if (NTemp1>=49 && NTemp1<=50) NTemp2=NTemp1;
  178.   MatrixNumber[NTemp2]++;
  179.  }
  180.  
  181.  NumberPos=1;
  182.  while (NumberPos<=5)
  183.  {
  184.   TempN=0;
  185.   TempP=1;
  186.   for (i=1; i<=50; i++)
  187.   {
  188.    if (MatrixNumber[i]>TempN) { TempN=MatrixNumber[i]; TempP=i; }
  189.   }
  190.   if (TempN==0) TempP=1;
  191.   for (i=1; i<=50; i++)
  192.   {
  193.    if (MatrixNumber[i]==TempN) MatrixNumber[i]=0;
  194.   }
  195.   FinalNumber[NumberPos]=TempP;
  196.   NumberPos++;
  197.  }
  198.  
  199.  for (i=1; i<=4; i++)
  200.  {
  201.   for (j=2; j<=5; j++)  if (FinalNumber[i]>FinalNumber[j]) swapInt(FinalNumber[i],FinalNumber[j]);
  202.  }
  203.  
  204.  for (int i=1;i<=12; i++) MatrixStar[i]=1;
  205.  for (int k=1; k<10000; k++)
  206.  {
  207.   MatrixStar[random(12)+1]++;
  208.  }
  209.  TempV=0;  TempM=0;
  210.  for (IndexPos=1; IndexPos<=2; IndexPos++)
  211.  {
  212.   for (Loopi=1; Loopi<=12; Loopi++)
  213.   {
  214.    if (MatrixStar[Loopi]>TempV) { TempV=MatrixStar[Loopi]; TempM=Loopi;  }
  215.   }
  216.   FinalStar[IndexPos]=TempM;
  217.   MatrixStar[TempM]=0;
  218.   TempV=0;
  219.  }
  220.  
  221.  if (FinalStar[1]>FinalStar[2]) swapInt(FinalStar[1],FinalStar[2]);
  222.  
  223.  M5.Lcd.setTextColor(WHITE);    
  224.  M5.Lcd.setTextFont(2);
  225.  M5.Lcd.setTextSize(3);  
  226.  M5.Lcd.setCursor(  0, 80);   M5.Lcd.print(String(FinalNumber[1]));
  227.  M5.Lcd.setCursor( 64, 80);   M5.Lcd.print(String(FinalNumber[2]));
  228.  M5.Lcd.setCursor(128, 80);   M5.Lcd.print(String(FinalNumber[3]));
  229.  M5.Lcd.setCursor(192, 80);   M5.Lcd.print(String(FinalNumber[4]));
  230.  M5.Lcd.setCursor(256, 80);   M5.Lcd.print(String(FinalNumber[5]));
  231.  
  232.  M5.Lcd.setCursor(  0, 130);   M5.Lcd.print(String(FinalStar[1]));
  233.  M5.Lcd.setCursor( 64, 130);   M5.Lcd.print(String(FinalStar[2]));
  234.  
  235.  
  236.  
  237.  M5.Lcd.setTextColor(GREEN);    
  238.  M5.Lcd.setTextFont(1);
  239.  M5.Lcd.setTextSize(2);  
  240.  
  241.  M5.Lcd.fillRect(   0, 210, 320, 30, BLUE);
  242.  M5.Lcd.drawRect(   0, 210, 105, 30, WHITE);
  243.  M5.Lcd.setCursor(  0+2+(14*(7/2)),217);  M5.Lcd.print("?");
  244.  M5.Lcd.drawRect( 106, 210, 105, 30, WHITE);
  245.  M5.Lcd.setCursor(106+2+(14*(7/6)),217);  M5.Lcd.print("Options");
  246.  M5.Lcd.drawRect( 212, 210, 105, 30, WHITE);
  247.  M5.Lcd.setCursor(212+2+(14*(7/3)),217);  M5.Lcd.print("Sort");
  248.  exit;
  249. }
  250.  
  251.  
  252. void clsEuroMillionsOptions()
  253. {
  254.  M5.Lcd.setTextColor(BLACK);
  255.  M5.Lcd.setCursor(  1*(13*0)-1,  40);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1,  40);  M5.Lcd.print("<");
  256.  M5.Lcd.setCursor(  1*(13*0)-1,  60);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1,  60);  M5.Lcd.print("<");
  257.  M5.Lcd.setCursor(  1*(13*0)-1,  80);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1,  80);  M5.Lcd.print("<");
  258.  M5.Lcd.setCursor(  1*(13*0)-1, 100);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1, 100);  M5.Lcd.print("<");
  259.  M5.Lcd.setCursor(  1*(13*0)-1, 120);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1, 120);  M5.Lcd.print("<");
  260.  M5.Lcd.setCursor(  1*(13*0)-1, 140);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1, 140);  M5.Lcd.print("<");
  261.  M5.Lcd.setCursor(  1*(13*0)-1, 160);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1, 160);  M5.Lcd.print("<");
  262.  M5.Lcd.setCursor(  1*(13*0)-1, 180);   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1, 180);  M5.Lcd.print("<");
  263.  
  264.  M5.Lcd.setCursor(  1*(13*6)-1,  40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  40);  M5.Lcd.print("]");
  265.  M5.Lcd.setCursor(  1*(13*10)-4, 40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 40);  M5.Lcd.print("]");
  266.  M5.Lcd.setCursor(  1*(13*14)-10,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 40);  M5.Lcd.print("]");  
  267.  M5.Lcd.setCursor(  1*(13*18)-11,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,40);  M5.Lcd.print("]");
  268.  M5.Lcd.setCursor(  1*(13*22)-16,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,40);  M5.Lcd.print("]");
  269.  
  270.  M5.Lcd.setCursor(  1*(13*6)-1,  60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  60);  M5.Lcd.print("]");
  271.  M5.Lcd.setCursor(  1*(13*10)-4, 60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 60);  M5.Lcd.print("]");
  272.  M5.Lcd.setCursor(  1*(13*14)-10,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 60);  M5.Lcd.print("]");  
  273.  M5.Lcd.setCursor(  1*(13*18)-11,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,60);  M5.Lcd.print("]");
  274.  M5.Lcd.setCursor(  1*(13*22)-16,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,60);  M5.Lcd.print("]");
  275.  
  276.  M5.Lcd.setCursor(  1*(13*6)-1,  80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  80);  M5.Lcd.print("]");
  277.  M5.Lcd.setCursor(  1*(13*10)-4, 80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 80);  M5.Lcd.print("]");
  278.  M5.Lcd.setCursor(  1*(13*14)-10,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 80);  M5.Lcd.print("]");  
  279.  M5.Lcd.setCursor(  1*(13*18)-11,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,80);  M5.Lcd.print("]");
  280.  M5.Lcd.setCursor(  1*(13*22)-16,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,80);  M5.Lcd.print("]");
  281.  
  282.  M5.Lcd.setCursor(  1*(13*6)-1,  100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  100);  M5.Lcd.print("]");
  283.  M5.Lcd.setCursor(  1*(13*10)-4, 100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 100);  M5.Lcd.print("]");
  284.  M5.Lcd.setCursor(  1*(13*14)-10,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 100);  M5.Lcd.print("]");  
  285.  M5.Lcd.setCursor(  1*(13*18)-11,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,100);  M5.Lcd.print("]");
  286.  M5.Lcd.setCursor(  1*(13*22)-16,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,100);  M5.Lcd.print("]");
  287.  
  288.  M5.Lcd.setCursor(  1*(13*6)-1,  120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  120);  M5.Lcd.print("]");
  289.  M5.Lcd.setCursor(  1*(13*10)-4, 120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 120);  M5.Lcd.print("]");
  290.  M5.Lcd.setCursor(  1*(13*14)-10,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 120);  M5.Lcd.print("]");  
  291.  M5.Lcd.setCursor(  1*(13*18)-11,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,120);  M5.Lcd.print("]");
  292.  M5.Lcd.setCursor(  1*(13*22)-16,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,120);  M5.Lcd.print("]");
  293.  
  294.  M5.Lcd.setCursor(  1*(13*6)-1,  140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  140);  M5.Lcd.print("]");
  295.  M5.Lcd.setCursor(  1*(13*10)-4, 140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 140);  M5.Lcd.print("]");
  296.  M5.Lcd.setCursor(  1*(13*14)-10,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 140);  M5.Lcd.print("]");  
  297.  M5.Lcd.setCursor(  1*(13*18)-11,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,140);  M5.Lcd.print("]");
  298.  M5.Lcd.setCursor(  1*(13*22)-16,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,140);  M5.Lcd.print("]");
  299.  
  300.  M5.Lcd.setCursor(  1*(13*6)-1,  160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  160);  M5.Lcd.print("]");
  301.  M5.Lcd.setCursor(  1*(13*10)-4, 160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 160);  M5.Lcd.print("]");
  302.  M5.Lcd.setCursor(  1*(13*14)-10,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 160);  M5.Lcd.print("]");  
  303.  M5.Lcd.setCursor(  1*(13*18)-11,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,160);  M5.Lcd.print("]");
  304.  M5.Lcd.setCursor(  1*(13*22)-16,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,160);  M5.Lcd.print("]");
  305.  
  306.  M5.Lcd.setCursor(  1*(13*6)-1,  180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  180);  M5.Lcd.print("]");
  307.  M5.Lcd.setCursor(  1*(13*10)-4, 180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 180);  M5.Lcd.print("]");
  308.  M5.Lcd.setCursor(  1*(13*14)-10,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 180);  M5.Lcd.print("]");  
  309.  M5.Lcd.setCursor(  1*(13*18)-11,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,180);  M5.Lcd.print("]");
  310.  M5.Lcd.setCursor(  1*(13*22)-16,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,180);  M5.Lcd.print("]");
  311. }
  312.  
  313.  
  314. void drawEuroMillionsOptions()
  315. {
  316.  M5.Lcd.setTextColor(YELLOW);    
  317.  M5.Lcd.setTextFont(1);
  318.  M5.Lcd.setTextSize(3);  
  319.  M5.Lcd.setCursor(  0,  0);   M5.Lcd.print(" > O P T I O N < ");
  320.  
  321.  M5.Lcd.setTextColor(WHITE);    
  322.  M5.Lcd.setTextFont(1);
  323.  M5.Lcd.setTextSize(2);  
  324.  M5.Lcd.setCursor(  0,  40);   M5.Lcd.print("  1    -2  -1  00  +1  +2");
  325.  M5.Lcd.setCursor(  0,  60);   M5.Lcd.print("  2    -2  -1  00  +1  +2");
  326.  M5.Lcd.setCursor(  0,  80);   M5.Lcd.print("  3    -2  -1  00  +1  +2");
  327.  M5.Lcd.setCursor(  0, 100);   M5.Lcd.print("  4    -2  -1  00  +1  +2");
  328.  M5.Lcd.setCursor(  0, 120);   M5.Lcd.print("  5    -2  -1  00  +1  +2");
  329.  M5.Lcd.setCursor(  0, 140);   M5.Lcd.print("  6    -2  -1  00  +1  +2");
  330.  M5.Lcd.setCursor(  0, 160);   M5.Lcd.print("  7    -2  -1  00  +1  +2");
  331.  M5.Lcd.setCursor(  0, 180);   M5.Lcd.print("  8    -2  -1  00  +1  +2");
  332.  
  333.  displayBattery();
  334.  displayBatteryLevel();
  335. }
  336.  
  337.  
  338. void redrawEuroMillionsOptions()
  339. {
  340.  //M5.Lcd.fillRect(   0, 0, 320, 240, BLACK);
  341.  
  342.  clsEuroMillionsOptions();
  343.  
  344.  M5.Lcd.setTextColor(YELLOW);
  345.  if (MenuLine<9 && MenuLine>0) { M5.Lcd.setCursor(  1*(13*0)-1,  20*(MenuLine+1));   M5.Lcd.print(">");  M5.Lcd.setCursor(  1*(13*4)-1,  20*(MenuLine+1));  M5.Lcd.print("<"); }
  346.  
  347.  if (Option1==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  40);  M5.Lcd.print("]"); }
  348.  if (Option1==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 40);  M5.Lcd.print("]"); }
  349.  if (Option1==0) { M5.Lcd.setCursor(  1*(13*14)-10,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 40);  M5.Lcd.print("]"); }
  350.  if (Option1==1) { M5.Lcd.setCursor(  1*(13*18)-11,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,40);  M5.Lcd.print("]"); }
  351.  if (Option1==2) { M5.Lcd.setCursor(  1*(13*22)-16,40);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,40);  M5.Lcd.print("]"); }
  352.  
  353.  if (Option2==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  60);  M5.Lcd.print("]"); }
  354.  if (Option2==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 60);  M5.Lcd.print("]"); }
  355.  if (Option2==0) { M5.Lcd.setCursor(  1*(13*14)-10,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 60);  M5.Lcd.print("]"); }
  356.  if (Option2==1) { M5.Lcd.setCursor(  1*(13*18)-11,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,60);  M5.Lcd.print("]"); }
  357.  if (Option2==2) { M5.Lcd.setCursor(  1*(13*22)-16,60);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,60);  M5.Lcd.print("]"); }
  358.  
  359.  if (Option3==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  80);  M5.Lcd.print("]"); }
  360.  if (Option3==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 80);  M5.Lcd.print("]"); }
  361.  if (Option3==0) { M5.Lcd.setCursor(  1*(13*14)-10,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 80);  M5.Lcd.print("]"); }
  362.  if (Option3==1) { M5.Lcd.setCursor(  1*(13*18)-11,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,80);  M5.Lcd.print("]"); }
  363.  if (Option3==2) { M5.Lcd.setCursor(  1*(13*22)-16,80);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,80);  M5.Lcd.print("]"); }
  364.  
  365.  if (Option4==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  100);  M5.Lcd.print("]"); }
  366.  if (Option4==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 100);  M5.Lcd.print("]"); }
  367.  if (Option4==0) { M5.Lcd.setCursor(  1*(13*14)-10,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 100);  M5.Lcd.print("]"); }
  368.  if (Option4==1) { M5.Lcd.setCursor(  1*(13*18)-11,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,100);  M5.Lcd.print("]"); }
  369.  if (Option4==2) { M5.Lcd.setCursor(  1*(13*22)-16,100);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,100);  M5.Lcd.print("]"); }
  370.  
  371.  if (Option5==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  120);  M5.Lcd.print("]"); }
  372.  if (Option5==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 120);  M5.Lcd.print("]"); }
  373.  if (Option5==0) { M5.Lcd.setCursor(  1*(13*14)-10,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 120);  M5.Lcd.print("]"); }
  374.  if (Option5==1) { M5.Lcd.setCursor(  1*(13*18)-11,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,120);  M5.Lcd.print("]"); }
  375.  if (Option5==2) { M5.Lcd.setCursor(  1*(13*22)-16,120);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,120);  M5.Lcd.print("]"); }
  376.  
  377.  if (Option6==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  140);  M5.Lcd.print("]"); }
  378.  if (Option6==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 140);  M5.Lcd.print("]"); }
  379.  if (Option6==0) { M5.Lcd.setCursor(  1*(13*14)-10,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 140);  M5.Lcd.print("]"); }
  380.  if (Option6==1) { M5.Lcd.setCursor(  1*(13*18)-11,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,140);  M5.Lcd.print("]"); }
  381.  if (Option6==2) { M5.Lcd.setCursor(  1*(13*22)-16,140);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,140);  M5.Lcd.print("]"); }
  382.  
  383.  if (Option7==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  160);  M5.Lcd.print("]"); }
  384.  if (Option7==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 160);  M5.Lcd.print("]"); }
  385.  if (Option7==0) { M5.Lcd.setCursor(  1*(13*14)-10,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 160);  M5.Lcd.print("]"); }
  386.  if (Option7==1) { M5.Lcd.setCursor(  1*(13*18)-11,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,160);  M5.Lcd.print("]"); }
  387.  if (Option7==2) { M5.Lcd.setCursor(  1*(13*22)-16,160);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,160);  M5.Lcd.print("]"); }
  388.  
  389.  if (Option8==-2) { M5.Lcd.setCursor(  1*(13*6)-1,  180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*8)-1,  180);  M5.Lcd.print("]"); }
  390.  if (Option8==-1) { M5.Lcd.setCursor(  1*(13*10)-4, 180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*12)-3, 180);  M5.Lcd.print("]"); }
  391.  if (Option8==0) { M5.Lcd.setCursor(  1*(13*14)-10,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*16)-9, 180);  M5.Lcd.print("]"); }
  392.  if (Option8==1) { M5.Lcd.setCursor(  1*(13*18)-11,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*20)-12,180);  M5.Lcd.print("]"); }
  393.  if (Option8==2) { M5.Lcd.setCursor(  1*(13*22)-16,180);  M5.Lcd.print("[");  M5.Lcd.setCursor(  1*(13*24)-14,180);  M5.Lcd.print("]"); }
  394.  
  395.  M5.Lcd.setTextColor(GREEN);    
  396.  M5.Lcd.setTextFont(1);
  397.  M5.Lcd.setTextSize(2);  
  398.  
  399.  if (IndexPos<9)
  400.  {
  401.   M5.Lcd.fillRect(   0, 210, 320, 30, BLUE);
  402.   M5.Lcd.drawRect(   0, 210, 105, 30, WHITE);
  403. //  M5.Lcd.setCursor(  0+5+(13*(3)),217);  M5.Lcd.print("<");
  404.   M5.Lcd.fillTriangle(0+5+(13*(5)), 220, 0+5+(13*(3)), 225, 0+5+(13*(5)), 230, GREEN);
  405.   M5.Lcd.drawRect( 106, 210, 105, 30, WHITE);
  406. //  M5.Lcd.setCursor(106+5+(13*(3)),217);  M5.Lcd.print("V");
  407.   M5.Lcd.fillTriangle(106+5+(13*(3)), 220, 106+5+(13*(4)), 230, 106+5+(13*(5)), 220, GREEN);
  408.   M5.Lcd.drawRect( 212, 210, 105, 30, WHITE);
  409. //  M5.Lcd.setCursor(212+5+(13*(3)),217);  M5.Lcd.print(">");
  410.   M5.Lcd.fillTriangle(212+5+(13*(3)), 220, 212+5+(13*(5)), 225, 212+5+(13*(3)), 230, GREEN);
  411.  
  412.  }
  413.  
  414.  if (MenuLine==9)
  415.  {
  416.   M5.Lcd.fillRect(   0, 210, 320, 30, BLUE);
  417.   M5.Lcd.drawRect(   0, 210, 105, 30, WHITE);
  418.   M5.Lcd.setCursor(  0+5+(13*(3)),217);  M5.Lcd.print(" ");
  419.   M5.Lcd.drawRect( 106, 210, 105, 30, WHITE);
  420. //  M5.Lcd.setCursor(106+5+(13*(3)),217);  M5.Lcd.print("V");
  421.   M5.Lcd.fillTriangle(106+5+(13*(3)), 220, 106+5+(13*(4)), 230, 106+5+(13*(5)), 220, GREEN);
  422.   M5.Lcd.drawRect( 212, 210, 105, 30, WHITE);
  423.   M5.Lcd.setCursor(212+5+(13*(2)),217);  M5.Lcd.print("Exit");
  424.  }
  425. displayBatteryLevel();
  426. }
  427.  
  428.  
  429.  
  430. void getEuroMillionsOptions()
  431. {
  432.  while(1)
  433.  {
  434.   if (M5.BtnB.wasPressed())
  435.   {
  436.     MenuLine++;
  437.     redrawEuroMillionsOptions();
  438.   }
  439.   if (M5.BtnA.wasPressed() && MenuLine<9)
  440.   {
  441.    if (MenuLine==1) Option1--; if (Option1==-3) Option1=-2;
  442.    if (MenuLine==2) Option2--; if (Option2==-3) Option2=-2;
  443.    if (MenuLine==3) Option3--; if (Option3==-3) Option3=-2;
  444.    if (MenuLine==4) Option4--; if (Option4==-3) Option4=-2;
  445.    if (MenuLine==5) Option5--; if (Option5==-3) Option5=-2;
  446.    if (MenuLine==6) Option6--; if (Option6==-3) Option6=-2;
  447.    if (MenuLine==7) Option7--; if (Option7==-3) Option7=-2;
  448.    if (MenuLine==8) Option8--; if (Option8==-3) Option8=-2;
  449.    redrawEuroMillionsOptions();
  450.   }  
  451.  
  452.   if (M5.BtnC.wasPressed() && MenuLine<9)
  453.   {
  454.    if (MenuLine==1) Option1++; if (Option1==3) Option1=2;
  455.    if (MenuLine==2) Option2++; if (Option2==3) Option2=2;
  456.    if (MenuLine==3) Option3++; if (Option3==3) Option3=2;
  457.    if (MenuLine==4) Option4++; if (Option4==3) Option4=2;
  458.    if (MenuLine==5) Option5++; if (Option5==3) Option5=2;
  459.    if (MenuLine==6) Option6++; if (Option6==3) Option6=2;
  460.    if (MenuLine==7) Option7++; if (Option7==3) Option7=2;
  461.    if (MenuLine==8) Option8++; if (Option8==3) Option8=2;
  462.    redrawEuroMillionsOptions();
  463.   }
  464.  
  465.   if (MenuLine>9)
  466.   {
  467.     MenuLine=1;
  468.     redrawEuroMillionsOptions();
  469.   }
  470.  
  471.  
  472.   if (M5.BtnC.wasPressed() && MenuLine==9)
  473.   {
  474.    WriteEprom();
  475.    M5.Lcd.fillRect(   0, 0, 320, 240, BLACK);
  476.    displayBattery();
  477.    displayBatteryLevel();
  478.    displayLogo();
  479.    getEuroMillionsNumbers();
  480.    delay(100);
  481.    break;
  482.   }
  483.  
  484.   displayBatteryLevel();
  485.   M5.update();
  486.  }
  487. }
  488.  
  489.  
  490.  
  491.  
  492.  
  493. void setup()
  494. {
  495.  M5.begin();
  496.  Wire.begin();
  497.  EEPROM.begin(16);
  498.  //ClearEprom(); // Use this the first time program is uploaded for initial Eprom values.
  499.  delay(100);
  500.  ReadEprom();
  501.  displayBattery();
  502.  displayBatteryLevel();
  503.  displayLogo();
  504.  getEuroMillionsNumbers();
  505. }
  506.  
  507.  
  508.  
  509.  
  510. void loop()
  511. {
  512.  
  513.  if (M5.BtnC.wasPressed())
  514.  {
  515.   M5.Lcd.fillRect(   0, 0, 320, 240, BLACK);
  516.   displayBattery();
  517.   displayBatteryLevel();
  518.   displayLogo();
  519.   getEuroMillionsNumbers();
  520.   delay(100);
  521.  }
  522.  
  523.  if (M5.BtnB.wasPressed())
  524.  {
  525.   M5.Lcd.fillRect(   0, 0, 320, 240, BLACK);
  526.   displayBattery();
  527.   displayBatteryLevel();
  528.   MenuLine=0;
  529.   drawEuroMillionsOptions();
  530.   redrawEuroMillionsOptions();
  531.   getEuroMillionsOptions();
  532.   delay(100);
  533.  }
  534.  
  535.   displayBatteryLevel();
  536.  
  537.   M5.update();
  538. }
Add Comment
Please, Sign In to add comment