From fc66d52c6ea5b5a997889f05cbc39e111549dcbe Mon Sep 17 00:00:00 2001 From: ohjian Date: Tue, 13 Jun 2023 16:37:31 +0200 Subject: [PATCH] =?UTF-8?q?Dateien=20hochladen=20nach=20=E2=80=9Etransform?= =?UTF-8?q?=5Fmodules/future=5Frelics=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../future_relics/future_relics.ino | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 transform_modules/future_relics/future_relics.ino diff --git a/transform_modules/future_relics/future_relics.ino b/transform_modules/future_relics/future_relics.ino new file mode 100644 index 0000000..2b0ec37 --- /dev/null +++ b/transform_modules/future_relics/future_relics.ino @@ -0,0 +1,126 @@ +/* +future_relics +// board info: LilyGO TTGO T8 ESP32-S2 - with SD Card Slot +// board select: ESP32S2 DEV Module + +current USB port: 142200 +*/ + + +#define sensor1 1 // PCB: 35 // potentiometer: shape RV1 +#define sensor2 2 // PCB: 36 // potentiometer: rotation RV2 +#define sensor3 3 // PCB: 46 // slide potentiometer: x position RV3 +#define sensor4 4 // PCB: 45 // slide potentiometer: y position RV4 +#define sensor5 5 // PCB: 42 // slide potentiometer: graytone RV5 +#define sensorLED 0 // LED + +String input; +String newData; +String output; +String moduleID = "#FR"; + + +// the setup routine runs once when you press reset: +void setup() { + // initialize serial communication at 115200 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); +} + + + + +// the loop routine runs over and over again forever: +void loop() { + + + // sensor 1: shape + // read analog input + int sensorValue1 = analogRead(sensor1); + // redefine range for font: + int value1 = map(sensorValue1, 0, 8191, 40, 1); + // use value1 to define shape: + String shape = ""; + if(value1 >= 0 && value1 <= 1) {shape = "bubble";} // if value1 is bigger than or equal to 1 and value1 is smaller than or equal to 10: spike + else if(value1 >= 2 && value1 <= 23) {shape = "spike";} // else if value1 is bigger than or equal to 11 and value1 is smaller than or equal to 20: bubble + else if(value1 >= 24 && value1 <= 37) {shape = "fraction";} + else if(value1 >= 38 && value1 <= 40) {shape = "square";} + + + // sensor 2: rotation + // read analog input + int sensorValue2 = analogRead(sensor2); + // redefine range for rotation: + int rotation = map(sensorValue2, 0, 8191, 20, 0); + + + // sensor3: x position + // read analog input + int sensorValue3 = analogRead(sensor3); + // redefine range for x-position: + int xPosition = map(sensorValue3, 0, 8191, 0, 450); + + + // sensor4: y position + // read analog input + int sensorValue4 = analogRead(sensor4); + // redefine range for y-position: + int yPosition = map(sensorValue4, 0, 8191, 0, 700); + + + // sensor5: graytone + // read analog input + int sensorValue5 = analogRead(sensor5); + // redefine range for graytone: + int value5 = map(sensorValue5, 0, 8191, 0, 100); + // graytone: + String graytone = ""; + if(value5 >= 0 && value5 <= 10) {graytone = "0.0";} + else if(value5 >= 11 && value5 <= 20) {graytone = "0.1";} + else if(value5 >= 21 && value5 <= 30) {graytone = "0.2";} + else if(value5 >= 31 && value5 <= 40) {graytone = "0.3";} + else if(value5 >= 41 && value5 <= 50) {graytone = "0.4";} + else if(value5 >= 51 && value5 <= 60) {graytone = "0.5";} + else if(value5 >= 61 && value5 <= 70) {graytone = "0.6";} + else if(value5 >= 71 && value5 <= 80) {graytone = "0.7";} + else if(value5 >= 81 && value5 <= 90) {graytone = "0.8";} + else if(value5 >= 91 && value5 <= 100) {graytone = "0.9";} + + + + //put all the above values in a string to define the new data from this module: + newData = "&&&" + String(moduleID) + "," + String(shape) + "," + String(rotation) + "," + String(xPosition) + "," + String(yPosition) + "," + String(graytone) + "&&&"; + + + + //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("Future Relics, new data: " + newData); + Serial.println("This is the output I send: " + output); + + +}