CRTC Electronics

Click here to edit subtitle

flash LEDs with out using delay()


#include <ESP8266WiFi.h>


const char* ssid = "CJSD_Student";

const char* password = "here2learn";

WiFiServer server(80);

int leftHead = 0;

int rightHead = 13;

int blue = 2;

int red = 15;

int buzzerPin = 16;

int faze = 1;

int state = 2;  //light STATE (0=off, 1=on, 2=flashing)

unsigned long previousMillis = 0;

const long interval = 100;


/*******************************************************************************

 * ***************************************************************************/


void setup() {

  webSetup();

  pinMode(leftHead, OUTPUT);

  pinMode(rightHead, OUTPUT);

  pinMode(blue, OUTPUT);

  pinMode(red, OUTPUT);

  pinMode(buzzerPin, OUTPUT);

}


void loop()

{

  webpage();

  lights();

}


/*******************************************************************************

 * ***************************************************************************/

 

void lights(){

  

  if (state == 0){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);    

  }

  

  if (state == 1){

      digitalWrite(leftHead, 1);

      digitalWrite(rightHead, 1);

      digitalWrite(blue, 1);

      digitalWrite(red, 1);

  }


   if (state == 2){

    unsigned long currentMillis = millis();

    if(currentMillis - previousMillis >= interval) {

      previousMillis = currentMillis;   

      lightsFlashing();

    }

  } 

}


void lightsFlashing(){

  if (faze == 1){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 1);

      digitalWrite(blue, 0);

      digitalWrite(red, 1);   

  }

    if (faze == 2){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);   

  }

    if (faze == 3){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 1);

      digitalWrite(blue, 0);

      digitalWrite(red, 1);   

  }

    if (faze == 4){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);     

  }


    if (faze == 5){

      digitalWrite(leftHead, 1);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 1);

      digitalWrite(red, 0);    

  }

    if (faze == 6){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);    

  }

    if (faze == 7){

      digitalWrite(leftHead, 1);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 1);

      digitalWrite(red, 0);    

  }

    if (faze == 8){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);     

  }


    if (faze == 9){

      digitalWrite(leftHead, 0);

      digitalWrite(rightHead, 0);

      digitalWrite(blue, 0);

      digitalWrite(red, 0);    

      faze = 0;

  }   

  faze++;

}



void webSetup() {

  Serial.begin(115200);

  delay(10);

 

 

  // Connect to WiFi network

  Serial.println();

  Serial.println();

  Serial.print("Connecting to ");

  Serial.println(ssid);

 

  WiFi.begin(ssid, password);

 

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

 

  // Start the server

  server.begin();

  Serial.println("Server started");

 

  // Print the IP address

  Serial.print("Use this URL to connect: ");

  Serial.print("http://");

  Serial.print(WiFi.localIP());

  Serial.println("/");

 

}


void webpage() {

  // Check if a client has connected

  WiFiClient client = server.available();

  if (!client) {

    return;

  }

 

  // Wait until the client sends some data

  Serial.println("new client");

  while(!client.available()){

    delay(1);

  }

 

  // Read the first line of the request

  String request = client.readStringUntil('\r');

  Serial.println(request);

  client.flush();

 

  // Match the request

 

  int value = LOW;

  if (request.indexOf("/LED=ON") != -1)  {

    state = 1;

    value = HIGH;

  }

  if (request.indexOf("/LED=OFF") != -1)  {

    state = 0;

    value = LOW;

  }

  if (request.indexOf("/LED=FLASH") != -1)  {

    state = 2;

    value = 2;

  }

 

  // Set ledPin according to the request

  //digitalWrite(ledPin, value);

 

  // Return the response

  client.println("HTTP/1.1 200 OK");

  client.println("Content-Type: text/html");

  client.println(""); //  do not forget this one

  client.println("<!DOCTYPE HTML>");

  client.println("<html>");

 

  client.print("Led pin is now: ");

 

  if(value == HIGH) {

    client.print("On");

  } else if (value == LOW) {

    client.print("Off");

  } else if (value == 2) {

    client.print("Flash");

  }

  client.println("<br><br>");

  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");

  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a>");  

  client.println("<a href=\"/LED=FLASH\"\"><button>Flash </button></a><br />");  

  client.println("</html>");

 

  delay(1);

  Serial.println("Client disonnected");

  Serial.println("");

}