Id like to ask some help, the input pins randomly gets high when other sensor is active, as well as the output randomly gets high.
I already have a pull down 4.7k resistor on input and output but still the function is erractic.
Please see the attached code/program on Arduino nano.
Overall Idea Function
This program reads 7 touch sensors (A0βA6) and controls 7 outputs (D2βD8).
Only ONE sensor is allowed to be active at a time.
When exactly one sensor is touched, it turns ON its corresponding output for 1 second.
Pin Setup
- Inputs (sensors):
- A0 β touchSensor1
- A1 β touchSensor2
- β¦
- A6 β touchSensor7
- Outputs:
- D2 β for sensor 1
- D3 β for sensor 2
- β¦
- D8 β for sensor 7
------Here is the Code----
const int D2 = 2;
const int D3 = 3;
const int D4 = 4;
const int D5 = 5;
const int D6 = 6;
const int D7 = 7;
const int D8 = 8;
const int A0 = 14;
const int A1 = 15;
const int A2 = 16;
const int A3 = 17;
const int A4 = 18;
const int A5 = 19;
const int A6 = 20;
int touchSensor1 = 0;
int touchSensor2 = 0;
int touchSensor3 = 0;
int touchSensor4 = 0;
int touchSensor5 = 0;
int touchSensor6 = 0;
int touchSensor7 = 0;
int triggerDuration = 1000;
int outputDefault = HIGH;
int outputTriggered = LOW;
int inputDefault = LOW;
int inputTriggered = HIGH;
void setup() {
Serial.begin(9600);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
pinMode(A6, INPUT);
}
void loop() {
touchSensor1 = digitalRead(A0);
touchSensor2 = digitalRead(A1);
touchSensor3 = digitalRead(A2);
touchSensor4 = digitalRead(A3);
touchSensor5 = digitalRead(A4);
touchSensor6 = digitalRead(A5);
touchSensor7 = digitalRead(A6);
// if analog only
/*
int rawA6 = analogRead(A6);
touchSensor7 = (rawA6 > 500) ? HIGH : LOW;
*/
digitalWrite(D2, outputDefault);
digitalWrite(D3, outputDefault);
digitalWrite(D4, outputDefault);
digitalWrite(D5, outputDefault);
digitalWrite(D6, outputDefault);
digitalWrite(D7, outputDefault);
digitalWrite(D8, outputDefault);
if (touchSensor1 == inputTriggered && touchSensor2 == inputDefault && touchSensor3 == inputDefault && touchSensor4 == inputDefault &&
touchSensor5 == inputDefault && touchSensor6 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D2, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor1 is ");
Serial.print(inputTriggered);
Serial.print(" and D2 is ");
Serial.println(outputTriggered);
} else if (touchSensor2 == inputTriggered && touchSensor1 == inputDefault && touchSensor3 == inputDefault && touchSensor4 == inputDefault &&
touchSensor5 == inputDefault && touchSensor6 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D3, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor2 is ");
Serial.print(inputTriggered);
Serial.print(" and D3 is ");
Serial.println(outputTriggered);
} else if (touchSensor3 == inputTriggered && touchSensor1 == inputDefault && touchSensor2 == inputDefault && touchSensor4 == inputDefault &&
touchSensor5 == inputDefault && touchSensor6 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D4, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor3 is ");
Serial.print(inputTriggered);
Serial.print(" and D4 is ");
Serial.println(outputTriggered);
} else if (touchSensor4 == inputTriggered && touchSensor1 == inputDefault && touchSensor2 == inputDefault && touchSensor3 == inputDefault &&
touchSensor5 == inputDefault && touchSensor6 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D5, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor4 is ");
Serial.print(inputTriggered);
Serial.print(" and D5 is ");
Serial.println(outputTriggered);
} else if (touchSensor5 == inputTriggered && touchSensor1 == inputDefault && touchSensor2 == inputDefault && touchSensor3 == inputDefault &&
touchSensor4 == inputDefault && touchSensor6 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D6, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor5 is ");
Serial.print(inputTriggered);
Serial.print(" and D6 is ");
Serial.println(outputTriggered);
} else if (touchSensor6 == inputTriggered && touchSensor1 == inputDefault && touchSensor2 == inputDefault && touchSensor3 == inputDefault &&
touchSensor4 == inputDefault && touchSensor5 == inputDefault && touchSensor7 == inputDefault) {
digitalWrite(D7, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor6 is ");
Serial.print(inputTriggered);
Serial.print(" and D7 is ");
Serial.println(outputTriggered);
} else if (touchSensor7 == inputTriggered && touchSensor1 == inputDefault && touchSensor2 == inputDefault && touchSensor3 == inputDefault &&
touchSensor4 == inputDefault && touchSensor5 == inputDefault && touchSensor6 == inputDefault) {
digitalWrite(D8, outputTriggered);
delay(triggerDuration);
Serial.print("touchSensor7 is ");
Serial.print(inputTriggered);
Serial.print(inputTriggered);
Serial.print(" and D8 is ");
Serial.println(outputTriggered);
}
}

