From 9eee6c88504e0a6e2d155ed5eb2faf3a77e82928 Mon Sep 17 00:00:00 2001 From: ohjian Date: Tue, 13 Jun 2023 16:38:01 +0200 Subject: [PATCH] =?UTF-8?q?Dateien=20hochladen=20nach=20=E2=80=9Etransform?= =?UTF-8?q?=5Fmodules/weaver=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- transform_modules/weaver/weaver.ino | 357 ++++++++++++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 transform_modules/weaver/weaver.ino diff --git a/transform_modules/weaver/weaver.ino b/transform_modules/weaver/weaver.ino new file mode 100644 index 0000000..3c7f253 --- /dev/null +++ b/transform_modules/weaver/weaver.ino @@ -0,0 +1,357 @@ +/* +WEAVER +// board info: LilyGO TTGO T8 ESP32-S2 - with SD Card Slot +// board select: ESP32S2 DEV Module + +current USB port: 142300 + + + +TO DO +define pins for all the inputs! +fix socket part +redefine range for leftover parameters? +*/ + + +#define socketSensorOut1 45 // PCB: 8 //socket1 out +#define socketSensorOut2 42 // PCB: 16 // socket2 +#define socketSensorOut3 40 // PCB: 7 // socket3 +#define socketSensorOut4 41 // PCB: 15 // socket4 + +#define socketSensorIn1 45 // PCB: 8 // socket1 in +#define socketSensorIn2 42 // PCB: 16 // socket2 +#define socketSensorIn3 40 // PCB: 7 // socket3 +#define socketSensorIn4 41 // PCB: 15 // socket4 + +#define sensor1 1 // PCB: 46 // potentiometer: pattern1_1 +#define sensor2 2 // PCB: 37 // potentiometer: pattern1_2 +#define sensor3 3 // PCB: 36 // potentiometer: pattern1_3 +#define sensor5 4 // PCB: 45 // potentiometer: pattern2_1 +#define sensor6 5 // PCB: 38 // potentiometer: pattern2_2 +#define sensor7 6 // PCB: 35 // potentiometer: pattern2_3 +#define sensor9 7 // PCB: 42 // potentiometer: pattern3_1 +#define sensor10 8 // PCB: 39 // potentiometer: pattern3_2 +#define sensor11 16 // PCB: 34 // potentiometer: pattern3_3 +#define sensor13 15 // PCB: 41 // potentiometer: pattern4_1 +#define sensor14 20 // PCB: 40 // potentiometer: pattern4_2 +#define sensor15 19 // PCB: 33 // potentiometer: pattern4_3 + +#define sensor21 13 // PCB: 13 // potentiometer: patternFactor (*each position in pattern) +#define sensor22 12 // PCB: 12 // potentiometer: patchFactor (*each pattern in patch) +#define sensor23 11 // PCB: 11 // potentiometer: patchworkFactor (*patch) +#define sensorLED 0 // PCB: 0 // LED + + +String pattern1 = ""; +String pattern2 = ""; +String pattern3 = ""; +String pattern4 = ""; + +String patch1 = ""; +String patch2 = ""; + +int socketOutput[] = {socketSensorOut1, socketSensorOut2, socketSensorOut3, socketSensorOut4}; +int socketInput[] = {socketSensorIn1, socketSensorIn2, socketSensorIn3, socketSensorIn4}; + + + +String input; +String newData; +String output; +String moduleID = "#WV"; + + +// the setup routine runs once when you press reset: +void setup() { + // initialize serial and serial1 communication at 115200 and 9600 bits per second: + Serial.begin(115200); //goes to serial monitor, just for debugging purposes + Serial1.begin(9600); // goes to the next module via patch cable (use transmit pin TX on IO17 and also connect to GND) + + Serial1.setTimeout(100); // there is a small bug, so there needs to be a checksum? + + // set mode for digital input to not give floating values, but either 0 or 1: + pinMode(sensorLED, OUTPUT); // set LED pin to output + //LED initial state + digitalWrite(sensorLED, LOW); + + digitalWrite(socketSensorOut1, LOW); + digitalWrite(socketSensorOut2, LOW); + digitalWrite(socketSensorOut3, LOW); + digitalWrite(socketSensorOut4, LOW); +} + + + + +// the loop routine runs over and over again forever: +void loop() { + + + // sensor 1: pattern1_1 + // read analog input + int sensorValue1 = analogRead(sensor1); + // redefine range for font: + int value1 = map(sensorValue1, 0, 8191, 400, 1); + // use value1 to define first position of pattern1: not get int but string with pattern1.1: + String pattern1_1 = ""; + if(value1 >= 1 && value1 < 2) {pattern1_1 = "a";} // if value1 is bigger than or equal to 1 and value1 is smaller than or equal to 100: a + else if(value1 >= 2 && value1 <= 245) {pattern1_1 = "b";} // else if value1 is bigger than or equal to 101 and value1 is smaller than or equal to 200: b + else if(value1 >= 246 && value1 <= 397) {pattern1_1 = "c";} + else if(value1 >= 398 && value1 <= 400) {pattern1_1 = "d";} + + // sensor 2: pattern1_2 + int sensorValue2 = analogRead(sensor2); + int value2 = map(sensorValue2, 0, 8191, 400, 1); + String pattern1_2 = ""; + if(value2 >= 1 && value2 < 2) {pattern1_2 = "a";} + else if(value2 >= 2 && value2 <= 245) {pattern1_2 = "b";} + else if(value2 >= 246 && value2 <= 397) {pattern1_2 = "c";} + else if(value2 >= 398 && value2 <= 400) {pattern1_2 = "d";} + + // sensor 3: pattern1_3 + int sensorValue3 = analogRead(sensor3); + int value3 = map(sensorValue3, 0, 8191, 400, 1); + String pattern1_3 = ""; + if(value3 >= 1 && value3 < 2) {pattern1_3 = "a";} + else if(value3 >= 2 && value3 <= 245) {pattern1_3 = "b";} + else if(value3 >= 246 && value3 <= 397) {pattern1_3 = "c";} + else if(value3 >= 398 && value3 <= 400) {pattern1_3 = "d";} + + // sensor 5: pattern2_1 + int sensorValue5 = analogRead(sensor5); + int value5 = map(sensorValue5, 0, 8191, 400, 1); + String pattern2_1 = ""; + if(value5 >= 1 && value5 < 2) {pattern2_1 = "a";} + else if(value5 >= 2 && value5 <= 245) {pattern2_1 = "b";} + else if(value5 >= 246 && value5 <= 397) {pattern2_1 = "c";} + else if(value5 >= 398 && value5 <= 400) {pattern2_1 = "d";} + + // sensor 6: pattern2_2 + int sensorValue6 = analogRead(sensor6); + int value6 = map(sensorValue6, 0, 8191, 400, 1); + String pattern2_2 = ""; + if(value6 >= 1 && value6 < 2) {pattern2_2 = "a";} + else if(value6 >= 2 && value6 <= 245) {pattern2_2 = "b";} + else if(value6 >= 246 && value6 <= 397) {pattern2_2 = "c";} + else if(value6 >= 398 && value6 <= 400) {pattern2_2 = "d";} + + // sensor 7: pattern2_3 + int sensorValue7 = analogRead(sensor7); + int value7 = map(sensorValue7, 0, 8191, 400, 1); + String pattern2_3 = ""; + if(value7 >= 1 && value7 < 2) {pattern2_3 = "a";} + else if(value7 >= 2 && value7 <= 245) {pattern2_3 = "b";} + else if(value7 >= 246 && value7 <= 397) {pattern2_3 = "c";} + else if(value7 >= 398 && value7 <= 400) {pattern2_3 = "d";} + + // sensor 9: pattern3_1 + int sensorValue9 = analogRead(sensor9); + int value9 = map(sensorValue9, 0, 8191, 400, 1); + String pattern3_1 = ""; + if(value9 >= 1 && value9 < 2) {pattern3_1 = "a";} + else if(value9 >= 2 && value9 <= 245) {pattern3_1 = "b";} + else if(value9 >= 246 && value9 <= 397) {pattern3_1 = "c";} + else if(value9 >= 398 && value9 <= 400) {pattern3_1 = "d";} + + // sensor 10: pattern3_2 + int sensorValue10 = analogRead(sensor10); + int value10 = map(sensorValue10, 0, 8191, 400, 1); + String pattern3_2 = ""; + if(value10 >= 1 && value10 < 2) {pattern3_2 = "a";} + else if(value10 >= 2 && value10 <= 245) {pattern3_2 = "b";} + else if(value10 >= 246 && value10 <= 397) {pattern3_2 = "c";} + else if(value10 >= 398 && value10 <= 400) {pattern3_2 = "d";} + + // sensor 11: pattern3_3 + int sensorValue11 = analogRead(sensor11); + int value11 = map(sensorValue11, 0, 8191, 400, 1); + String pattern3_3 = ""; + if(value11 >= 1 && value11 < 2) {pattern3_3 = "a";} + else if(value11 >= 2 && value11 <= 245) {pattern3_3 = "b";} + else if(value11 >= 246 && value11 <= 397) {pattern3_3 = "c";} + else if(value11 >= 398 && value11 <= 400) {pattern3_3 = "d";} + + // sensor 13: pattern4_1 + int sensorValue13 = analogRead(sensor13); + int value13 = map(sensorValue13, 0, 8191, 400, 1); + String pattern4_1 = ""; + if(value13 >= 1 && value13 < 2) {pattern4_1 = "a";} + else if(value13 >= 2 && value13 <= 245) {pattern4_1 = "b";} + else if(value13 >= 246 && value13 <= 397) {pattern4_1 = "c";} + else if(value13 >= 398 && value13 <= 400) {pattern4_1 = "d";} + + // sensor 14: pattern4_2 + int sensorValue14 = analogRead(sensor14); + int value14 = map(sensorValue14, 0, 8191, 400, 1); + String pattern4_2 = ""; + if(value14 >= 1 && value14 < 2) {pattern4_2 = "a";} + else if(value14 >= 2 && value14 <= 245) {pattern4_2 = "b";} + else if(value14 >= 246 && value14 <= 397) {pattern4_2 = "c";} + else if(value14 >= 398 && value14 <= 400) {pattern4_2 = "d";} + + // sensor 15: pattern4_3 + int sensorValue15 = analogRead(sensor15); + int value15 = map(sensorValue15, 0, 8191, 400, 1); + String pattern4_3 = ""; + if(value15 >= 1 && value15 < 2) {pattern4_3 = "a";} + else if(value15 >= 2 && value15 <= 245) {pattern4_3 = "b";} + else if(value15 >= 246 && value15 <= 397) {pattern4_3 = "c";} + else if(value15 >= 398 && value15 <= 400) {pattern4_3 = "d";} + + + + + // now generate patterns 1 - 4 + pattern1 = String(pattern1_1) + String(pattern1_2) + String(pattern1_3); + pattern2 = String(pattern2_1) + String(pattern2_2) + String(pattern2_3); + pattern3 = String(pattern3_1) + String(pattern3_2) + String(pattern3_3); + pattern4 = String(pattern4_1) + String(pattern4_2) + String(pattern4_3); + + + + + String container = ""; + for (int i=0; i<4; i++) { //int starts at 0 and counts up to length of output) + + pinMode(socketOutput[i], OUTPUT); + digitalWrite(socketOutput[i], LOW); //turn digital writes to HIGH + for (int o=0; o<4; o++) { + if (i!= o) { + pinMode(socketInput[o], INPUT); + pinMode(socketInput[o], INPUT_PULLUP); + bool state = digitalRead(socketInput[o]); + //Serial.println(state); + if (state==LOW){ //if one of the inputs is high, it is connected to this output + //Serial.println("pair:"+ String(i+1)+ String(o+1)); + String pair = String(i+1)+ String(o+1); + //Serial.println(pair); + container = container + pair; + } + + } + + } + + digitalWrite(socketOutput[i], HIGH); + + } + + Serial.println(container); + if (container == "1221") { + patch1 = pattern1 + pattern2; + patch2 = pattern2 + pattern1; + } + else if (container == "1331") { + patch1 = pattern1 + pattern3; + patch2 = pattern3 + pattern1; + } + else if (container == "1441") { + patch1 = pattern1 + pattern4; + patch2 = pattern4 + pattern1; + } + else if (container == "2332") { + patch1 = pattern2 + pattern3; + patch2 = pattern3 + pattern2; + } + else if (container == "2442") { + patch1 = pattern2 + pattern4; + patch2 = pattern4 + pattern2; + } + else if (container == "3443") { + patch1 = pattern3 + pattern4; + patch2 = pattern4 + pattern3; + } + else if (container == "12213443") { + patch1 = pattern1 + pattern2; + patch2 = pattern3 + pattern4; + } + else if (container == "13243142") { + patch1 = pattern1 + pattern3; + patch2 = pattern2 + pattern4; + } + else if (container == "14233241") { + patch1 = pattern1 + pattern4; + patch2 = pattern2 + pattern3; + } + else if (container == "") { + patch1 = ""; + patch2 = ""; + Serial.println("no patch"); + } + container = ""; + + Serial.println(String(patch1) + String(patch2)); + + + // now read leftover parameters + + //sensor21: patternFactor (*each position in pattern) + // read analog input + int sensorValue21 = analogRead(sensor21); + // redefine range: + int value21 = map(sensorValue21, 0, 8191, 8191, 0); + int patternFactor = 0; + if(value21 >= 0 && value21 < 1) {patternFactor = 1;} + else if(value21 >= 1 && value21 <= 3300) {patternFactor = 2;} + else if(value21 >= 3301 && value21 <= 8000) {patternFactor = 3;} + else if(value21 >= 8001 && value21 <= 8191) {patternFactor = 4;} + + + //sensor22: patchFactor (*each pattern in patch) + // read analog input + int sensorValue22 = analogRead(sensor22); + // redefine range: + int value22 = map(sensorValue22, 0, 8191, 8191, 0); + int patchFactor = 0; + if(value22 >= 0 && value22 < 1) {patchFactor = 1;} + else if(value22 >= 1 && value22 <= 3300) {patchFactor = 2;} + else if(value22 >= 3301 && value22 <= 8000) {patchFactor = 3;} + else if(value22 >= 8001 && value22 <= 8191) {patchFactor = 4;} + + + + //sensor23: patchworkFactor (*patch) + // read analog input + int sensorValue23 = analogRead(sensor23); + // redefine range: + int patchworkFactor = map(sensorValue23, 0, 8191, 15, 1); + + + + + String all_parameters = "&&&" + String(moduleID) + "," + String(pattern1_1) + "," + String(pattern1_2) + "," + String(pattern1_3) + "," + String(pattern2_1) + "," + String(pattern2_2) + "," + String(pattern2_3) + "," + String(pattern3_1) + "," + String(pattern3_2) + "," + String(pattern3_3) + "," + String(pattern4_1) + "," + String(pattern4_2) + "," + String(pattern4_3) + "," + String(patch1) + "," + String(patch2) + "," + String(patternFactor) + "," + String(patchFactor) + "," + String(patchworkFactor) + "&&&"; + Serial.println(all_parameters); + + + //put all the above values in a string to define the new data from this module: + newData = "&&&" + String(moduleID) + "," + String(patch1) + "," + String(patch2) + "," + String(patternFactor) + "," + String(patchFactor) + "," + String(patchworkFactor) + "&&&"; + + + + //Receive data from previous module (RX): + input = Serial1.readStringUntil('\n'); // read received data until line break and store in input variable + + //LED + if (input != "") { + digitalWrite(sensorLED, HIGH); //turn LED on + } + else { + digitalWrite(sensorLED, LOW); //turn LED off + } + + + + + output = input + newData; + + //Send data to next module (TX): + Serial1.println(output); //the data received + new data + + //Print data on Serial Monitor: + Serial.println("This is the input I received: " + input); + Serial.println("Weaver, new data: " + newData); + Serial.println("This is the output I send: " + output); + + +}