Advertisement
BlackphoenixPT

New m5Stack Euromillions

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