Advertisement
amr2003

brick

Dec 23rd, 2016
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.84 KB | None | 0 0
  1. #include <LiquidCrystal_I2C.h>
  2. LiquidCrystal_I2C Lcd(0x27, 16, 2);
  3.  
  4. #include <SPI.h>
  5. #include <WiFi.h>
  6.  
  7. char ssid[] = "AESRO2-2.4G";
  8. char password[] = "EA8TDKNFGE";
  9.  
  10. int status = WL_IDLE_STATUS;
  11.  
  12. WiFiClient client;
  13.  
  14. String serverReturn;
  15.  
  16. int currentPage = 0;
  17. int lastPage = 1;
  18. String page[]
  19. {
  20.   "Flashlight",
  21.   "Message",
  22.   "S.O.S"
  23. };
  24. void displayPage(int pageNumber)
  25. {
  26.   if(pageNumber > 2)
  27.   {
  28.      currentPage = 0;
  29.   }
  30.   else
  31.   {
  32.     currentPage = pageNumber;
  33.   }
  34.  
  35.   Serial.println(currentPage);
  36.  
  37.   Lcd.clear();
  38.   Lcd.print(page[currentPage]);
  39.  
  40.   Lcd.setCursor(0,1);
  41.   Lcd.print("[Open]");
  42.   Lcd.setCursor(10, 1);
  43.   Lcd.print("[Next]");
  44. }
  45.  
  46. unsigned long lastConnection;
  47.  
  48. bool isHome = true;
  49.  
  50. bool isMessage = false;
  51. bool messageDidUpdate = false;
  52. String currentMessage;
  53. char alphabet[] = "ABCDEFGHGHIJKLMNOPQRSTUVQXYZ ";
  54. int currentCursor;
  55. int lastX = -1;
  56. bool didSend;
  57.  
  58. bool flashlight;
  59.  
  60. String rawReturn;
  61.  
  62. void setup()
  63. {
  64.   Serial.begin(9600);
  65.  
  66.   pinMode(10, OUTPUT);
  67.   pinMode(11, OUTPUT);
  68.   pinMode(6, OUTPUT);
  69.   pinMode(2, INPUT_PULLUP);
  70.   pinMode(10, INPUT_PULLUP);
  71.   pinMode(2, INPUT_PULLUP);
  72.  
  73.   Lcd.begin();
  74.  
  75.   Lcd.print("BrickOS V5.0.0");
  76.   digitalWrite(6, HIGH);
  77.   delay(300);
  78.   digitalWrite(6, LOW);
  79.  
  80.   delay(1000);
  81.  
  82.   if(WiFi.status() == WL_NO_SHIELD)
  83.   {
  84.     Lcd.clear();
  85.     Lcd.print("No wifi shield");
  86.  
  87.     while(true);
  88.   }
  89.  
  90.   String fv = WiFi.firmwareVersion();
  91.   if(fv != "1.1.0")
  92.   {
  93.     String secline = fv += "->1.1.0";
  94.     Lcd.clear();
  95.     Lcd.print("Firmware update");
  96.     Lcd.setCursor(0,1);
  97.     Lcd.print(secline);
  98.  
  99.     while(true);
  100.   }
  101.  
  102.   while(status != WL_CONNECTED)
  103.   {
  104.     Lcd.clear();
  105.     Lcd.print("Connecting to");
  106.     Lcd.setCursor(0, 1);
  107.     Lcd.print("network...");
  108.  
  109.     status = WiFi.begin(ssid, password);
  110.  
  111.     delay(3000);
  112.   }
  113.  
  114.   Lcd.clear();
  115.   Lcd.print("Connected to:");
  116.   Lcd.setCursor(0, 1);
  117.   Lcd.print(ssid);
  118.   delay(1000);
  119. }
  120.  
  121. void loop()
  122. {
  123.   if(lastPage != currentPage)
  124.   {
  125.     displayPage(currentPage);
  126.   }
  127.   lastPage = currentPage;
  128.  
  129.   if(millis() - lastConnection > 20000)
  130.   {
  131.     serverReturn = "";
  132.     while(client.available()) {
  133.       serverReturn += (char)client.read();
  134.     }
  135.     rawReturn = serverReturn;
  136.     serverReturn = serverReturn.substring(serverReturn.indexOf("*") + 1, serverReturn.length());
  137.  
  138.     client.stop();
  139.     if(client.connect("www.messagenr.esy.es", 80))
  140.     {
  141.       client.println("GET /msg.php?action=check&ID=1 HTTP/1.1");
  142.       client.println("Host: messagenr.esy.es");
  143.       client.println("Connection: close");
  144.       client.println();
  145.     }
  146.  
  147.     Serial.println(rawReturn);
  148.  
  149.     if(serverReturn != "false" && serverReturn != "\n\n" && rawReturn.indexOf("*") != 0)
  150.     {
  151.       digitalWrite(8, HIGH);
  152.  
  153.       Lcd.clear();
  154.       Lcd.print("Message received!");
  155.  
  156.       digitalWrite(6, HIGH);
  157.       delay(500);
  158.       digitalWrite(6, LOW);
  159.  
  160.       delay(1000);
  161.  
  162.       Lcd.clear();
  163.       Lcd.print(serverReturn);
  164.  
  165.       delay(5000);
  166.  
  167.       digitalWrite(8, LOW);
  168.  
  169.       displayPage(currentPage);
  170.     }
  171.  
  172.     lastConnection = millis();
  173.   }
  174.  
  175.   if(isHome)
  176.   {
  177.     if(digitalRead(11) == LOW)
  178.     {
  179.       Serial.println("Open");
  180.  
  181.       switch(currentPage)
  182.       {
  183.         case 0:
  184.           if(!flashlight)
  185.           {
  186.             analogWrite(5, 255);
  187.             analogWrite(3, 255);
  188.             analogWrite(9, 255);
  189.  
  190.             flashlight = true;
  191.           }
  192.           else
  193.           {
  194.             analogWrite(5, 0);
  195.             analogWrite(3, 0);
  196.             analogWrite(9, 0);
  197.  
  198.             flashlight = false;
  199.           }
  200.  
  201.           break;
  202.         case 1:
  203.           isHome = false;
  204.  
  205.           isMessage = true;
  206.  
  207.           break;
  208.         case 2:
  209.           analogWrite(5, 0);
  210.           analogWrite(3, 0);
  211.           analogWrite(9, 255);
  212.  
  213.           Lcd.clear();
  214.           Lcd.print("Notifying Server...");
  215.  
  216.           client.stop();
  217.           if(client.connect("www.messagenr.esy.es", 80))
  218.           {
  219.             client.println("GET /msg.php?action=send&ID=2&message=%23S.O.S%23 HTTP/1.1");
  220.             client.println("Host: messagenr.esy.es");
  221.             client.println("Connection: close");
  222.             client.println();
  223.  
  224.             Lcd.clear();
  225.             Lcd.print("Server notified");
  226.  
  227.             analogWrite(5, 0);
  228.             analogWrite(3, 255);
  229.             analogWrite(9, 0);
  230.  
  231.             delay(1000);
  232.  
  233.             analogWrite(5, 0);
  234.             analogWrite(3, 0);
  235.             analogWrite(9, 0);
  236.  
  237.             displayPage(currentPage);
  238.           }
  239.           else
  240.           {
  241.             Lcd.clear();
  242.             Lcd.print("Failure");
  243.  
  244.             delay(1000);
  245.  
  246.             analogWrite(5, 0);
  247.             analogWrite(3, 0);
  248.             analogWrite(9, 0);
  249.  
  250.             displayPage(currentPage);
  251.           }
  252.  
  253.           break;
  254.       }
  255.     }
  256.     else if(digitalRead(10) == LOW)
  257.     {
  258.       currentPage++;
  259.  
  260.       Serial.println("Next");
  261.     }
  262.   }
  263.  
  264.   if(isMessage)
  265.   {
  266.     delay(300);
  267.  
  268.     if(!messageDidUpdate)
  269.     {
  270.       Lcd.clear();
  271.       Lcd.print(currentMessage);
  272.       Lcd.setCursor(0, 1);
  273.       Lcd.print("[Send]");
  274.       Lcd.setCursor(16 - 8, 1);
  275.       Lcd.print("[Select]");
  276.  
  277.       messageDidUpdate = true;
  278.     }
  279.  
  280.     if(digitalRead(2) == LOW)
  281.     {
  282.       currentCursor++;
  283.  
  284.       if(currentCursor > sizeof(alphabet) - 2)
  285.       {
  286.         currentCursor = 0;
  287.       }
  288.  
  289.       Lcd.setCursor(lastX + 1, 0);
  290.       Lcd.print(alphabet[currentCursor]);
  291.     }
  292.  
  293.     if(digitalRead(10) == LOW)
  294.     {
  295.       currentMessage += alphabet[currentCursor];
  296.  
  297.       lastX++;
  298.  
  299.       digitalWrite(6, HIGH);
  300.       delay(300);
  301.       digitalWrite(6, LOW);
  302.     }
  303.  
  304.     if(digitalRead(11) == LOW)
  305.     {
  306.       Serial.println(currentMessage);
  307.  
  308.       Lcd.clear();
  309.       Lcd.print("Sending Message");
  310.       Lcd.setCursor(0, 1);
  311.       Lcd.print("Please Wait...");
  312.  
  313.       for(int i; i <= 51; i++)
  314.       {
  315.         if(!didSend)
  316.         {
  317.           client.stop();
  318.           if(client.connect("www.messagenr.esy.es", 80))
  319.           {
  320.             client.println((String)"GET /msg.php?action=send&ID=2&message=" += currentMessage += "HTTP/1.1");
  321.             client.println("Host: messagenr.esy.es");
  322.             client.println("Connection: close");
  323.             client.println();
  324.  
  325.             Lcd.clear();
  326.             Lcd.print("Message Sent");
  327.  
  328.             delay(1000);
  329.  
  330.             didSend = true;
  331.  
  332.             break;
  333.           }
  334.         }
  335.  
  336.         delay(500);
  337.       }
  338.  
  339.       if(!didSend)
  340.       {
  341.         Lcd.clear();
  342.         Lcd.print("Failed");
  343.  
  344.         delay(1000);
  345.       }
  346.  
  347.       didSend = false;
  348.       currentCursor = 0;
  349.       currentMessage = "";
  350.       lastX = -1;
  351.       messageDidUpdate = false;
  352.  
  353.       isMessage = false;
  354.       isHome = true;
  355.  
  356.       displayPage(currentPage);
  357.     }
  358.   }
  359.  
  360.   delay(300);
  361. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement