Skip to content

Instantly share code, notes, and snippets.

@inajob
Last active July 21, 2024 00:59
Show Gist options
  • Save inajob/b5cf4862a5c6c0c7ee51184576b591c4 to your computer and use it in GitHub Desktop.
Save inajob/b5cf4862a5c6c0c7ee51184576b591c4 to your computer and use it in GitHub Desktop.
byte firstTouches[10];
bool state[20];
uint32_t countOn[20];
uint32_t countOff[20];
void setup(void) {
Serial.begin(115200);
firstTouches[0] = touchRead(T0);
firstTouches[1] = touchRead(T2);
firstTouches[2] = touchRead(T3);
firstTouches[3] = touchRead(T4);
firstTouches[4] = touchRead(T5);
firstTouches[5] = touchRead(T6);
firstTouches[6] = touchRead(T7);
firstTouches[7] = touchRead(T8);
firstTouches[8] = touchRead(T9);
for(byte i = 0; i < 20; i ++){
state[i] = false;
countOn[i] = 0;
countOff[i] = 0;
}
pinMode(25, OUTPUT); digitalWrite(25, HIGH);
pinMode(26, OUTPUT); digitalWrite(26, HIGH);
pinMode(16, OUTPUT); digitalWrite(16, HIGH);
pinMode(17, OUTPUT); digitalWrite(17, HIGH);
pinMode(18, OUTPUT); digitalWrite(18, LOW);
pinMode(19, OUTPUT); digitalWrite(19, LOW);
pinMode(21, OUTPUT); digitalWrite(21, LOW);
pinMode(22, OUTPUT); digitalWrite(22, LOW);
pinMode(23, OUTPUT); digitalWrite(23, LOW);
Serial.println("hello world");
}
void press(uint32_t n){
if(countOn[n] < 1024){
countOn[n] ++;
}
if(state[n] == false){
if(countOn[n] > 10){
state[n] = true;
Serial.print(n);
Serial.println("ON");
countOff[n] = 0;
}
}
}
void release(uint32_t n){
if(countOff[n] < 1024){
countOff[n] ++;
}
if(state[n] == true){
if(countOff[n] > 5){
state[n] = false;
Serial.print(n);
Serial.println("OFF");
countOn[n] = 0;
}
}
}
void allLow(){
pinMode(25, OUTPUT); digitalWrite(25, LOW);
pinMode(26, OUTPUT); digitalWrite(26, LOW);
pinMode(16, OUTPUT); digitalWrite(16, LOW);
pinMode(17, OUTPUT); digitalWrite(17, LOW);
}
void loop(void) {
byte touches[10];
byte value[10];
touches[0] = touchRead(T0);
//touches[1] = touchRead(T1);
touches[1] = touchRead(T2);
touches[2] = touchRead(T3);
touches[3] = touchRead(T4);
touches[4] = touchRead(T5);
touches[5] = touchRead(T6);
touches[6] = touchRead(T7);
touches[7] = touchRead(T8);
touches[8] = touchRead(T9);
for(byte i = 0; i < 9; i ++){
if(firstTouches[i] != 0){
value[i] = 100 * touches[i] / firstTouches[i];
}else{
value[i] = touches[i];
}
}
bool values[10];
uint8_t count = 0;
for(byte i = 0; i < 9; i ++){
if(value[i] < 85){
count ++;
values[i] = true;
//Serial.print(i);
//Serial.print(":");
//Serial.print(value[i]);
//Serial.print(", ");
}else{
values[i] = false;
}
}
//Serial.println();
// 0,1,2,3,4
// 5,6,7,8
for(uint8_t i = 0; i < 5; i ++){
if(values[i]){
if(values[5]){press(0 + i * 4);}
if(values[6]){press(1 + i * 4);}
if(values[7]){press(2 + i * 4);}
if(values[8]){press(3 + i * 4);}
}
}
for(uint8_t i = 0; i < 20; i ++){
if(state[i]){
if(!values[i%4 + 5] || !values[i/4]){
release(i%4 + (i/4)*4);
Serial.print(i);
Serial.print(",");
}
}
}
//Serial.println();
allLow();
pinMode(18, OUTPUT); digitalWrite(18, state[3]);
pinMode(19, OUTPUT); digitalWrite(19, state[11]);
pinMode(21, OUTPUT); digitalWrite(21, state[15]);
pinMode(22, OUTPUT); digitalWrite(22, state[7]);
pinMode(23, OUTPUT); digitalWrite(23, state[4]);
pinMode(25, OUTPUT); digitalWrite(25, HIGH);
pinMode(26, OUTPUT); digitalWrite(26, LOW);
pinMode(16, OUTPUT); digitalWrite(16, LOW);
pinMode(17, OUTPUT); digitalWrite(17, LOW);
delay(1);
allLow();
pinMode(18, OUTPUT); digitalWrite(18, state[2]);
pinMode(19, OUTPUT); digitalWrite(19, state[10]);
pinMode(21, OUTPUT); digitalWrite(21, state[14]);
pinMode(22, OUTPUT); digitalWrite(22, state[6]);
pinMode(23, OUTPUT); digitalWrite(23, state[9]);
pinMode(25, OUTPUT); digitalWrite(25, LOW);
pinMode(26, OUTPUT); digitalWrite(26, HIGH);
pinMode(16, OUTPUT); digitalWrite(16, LOW);
pinMode(17, OUTPUT); digitalWrite(17, LOW);
delay(1);
allLow();
pinMode(18, OUTPUT); digitalWrite(18, state[1]);
pinMode(19, OUTPUT); digitalWrite(19, state[9]);
pinMode(21, OUTPUT); digitalWrite(21, state[13]);
pinMode(22, OUTPUT); digitalWrite(22, state[5]);
pinMode(23, OUTPUT); digitalWrite(23, state[14]);
pinMode(25, OUTPUT); digitalWrite(25, LOW);
pinMode(26, OUTPUT); digitalWrite(26, LOW);
pinMode(16, OUTPUT); digitalWrite(16, HIGH);
pinMode(17, OUTPUT); digitalWrite(17, LOW);
delay(1);
allLow();
pinMode(18, OUTPUT); digitalWrite(18, state[0]);
pinMode(19, OUTPUT); digitalWrite(19, state[8]);
pinMode(21, OUTPUT); digitalWrite(21, state[12]);
pinMode(22, OUTPUT); digitalWrite(22, state[4]);
pinMode(23, OUTPUT); digitalWrite(23, state[19]);
pinMode(25, OUTPUT); digitalWrite(25, LOW);
pinMode(26, OUTPUT); digitalWrite(26, LOW);
pinMode(16, OUTPUT); digitalWrite(16, LOW);
pinMode(17, OUTPUT); digitalWrite(17, HIGH);
delay(1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment