guillermorangel
4/22/2016 - 7:37 PM

photon sketch for senior design

photon sketch for senior design

int btn_0 = A4;
int btn_1 = A3;
int btn_2 = A2;
int btn_3 = A1;
int btn_reset = A0;

int btn_reset_value = 0;
int btn_0_value = 0;
int btn_1_value = 0;
int btn_2_value = 0;
int btn_3_value = 0;

float btn_0_voltage = 0.00;
float btn_1_voltage = 0.00;
float btn_2_voltage = 0.00;
float btn_3_voltage = 0.00;

// find voltage conversion ratio for calculations
double v_ref = 3.0;
double input_res = 4095;
// voltage conversion ratio
float vcr = v_ref / input_res;

int green = D4;
int yellow = D3;
int red = D2;
int blue = D1;

int device_id;
char *fault_flag;
char *fault_name;
char *fault_channels;

String logic_fault_flag = "false";
String logic_fault_name = "nofault";
String logic_fault_channels = "000000";
String logic_previous_state = "000000";

String logic_in_01_flag = "0";
String previous_logic_in_01_flag = "0";
String logic_in_02_flag = "0";
String previous_logic_in_02_flag = "0";
String logic_in_03_flag = "0";
String previous_logic_in_03_flag = "0";
String logic_in_04_flag = "0";
String previous_logic_in_04_flag = "0";
String logic_in_05_flag = "0";
String previous_logic_in_05_flag = "0";
String logic_in_06_flag = "0";
String previous_logic_in_06_flag = "0";

char post_device_datum_murmuring[255];

// Working Yay!
char post_device_name[255];
const char device_name[] = "randomDeviceFourth";





int led2 = D7;


void setup() {

  device_id = 2;

  pinMode(led2, OUTPUT);

  // set the pinmode for led pins as output
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(yellow, OUTPUT);

  sprintf(post_device_name, "{\"name\": \"%s\"}", device_name);

}

