Advertisement
Walhfort

SNAC - Master

Jun 2nd, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.84 KB | None | 0 0
  1. //Shield TFT
  2. #include <stdint.h>
  3. #include <SeeedTouchScreen.h>
  4. #include <TFTv2.h>
  5. #include <SPI.h>
  6.  
  7. // For better pressure precision, we need to know the resistance
  8. // between X+ and X- Use any multimeter to read it
  9. // The 2.8" TFT Touch shield has 300 ohms across the X plate
  10. TouchScreen ts = TouchScreen(XP, YP, XM, YM);//init TouchScreen port pins
  11.  
  12. int page = 0; //Variable page
  13. unsigned long RefreshTime = 0;//Variable de rafraîchissement des infos
  14. int incomingByte1;      // a variable to read incoming serial data into
  15. int incomingByte2;      // a variable to read incoming serial data into
  16. int incomingByte3;      // a variable to read incoming serial data into
  17.  
  18. char* type[] = {"Nettoyage complet", "Decontamination", "Sechage"};
  19. int type2 = 0;
  20.  
  21.  
  22.  
  23. void setup()
  24. {
  25.     Tft.TFTinit();  //init TFT library
  26.     Serial.begin(9600); //init serial communication
  27.     Menu();
  28. }
  29.  
  30. void loop(){
  31.  
  32.   // Get x y and z coordinates + map the ADC value read to into pixel co-ordinates
  33.   Point p = ts.getPoint();
  34.   p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
  35.   p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);
  36.  
  37.   if(millis() - RefreshTime > 2000){//Actualisation
  38.     if(page == 5)DrawValues1();
  39.     if(page == 6)DrawValues2();
  40.   }
  41.  
  42.   //Fleche de retour
  43.   if (p.x > 0 && p.x < 20 && p.y > 300 && p.y < 320 && p.z > 150){
  44.     switch(page){
  45.       case 1:
  46.         Menu();
  47.         break;
  48.      
  49.       case 2:
  50.         Erreur();
  51.         break;
  52.      
  53.       case 3:
  54.         Erreur();
  55.         break;
  56.        
  57.       case 4:
  58.         Erreur();
  59.         break;
  60.      
  61.       case 5:
  62.         Nettoyage();
  63.         break;
  64.        
  65.       case 6:
  66.         Nettoyage();
  67.         break;
  68.     }
  69.   }
  70.  
  71.   //Flèche vers le bas
  72.   if (p.x > 220 && p.x < 240 && p.y > 300 && p.y < 320 && p.z > 150 && page == 5){
  73.     Info2();
  74.   }
  75.  
  76.   //Flèche vers le haut
  77.   if (p.x > 220 && p.x < 240 && p.y > 0 && p.y < 20 && p.z > 150 && page == 6){
  78.     Info1();
  79.   }
  80.  
  81.   //Page d'erreur
  82.   if ( page == 7 ){
  83.     if (p.x > 30 && p.x < 115 && p.y > 200 && p.y < 250 && p.z > 150){//Bouton oui
  84.       Stop();
  85.       Menu();
  86.     }
  87.     if (p.x > 125 && p.x < 210 && p.y > 200 && p.y < 250 && p.z > 150){//Bouton non
  88.       delay(500);//pour empecher le double clic
  89.       Nettoyage();
  90.     }
  91.      
  92.   }
  93.  
  94.   //Bouttons des pages
  95.   if (p.x > 30 && p.x < 210 && p.y > 240 && p.y < 290 && p.z > 150){//Bouton 3
  96.     switch(page){
  97.       case 0:
  98.         Select();
  99.         break;
  100.      
  101.       case 1:
  102.         type2 = 0;
  103.         Nettoyage();
  104.         break;
  105.        
  106.       case 2:
  107.         Info1();
  108.         break;
  109.        
  110.       case 3:
  111.         Info1();
  112.         break;
  113.      
  114.       case 4:
  115.         Info1();
  116.         break;
  117.     }
  118.   }
  119.   if (p.x > 30 && p.x < 210 && p.y > 160 && p.y < 210 && p.z > 150){//Bouton 2
  120.     switch(page){
  121.       case 1:
  122.         type2 = 1;
  123.         Nettoyage();
  124.         break;
  125.     }
  126.   }
  127.   if (p.x > 30 && p.x < 210 && p.y > 80 && p.y < 130 && p.z > 150){//Bouton 1
  128.     switch(page){
  129.       case 1:
  130.         type2 = 2;
  131.         Nettoyage();
  132.         break;
  133.     }
  134.   }
  135. }
  136.  
  137.  
  138. void Menu(){//Menu principal
  139.   page = 0;
  140.  
  141.   Tft.fillScreen(0, 240, 0, 320,BLUE);
  142.   Tft.fillRectangle(30, 240, 180, 50,RED);
  143.   Tft.drawString("SNAC", 35, 40, 6,BLACK);
  144.   Tft.drawString("Start", 50, 250, 5,BLACK);
  145. }
  146.  
  147. void Select(){//Selection du mode de nettoyage
  148.   page = 1;
  149.   Tft.fillScreen(0, 240, 0, 320,BLUE);
  150.   DrawReturn();
  151.  
  152.   Tft.drawString("Choisissez votre",10,10,2,BLACK);
  153.   Tft.drawString("mode de nettoyage",10,30,2,BLACK);
  154.   Tft.fillRectangle(30, 80, 180, 50,RED);
  155.   Tft.drawString("Sechage", 75, 100, 2,BLACK);
  156.   Tft.fillRectangle(30, 160, 180, 50,RED);
  157.   Tft.drawString("Decontamination", 30, 180, 2,BLACK);
  158.   Tft.fillRectangle(30, 240, 180, 50,RED);
  159.   Tft.drawString("Nettoyage", 70, 250, 2,BLACK);
  160.   Tft.drawString("complet", 80, 270, 2,BLACK);
  161.  
  162. }
  163.  
  164. void Nettoyage(){//Nettoyage + type
  165.   page = type2 + 2;
  166.  
  167.  
  168.   Tft.fillScreen(0, 240, 0, 320,BLUE);
  169.   DrawReturn();
  170.  
  171.   Tft.drawString(type[type2],10,10,2,BLACK);
  172.   Tft.drawString("en cours",10,30,2,BLACK);
  173.   if (type[type2] == "Nettoyage complet"){
  174.     Serial.print('A');
  175.   }
  176.   if (type[type2] == "Decontamination"){
  177.     Serial.print('B');
  178.   }
  179.   if (type[type2] == "Sechage"){
  180.     Serial.print('C');
  181.   }
  182.   Tft.fillRectangle(30, 240, 180, 50,RED);
  183.   Tft.drawString("Infos", 50, 250, 5,BLACK);
  184. }
  185.  
  186. void Info1(){
  187.   page = 5;
  188.   Tft.fillScreen(0, 240, 0, 320,BLUE);
  189.   DrawReturn();
  190.   DrawDown();
  191.   DrawValues1();
  192. }
  193.  
  194. void Info2(){
  195.   page = 6;
  196.   Tft.fillScreen(0, 240, 0, 320,BLUE);
  197.   Tft.fillRectangle(30, 80, 180, 50,RED);
  198.   Tft.fillRectangle(30, 160, 180, 50,RED);
  199.   Tft.fillRectangle(30, 240, 180, 50,RED);
  200.   DrawReturn();
  201.   DrawUp();
  202.   DrawValues2();
  203. }
  204.  
  205. void DrawValues1(){
  206.   Serial.print('D');
  207.   if (Serial.available() >= 3) {
  208.     incomingByte1 = Serial.read();
  209.     incomingByte2 = Serial.read();
  210.     incomingByte3 = Serial.read();
  211.     Tft.drawString("Temperature en C",30,60,2,BLACK);
  212.     Tft.fillRectangle(30, 80, 180, 50,RED);
  213.     Tft.drawNumber(incomingByte1 / 2,40,90,2,BLACK);
  214.     Tft.drawString("Taux de particule",30,140,2,BLACK);
  215.     Tft.fillRectangle(30, 160, 180, 50,RED);
  216.     Tft.drawNumber(incomingByte2,40,250,2,BLACK);
  217.     Tft.drawString("Humidite en %",30,220,2,BLACK);
  218.     Tft.fillRectangle(30, 240, 180, 50,RED);  
  219.     Tft.drawNumber(incomingByte3,40,170,2,BLACK);
  220.     RefreshTime = millis();
  221.   }
  222. }
  223.  
  224. void DrawValues2(){
  225.   Serial.print('E');
  226.   if (Serial.available() >= 3) {
  227.     incomingByte1 = Serial.read();
  228.     incomingByte2 = Serial.read();
  229.     incomingByte3 = Serial.read();
  230.     Tft.drawString("Lampes UV",30,60,2,BLACK);
  231.     Tft.fillRectangle(30, 80, 180, 50,RED);
  232.     Tft.drawNumber(incomingByte1,40,90,2,BLACK);
  233.     Tft.drawString("Resistance",30,140,2,BLACK);
  234.     Tft.fillRectangle(30, 160, 180, 50,RED);
  235.     Tft.drawNumber(incomingByte2,40,170,2,BLACK);
  236.     Tft.drawString("Ventilateur",30,220,2,BLACK);
  237.     Tft.fillRectangle(30, 240, 180, 50,RED);
  238.     Tft.drawNumber(incomingByte3,40,250,2,BLACK);
  239.     RefreshTime = millis();
  240.   }
  241. }
  242.  
  243. void DrawReturn(){//Fleche de retour
  244.   Tft.fillRectangle(14, 299, 6, 16,WHITE);
  245.   Tft.fillRectangle(10, 309, 4, 6,WHITE);
  246.   Tft.fillRectangle(6, 305, 4, 14,WHITE);
  247.   Tft.fillRectangle(4, 307, 2, 10,WHITE);
  248.   Tft.fillRectangle(2, 309, 2, 6,WHITE);
  249.   Tft.fillRectangle(0, 311, 2, 2,WHITE);
  250. }
  251.  
  252. void DrawDown(){//Fleche vers le bas
  253.   Tft.fillRectangle(219, 300, 21, 2,WHITE);
  254.   Tft.fillRectangle(220, 302, 19, 2,WHITE);
  255.   Tft.fillRectangle(221, 304, 17, 2,WHITE);
  256.   Tft.fillRectangle(222, 306, 15, 2,WHITE);
  257.   Tft.fillRectangle(223, 308, 13, 2,WHITE);
  258.   Tft.fillRectangle(224, 310, 11, 2,WHITE);
  259.   Tft.fillRectangle(225, 312, 9, 2,WHITE);
  260.   Tft.fillRectangle(226, 314, 7, 2,WHITE);
  261.   Tft.fillRectangle(227, 316, 5, 2,WHITE);
  262.   Tft.fillRectangle(228, 318, 3, 2,WHITE);
  263.   Tft.fillRectangle(229, 320, 1, 1,WHITE);
  264. }
  265.  
  266. void DrawUp(){//Fleche vers le bas
  267.   Tft.fillRectangle(229, 0, 1, 1,WHITE);
  268.   Tft.fillRectangle(228, 2, 3, 2,WHITE);
  269.   Tft.fillRectangle(227, 4, 5, 2,WHITE);
  270.   Tft.fillRectangle(226, 6, 7, 2,WHITE);
  271.   Tft.fillRectangle(225, 8, 9, 2,WHITE);
  272.   Tft.fillRectangle(224, 10, 11, 2,WHITE);
  273.   Tft.fillRectangle(223, 12, 13, 2,WHITE);
  274.   Tft.fillRectangle(222, 14, 15, 2,WHITE);
  275.   Tft.fillRectangle(221, 16, 17, 2,WHITE);
  276.   Tft.fillRectangle(220, 18, 19, 2,WHITE);
  277.   Tft.fillRectangle(219, 20, 21, 2,WHITE);
  278. }
  279.  
  280. void Erreur(){//Message d'erreur pour arreter le nettoyage en cours
  281.   page = 7;
  282.   Tft.fillRectangle(20, 20, 200, 280,RED);
  283.   Tft.drawString("Voulez-vous", 30, 100, 2,BLACK);
  284.   Tft.drawString("vraiment", 30, 120, 2,BLACK);
  285.   Tft.drawString("quitter ?", 30, 140, 2,BLACK);
  286.   Tft.fillRectangle(30, 200, 85, 50,GREEN);
  287.   Tft.fillRectangle(125, 200, 85, 50,GREEN);
  288.   Tft.drawString("Oui", 40, 210, 3,BLACK);
  289.   Tft.drawString("Non", 135, 210, 3,BLACK);
  290. }
  291.  
  292. void Stop(){
  293.     Serial.print('F');
  294. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement