Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C Lcd(0x27, 16, 2);
- #include <SPI.h>
- #include <WiFi.h>
- char ssid[] = "AESRO2-2.4G";
- char password[] = "EA8TDKNFGE";
- int status = WL_IDLE_STATUS;
- WiFiClient client;
- String serverReturn;
- int currentPage = 0;
- int lastPage = 1;
- String page[]
- {
- "Flashlight",
- "Message",
- "S.O.S"
- };
- void displayPage(int pageNumber)
- {
- if(pageNumber > 2)
- {
- currentPage = 0;
- }
- else
- {
- currentPage = pageNumber;
- }
- Serial.println(currentPage);
- Lcd.clear();
- Lcd.print(page[currentPage]);
- Lcd.setCursor(0,1);
- Lcd.print("[Open]");
- Lcd.setCursor(10, 1);
- Lcd.print("[Next]");
- }
- unsigned long lastConnection;
- bool isHome = true;
- bool isMessage = false;
- bool messageDidUpdate = false;
- String currentMessage;
- char alphabet[] = "ABCDEFGHGHIJKLMNOPQRSTUVQXYZ ";
- int currentCursor;
- int lastX = -1;
- bool didSend;
- bool flashlight;
- String rawReturn;
- void setup()
- {
- Serial.begin(9600);
- pinMode(10, OUTPUT);
- pinMode(11, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(2, INPUT_PULLUP);
- pinMode(10, INPUT_PULLUP);
- pinMode(2, INPUT_PULLUP);
- Lcd.begin();
- Lcd.print("BrickOS V5.0.0");
- digitalWrite(6, HIGH);
- delay(300);
- digitalWrite(6, LOW);
- delay(1000);
- if(WiFi.status() == WL_NO_SHIELD)
- {
- Lcd.clear();
- Lcd.print("No wifi shield");
- while(true);
- }
- String fv = WiFi.firmwareVersion();
- if(fv != "1.1.0")
- {
- String secline = fv += "->1.1.0";
- Lcd.clear();
- Lcd.print("Firmware update");
- Lcd.setCursor(0,1);
- Lcd.print(secline);
- while(true);
- }
- while(status != WL_CONNECTED)
- {
- Lcd.clear();
- Lcd.print("Connecting to");
- Lcd.setCursor(0, 1);
- Lcd.print("network...");
- status = WiFi.begin(ssid, password);
- delay(3000);
- }
- Lcd.clear();
- Lcd.print("Connected to:");
- Lcd.setCursor(0, 1);
- Lcd.print(ssid);
- delay(1000);
- }
- void loop()
- {
- if(lastPage != currentPage)
- {
- displayPage(currentPage);
- }
- lastPage = currentPage;
- if(millis() - lastConnection > 20000)
- {
- serverReturn = "";
- while(client.available()) {
- serverReturn += (char)client.read();
- }
- rawReturn = serverReturn;
- serverReturn = serverReturn.substring(serverReturn.indexOf("*") + 1, serverReturn.length());
- client.stop();
- if(client.connect("www.messagenr.esy.es", 80))
- {
- client.println("GET /msg.php?action=check&ID=1 HTTP/1.1");
- client.println("Host: messagenr.esy.es");
- client.println("Connection: close");
- client.println();
- }
- Serial.println(rawReturn);
- if(serverReturn != "false" && serverReturn != "\n\n" && rawReturn.indexOf("*") != 0)
- {
- digitalWrite(8, HIGH);
- Lcd.clear();
- Lcd.print("Message received!");
- digitalWrite(6, HIGH);
- delay(500);
- digitalWrite(6, LOW);
- delay(1000);
- Lcd.clear();
- Lcd.print(serverReturn);
- delay(5000);
- digitalWrite(8, LOW);
- displayPage(currentPage);
- }
- lastConnection = millis();
- }
- if(isHome)
- {
- if(digitalRead(11) == LOW)
- {
- Serial.println("Open");
- switch(currentPage)
- {
- case 0:
- if(!flashlight)
- {
- analogWrite(5, 255);
- analogWrite(3, 255);
- analogWrite(9, 255);
- flashlight = true;
- }
- else
- {
- analogWrite(5, 0);
- analogWrite(3, 0);
- analogWrite(9, 0);
- flashlight = false;
- }
- break;
- case 1:
- isHome = false;
- isMessage = true;
- break;
- case 2:
- analogWrite(5, 0);
- analogWrite(3, 0);
- analogWrite(9, 255);
- Lcd.clear();
- Lcd.print("Notifying Server...");
- client.stop();
- if(client.connect("www.messagenr.esy.es", 80))
- {
- client.println("GET /msg.php?action=send&ID=2&message=%23S.O.S%23 HTTP/1.1");
- client.println("Host: messagenr.esy.es");
- client.println("Connection: close");
- client.println();
- Lcd.clear();
- Lcd.print("Server notified");
- analogWrite(5, 0);
- analogWrite(3, 255);
- analogWrite(9, 0);
- delay(1000);
- analogWrite(5, 0);
- analogWrite(3, 0);
- analogWrite(9, 0);
- displayPage(currentPage);
- }
- else
- {
- Lcd.clear();
- Lcd.print("Failure");
- delay(1000);
- analogWrite(5, 0);
- analogWrite(3, 0);
- analogWrite(9, 0);
- displayPage(currentPage);
- }
- break;
- }
- }
- else if(digitalRead(10) == LOW)
- {
- currentPage++;
- Serial.println("Next");
- }
- }
- if(isMessage)
- {
- delay(300);
- if(!messageDidUpdate)
- {
- Lcd.clear();
- Lcd.print(currentMessage);
- Lcd.setCursor(0, 1);
- Lcd.print("[Send]");
- Lcd.setCursor(16 - 8, 1);
- Lcd.print("[Select]");
- messageDidUpdate = true;
- }
- if(digitalRead(2) == LOW)
- {
- currentCursor++;
- if(currentCursor > sizeof(alphabet) - 2)
- {
- currentCursor = 0;
- }
- Lcd.setCursor(lastX + 1, 0);
- Lcd.print(alphabet[currentCursor]);
- }
- if(digitalRead(10) == LOW)
- {
- currentMessage += alphabet[currentCursor];
- lastX++;
- digitalWrite(6, HIGH);
- delay(300);
- digitalWrite(6, LOW);
- }
- if(digitalRead(11) == LOW)
- {
- Serial.println(currentMessage);
- Lcd.clear();
- Lcd.print("Sending Message");
- Lcd.setCursor(0, 1);
- Lcd.print("Please Wait...");
- for(int i; i <= 51; i++)
- {
- if(!didSend)
- {
- client.stop();
- if(client.connect("www.messagenr.esy.es", 80))
- {
- client.println((String)"GET /msg.php?action=send&ID=2&message=" += currentMessage += "HTTP/1.1");
- client.println("Host: messagenr.esy.es");
- client.println("Connection: close");
- client.println();
- Lcd.clear();
- Lcd.print("Message Sent");
- delay(1000);
- didSend = true;
- break;
- }
- }
- delay(500);
- }
- if(!didSend)
- {
- Lcd.clear();
- Lcd.print("Failed");
- delay(1000);
- }
- didSend = false;
- currentCursor = 0;
- currentMessage = "";
- lastX = -1;
- messageDidUpdate = false;
- isMessage = false;
- isHome = true;
- displayPage(currentPage);
- }
- }
- delay(300);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement