Low-latency-Haptic-Feedback / Haptics_Final_CodeV1 / Haptics_Final_CodeV1.ino
Haptics_Final_CodeV1.ino
Raw
int flexiForcePin_1 = A0; //analog pin 0
int pin_p_1 = 6 ; 
//
int flexiForcePin_2 = A1; //analog pin 0
int pin_p_2 = 5 ; 
//
int flexiForcePin_3 = A2; //analog pin 0 
int pin_p_3 = 3 ; //

int valArray[9];
int valInitArray[9];
bool boolArray[9];
int sum = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(pin_p_1, OUTPUT);
  pinMode(pin_p_2, OUTPUT);
  pinMode(pin_p_3, OUTPUT);

  digitalWrite(pin_p_1,LOW);
  digitalWrite(pin_p_2,LOW);
  digitalWrite(pin_p_3,LOW);

  digitalWrite(pin_p_3,HIGH);
  valInitArray[6] = analogRead(flexiForcePin_1);
  valInitArray[0] = analogRead(flexiForcePin_2);
  valInitArray[3] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_3,LOW);
  
  digitalWrite(pin_p_2,HIGH);
  valInitArray[7] = analogRead(flexiForcePin_1);
  valInitArray[1] = analogRead(flexiForcePin_2);
  valInitArray[4] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_2,LOW);
  
  digitalWrite(pin_p_1,HIGH);
  valInitArray[8] = analogRead(flexiForcePin_1);
  valInitArray[2] = analogRead(flexiForcePin_2);
  valInitArray[5] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_1,LOW);

}

void loop() {

  digitalWrite(pin_p_1,LOW);
  digitalWrite(pin_p_2,LOW);
  digitalWrite(pin_p_3,LOW);
  
  // put your main code here, to run repeatedly:
  digitalWrite(pin_p_3,HIGH);
  valArray[6] = analogRead(flexiForcePin_1);
  valArray[0] = analogRead(flexiForcePin_2);
  valArray[3] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_3,LOW);
  
  digitalWrite(pin_p_2,HIGH);
  valArray[7] = analogRead(flexiForcePin_1);
  valArray[1] = analogRead(flexiForcePin_2);
  valArray[4] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_2,LOW);
  
  digitalWrite(pin_p_1,HIGH);
  valArray[8] = analogRead(flexiForcePin_1);
  valArray[2] = analogRead(flexiForcePin_2);
  valArray[5] = analogRead(flexiForcePin_3);
  digitalWrite(pin_p_1,LOW);
//ARIK'S LOOP 
//  for(int i = 0; i < 8; i++){
//    Serial.print(valArray[i]);
//    Serial.print(",");
//  }
//  Serial.println(valArray[8]);

  sum = 0;
  for(int k = 0; k < 9; k++){
    if(valArray[k] > valInitArray[k] + 90) {//30 success//50
      boolArray[k] = 1;
      sum++;
    }else {
      boolArray[k] = 0;
    }
  }

  for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 3; j++) {
      Serial.print(boolArray[3*i + j]);
      Serial.print("\t");
    }
    Serial.println();
  }

  if(sum == 3){
    if(boolArray[0] + boolArray[1] + boolArray[2] == 3){
      Serial.println("Wall Top");
    }else if(boolArray[3] + boolArray[4] + boolArray[5] == 3){
      Serial.println("Wall Middle Hori");
    }else if(boolArray[6] + boolArray[7] + boolArray[8] == 3){
      Serial.println("Wall Bottom");
    }
    if(boolArray[0] + boolArray[3] + boolArray[6] == 3){
      Serial.println("Wall Left");
    }else if(boolArray[1] + boolArray[4] + boolArray[7] == 3){
      Serial.println("Wall Middle Vert ");
    }else if(boolArray[2] + boolArray[5] + boolArray[8] == 3){
      Serial.println("Wall Right");
    }
  }else if(sum == 4) {
    if(boolArray[0] + boolArray[1] + boolArray[3] + boolArray[4] == 4){
      Serial.println("Bottom Right Edge");
    }else if(boolArray[1] + boolArray[2] + boolArray[4] + boolArray[5] == 4){
      Serial.println("Bottom Left edge");
    }else if(boolArray[6] + boolArray[7] + boolArray[3] + boolArray[4] == 4){
      Serial.println("Top Right Edge");
    }else if(boolArray[8] + boolArray[7] + boolArray[5] + boolArray[4] == 4){
      Serial.println("Top Left Edge");
    }
  }else if(sum == 5) {
    if(boolArray[0] + boolArray[1] + boolArray[3] + boolArray[4] == 0){
      Serial.println("Bottom Right Corner");
    }else if(boolArray[1] + boolArray[2] + boolArray[4] + boolArray[5] == 0){
      Serial.println("Bottom Left Corner");
    }else if(boolArray[6] + boolArray[7] + boolArray[3] + boolArray[4] == 0){
      Serial.println("Top Right Corner");
    }else if(boolArray[8] + boolArray[7] + boolArray[5] + boolArray[4] == 0){
      Serial.println("Top Left Corner");
    }
  }else if(sum == 6){
    if(boolArray[0] + boolArray[1] + boolArray[2] == 0){
      Serial.println("Top Edge");
    }else if(boolArray[3] + boolArray[4] + boolArray[5] == 0){
      Serial.println("Middle Hori Edge");
    }else if(boolArray[6] + boolArray[7] + boolArray[8] == 0){
      Serial.println("Bottom Edge");
    }
    if(boolArray[0] + boolArray[3] + boolArray[6] == 0){
      Serial.println("Left Edge");
    }else if(boolArray[1] + boolArray[4] + boolArray[7] == 0){
      Serial.println("Middle Vert Edge ");
    }else if(boolArray[2] + boolArray[5] + boolArray[8] == 0){
      Serial.println("Right Edge");
    }
  }

  Serial.println("\n");

  
 // delay(100);

}