void loop() {

  digitalWrite(led2, HIGH);
  delay(3000);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(1000);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(500);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(500);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(3000);



    // get the state of the buttons
    btn_0_value = analogRead(btn_0);
    btn_1_value = analogRead(btn_1);
    btn_2_value = analogRead(btn_2);
    btn_3_value = analogRead(btn_3);
    btn_reset_value = analogRead(btn_reset);

    // calculate the voltage
    btn_0_voltage = btn_0_value * vcr;
    btn_1_voltage = btn_1_value * vcr;
    btn_2_voltage = btn_2_value * vcr;
    btn_3_voltage = btn_3_value * vcr;
    
    
    
    
    // account for the reset button
    if ( btn_reset_value > 500 ) {
      digitalWrite(red, LOW);
      digitalWrite(blue, LOW);
      digitalWrite(green, LOW);
      digitalWrite(yellow, LOW);

      // reset individual flags
      logic_in_01_flag = "0";
      logic_in_02_flag = "0";
      logic_in_03_flag = "0";
      logic_in_04_flag = "0";
      logic_in_05_flag = "0";
      logic_in_06_flag = "0";

      // reset main flag
      logic_fault_flag = "false";
      
      delay(250);
    }
    

    // if the first button is pressed, turn on/off LED
    if (btn_0_value > 500) {
      digitalWrite(green, HIGH);

      Serial.print("Button 1, Green Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_0_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_0_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_01_flag = "1";

    }

    // if the second button is pressed, turn on/off LED
    if (btn_1_value > 500) {
      digitalWrite(yellow, HIGH);

      Serial.print("Button 2, Yellow Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_1_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_1_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_02_flag = "1";

    }

    // if the third button is pressed, turn on/off LED
    if (btn_2_value > 500) {
      digitalWrite(red, HIGH);

      Serial.print("Button 3, Red Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_2_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_2_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_03_flag = "1";
    }

    // if the fourth button is pressed, turn on/off LED
    if (btn_3_value > 500) {
      digitalWrite(blue, HIGH);

      Serial.print("Button 4, Blue Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_3_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_3_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_04_flag = "1";
    }
    


    logic_fault_channels = logic_in_01_flag + logic_in_02_flag + logic_in_03_flag + logic_in_04_flag + logic_in_05_flag + logic_in_06_flag;


    if (logic_previous_state != logic_fault_channels) {
      Serial.print("Something changed, send a notification\n");

      logic_previous_state = logic_fault_channels;

      if (logic_fault_channels != "000000") {

        logic_fault_flag = "true";

        if (logic_in_01_flag == "1") {

          if (previous_logic_in_01_flag != logic_in_01_flag) {

            previous_logic_in_01_flag = logic_in_01_flag;

            fault_flag = "true";
            fault_name = "channel01";
            fault_channels = "100000";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel1\n");
            delay(1000);
          }
        }

        if (logic_in_02_flag == "1") {

          if (previous_logic_in_02_flag != logic_in_02_flag) {

            previous_logic_in_02_flag = logic_in_02_flag;

            fault_flag = "true";
            fault_name = "channel02";
            fault_channels = "010000";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel2\n");
            
            delay(1000);
          }
        }

        if (logic_in_03_flag == "1") {
          if (previous_logic_in_03_flag != logic_in_03_flag) {

            previous_logic_in_03_flag = logic_in_03_flag;

            fault_flag = "true";
            fault_name = "channel03";
            fault_channels = "001000";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel3\n");
            delay(1000);
          }
        }

        if (logic_in_04_flag == "1") {

          if (previous_logic_in_04_flag != logic_in_04_flag) {

            previous_logic_in_04_flag = logic_in_04_flag;

            fault_flag = "true";
            fault_name = "channel04";
            fault_channels = "000100";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel4\n");
            delay(1000);
          }
        }

        if (logic_in_05_flag == "1") {

          if (previous_logic_in_05_flag != logic_in_05_flag) {

            previous_logic_in_05_flag = logic_in_05_flag;

            fault_flag = "true";
            fault_name = "channel05";
            fault_channels = "000010";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel5\n");
            delay(1000);
          }
        }

        if (logic_in_06_flag == "1") {

          if (previous_logic_in_06_flag != logic_in_06_flag) {

            previous_logic_in_06_flag = logic_in_06_flag;

            fault_flag = "true";
            fault_name = "channel06";
            fault_channels = "000001";
            sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
            Serial.print("channel6\n");
            delay(1000);
          }
        }


      } else if (logic_fault_channels == "000000") {

          logic_fault_flag = "false";

          fault_flag = "false";
          fault_name = "channel00";
          fault_channels = "000000";
          sprintf(post_device_datum_murmuring, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
          Particle.publish("post_device_datum_murmuring", post_device_datum_murmuring, 60, PRIVATE);
          Serial.print("channel0\n");
          delay(1000);
      }

      Serial.print("Fault Flag: " + logic_fault_flag);
      Serial.print("\n");
      Serial.print("Fault Channels: " + logic_fault_channels);
      Serial.print("\n");

    } else {
      Serial.print("no change in faults, no notification\n");

      Serial.print("Fault Flag: " + logic_fault_flag);
      Serial.print("\n");
      Serial.print("Fault Channels: " + logic_fault_channels);
      Serial.print("\n");
    }

    Serial.print("\n");

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);
      
    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(10000);

  //Particle.publish("myfaults_post_device", post_device_name, 60, PRIVATE);


}

int btn_0 = A4;
int btn_1 = A3;
int btn_2 = A2;
int btn_3 = A1;
int btn_reset = A0;

int btn_reset_value = 0;
int btn_0_value = 0;
int btn_1_value = 0;
int btn_2_value = 0;
int btn_3_value = 0;

float btn_0_voltage = 0.00;
float btn_1_voltage = 0.00;
float btn_2_voltage = 0.00;
float btn_3_voltage = 0.00;

// find voltage conversion ratio for calculations
double v_ref = 3.0;
double input_res = 4095;
// voltage conversion ratio
float vcr = v_ref / input_res;

int green = D4;
int yellow = D3;
int red = D2;
int blue = D1;

int device_id;
char *fault_flag;
char *fault_name;
char *fault_channels;

String logic_fault_flag = "false";
String logic_fault_name = "nofault";
String logic_fault_channels = "000000";
String logic_previous_state = "000000";

String logic_in_01_flag = "0";
String previous_logic_in_01_flag = "0";
String logic_in_02_flag = "0";
String previous_logic_in_02_flag = "0";
String logic_in_03_flag = "0";
String previous_logic_in_03_flag = "0";
String logic_in_04_flag = "0";
String previous_logic_in_04_flag = "0";
String logic_in_05_flag = "0";
String previous_logic_in_05_flag = "0";
String logic_in_06_flag = "0";
String previous_logic_in_06_flag = "0";

char post_device_datum[255];

// Working Yay!
char post_device_name[255];
const char device_name[] = "randomDeviceFourth";





int led2 = D7;


void setup() {

  device_id = 13;

  pinMode(led2, OUTPUT);

  // set the pinmode for led pins as output
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(yellow, OUTPUT);

  sprintf(post_device_name, "{\"name\": \"%s\"}", device_name);

}

void loop() {

  digitalWrite(led2, HIGH);
  delay(3000);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(1000);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(500);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(500);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(250);

  digitalWrite(led2, LOW);
  delay(250);

  digitalWrite(led2, HIGH);
  delay(3000);



    // get the state of the buttons
    btn_0_value = analogRead(btn_0);
    btn_1_value = analogRead(btn_1);
    btn_2_value = analogRead(btn_2);
    btn_3_value = analogRead(btn_3);
    btn_reset_value = analogRead(btn_reset);

    // calculate the voltage
    btn_0_voltage = btn_0_value * vcr;
    btn_1_voltage = btn_1_value * vcr;
    btn_2_voltage = btn_2_value * vcr;
    btn_3_voltage = btn_3_value * vcr;
    
    
    
    
    // account for the reset button
    if ( btn_reset_value > 500 ) {
      digitalWrite(red, LOW);
      digitalWrite(blue, LOW);
      digitalWrite(green, LOW);
      digitalWrite(yellow, LOW);

      // reset individual flags
      logic_in_01_flag = "0";
      logic_in_02_flag = "0";
      logic_in_03_flag = "0";
      logic_in_04_flag = "0";
      logic_in_05_flag = "0";
      logic_in_06_flag = "0";

      // reset main flag
      logic_fault_flag = "false";
      
      delay(250);
    }
    

    // if the first button is pressed, turn on/off LED
    if (btn_0_value > 500) {
      digitalWrite(green, HIGH);

      Serial.print("Button 1, Green Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_0_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_0_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_01_flag = "1";

    }

    // if the second button is pressed, turn on/off LED
    if (btn_1_value > 500) {
      digitalWrite(yellow, HIGH);

      Serial.print("Button 2, Yellow Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_1_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_1_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_02_flag = "1";

    }

    // if the third button is pressed, turn on/off LED
    if (btn_2_value > 500) {
      digitalWrite(red, HIGH);

      Serial.print("Button 3, Red Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_2_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_2_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_03_flag = "1";
    }

    // if the fourth button is pressed, turn on/off LED
    if (btn_3_value > 500) {
      digitalWrite(blue, HIGH);

      Serial.print("Button 4, Blue Fault!\n");
      Serial.print("Value: ");
      Serial.print(btn_3_value);
      Serial.print("\nVoltage: ");
      Serial.print(btn_3_voltage);
      Serial.print("\n\n");

      // set individual flag
      logic_in_04_flag = "1";
    }
    


    logic_fault_channels = logic_in_01_flag + logic_in_02_flag + logic_in_03_flag + logic_in_04_flag + logic_in_05_flag + logic_in_06_flag;


    if (logic_previous_state != logic_fault_channels) {
      Serial.print("Something changed, send a notification\n");

      logic_previous_state = logic_fault_channels;

      if (logic_fault_channels != "000000") {

        logic_fault_flag = "true";

        if (logic_in_01_flag == "1") {

          if (previous_logic_in_01_flag != logic_in_01_flag) {

            previous_logic_in_01_flag = logic_in_01_flag;

            fault_flag = "true";
            fault_name = "channel01";
            fault_channels = "100000";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel1\n");
            delay(1000);
          }
        }

        if (logic_in_02_flag == "1") {

          if (previous_logic_in_02_flag != logic_in_02_flag) {

            previous_logic_in_02_flag = logic_in_02_flag;

            fault_flag = "true";
            fault_name = "channel02";
            fault_channels = "010000";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel2\n");
            
            delay(1000);
          }
        }

        if (logic_in_03_flag == "1") {
          if (previous_logic_in_03_flag != logic_in_03_flag) {

            previous_logic_in_03_flag = logic_in_03_flag;

            fault_flag = "true";
            fault_name = "channel03";
            fault_channels = "001000";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel3\n");
            delay(1000);
          }
        }

        if (logic_in_04_flag == "1") {

          if (previous_logic_in_04_flag != logic_in_04_flag) {

            previous_logic_in_04_flag = logic_in_04_flag;

            fault_flag = "true";
            fault_name = "channel04";
            fault_channels = "000100";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel4\n");
            delay(1000);
          }
        }

        if (logic_in_05_flag == "1") {

          if (previous_logic_in_05_flag != logic_in_05_flag) {

            previous_logic_in_05_flag = logic_in_05_flag;

            fault_flag = "true";
            fault_name = "channel05";
            fault_channels = "000010";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel5\n");
            delay(1000);
          }
        }

        if (logic_in_06_flag == "1") {

          if (previous_logic_in_06_flag != logic_in_06_flag) {

            previous_logic_in_06_flag = logic_in_06_flag;

            fault_flag = "true";
            fault_name = "channel06";
            fault_channels = "000001";
            sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
            Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
            Serial.print("channel6\n");
            delay(1000);
          }
        }


      } else if (logic_fault_channels == "000000") {

          logic_fault_flag = "false";

          fault_flag = "false";
          fault_name = "channel00";
          fault_channels = "000000";
          sprintf(post_device_datum, "{\"flag\":\"%s\",\"name\":\"%s\",\"channels\":\"%s\",\"device_id\":%u}", fault_flag, fault_name, fault_channels, device_id);
          Particle.publish("post_device_datum", post_device_datum, 60, PRIVATE);
          Serial.print("channel0\n");
          delay(1000);
      }

      Serial.print("Fault Flag: " + logic_fault_flag);
      Serial.print("\n");
      Serial.print("Fault Channels: " + logic_fault_channels);
      Serial.print("\n");

    } else {
      Serial.print("no change in faults, no notification\n");

      Serial.print("Fault Flag: " + logic_fault_flag);
      Serial.print("\n");
      Serial.print("Fault Channels: " + logic_fault_channels);
      Serial.print("\n");
    }

    Serial.print("\n");

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);
      
    digitalWrite(led2, LOW);
    delay(150);

    digitalWrite(led2, HIGH);
    delay(150);

    digitalWrite(led2, LOW);
    delay(10000);

  //Particle.publish("myfaults_post_device", post_device_name, 60, PRIVATE);


}