diff --git a/arduino/TactiloControllerPanda.ino b/arduino/TactiloControllerPanda.ino new file mode 100644 index 0000000..d6a8eae --- /dev/null +++ b/arduino/TactiloControllerPanda.ino @@ -0,0 +1,157 @@ + +///------------------------------------------------------------------------------------------------- +/// +/// \file TactiloControllerPanda.ino +/// \brief Controlls the Tactilos on the Leonardos GPIOs, based on the messages from OpenVibes TactiloController Box Algorithm +/// Hochladen mit der Arduino IDE +/// \author Tobias Baumann (TH-Nürnberg). +/// \version 1.0. +/// \date Mon Mar 7 14:02:56 2022. +/// +///------------------------------------------------------------------------------------------------- + +//define used GPIO pins +#define TAC1 13 //PWM +#define TAC2 11 //PWM +#define TAC3 10 //PWM +#define TAC4 9 //PWM +#define TAC5 6 //PWM +#define TAC6 5 //PWM +//reserve +#define TAC7 3 //PWM +#define TAC8 2 +#define TAC9 1 +#define TAC10 0 + + +#define LED 13 + + +void setup() +{ + //init serial + Serial.begin(115200); + + //init GPIOs + Serial.println("...init GPIOs"); + set_PinMode(); + set_AllLow(); +} + +void loop() +{ + char SerialData; + + if(Serial.available() > 0) + { + SerialData = Serial.read(); + processSerialData(SerialData); + } +} + +void set_PinMode() +{ + //set all pins to OUTPUT + pinMode(TAC1, OUTPUT); + pinMode(TAC2, OUTPUT); + pinMode(TAC3, OUTPUT); + pinMode(TAC4, OUTPUT); + pinMode(TAC5, OUTPUT); + pinMode(TAC6, OUTPUT); + pinMode(TAC7, OUTPUT); + pinMode(TAC8, OUTPUT); + pinMode(TAC9, OUTPUT); + pinMode(TAC10, OUTPUT); + + pinMode(LED, OUTPUT); +} + +void set_AllLow() +{ + //set all pins to LOW + digitalWrite(TAC1, LOW); + digitalWrite(TAC2, LOW); + digitalWrite(TAC3, LOW); + digitalWrite(TAC4, LOW); + digitalWrite(TAC5, LOW); + digitalWrite(TAC6, LOW); + digitalWrite(TAC7, LOW); + digitalWrite(TAC8, LOW); + digitalWrite(TAC9, LOW); + digitalWrite(TAC10, LOW); + + digitalWrite(LED, LOW); +} + +void processSerialData(char SerialData) +{ + switch(SerialData) + { + case '0': + digitalWrite(TAC1, !digitalRead(TAC1)); + Serial.print("Tactilo 1: "); + Serial.println(digitalRead(TAC1)); + break; + case '1': + digitalWrite(TAC2, !digitalRead(TAC2)); + Serial.print("Tactilo 2: "); + Serial.println(digitalRead(TAC2)); + break; + case '2': + digitalWrite(TAC3, !digitalRead(TAC3)); + Serial.print("Tactilo 3: "); + Serial.println(digitalRead(TAC3)); + break; + case '3': + digitalWrite(TAC4, !digitalRead(TAC4)); + Serial.print("Tactilo 4: "); + Serial.println(digitalRead(TAC4)); + break; + case '4': + digitalWrite(TAC5, !digitalRead(TAC5)); + Serial.print("Tactilo 5: "); + Serial.println(digitalRead(TAC5)); + break; + case '5': + digitalWrite(TAC6, !digitalRead(TAC6)); + Serial.print("Tactilo 6: "); + Serial.println(digitalRead(TAC6)); + break; + case '6': + digitalWrite(TAC7, !digitalRead(TAC7)); + Serial.print("Tactilo 7: "); + Serial.println(digitalRead(TAC7)); + break; + case '7': + digitalWrite(TAC8, !digitalRead(TAC8)); + Serial.print("Tactilo 8: "); + Serial.println(digitalRead(TAC8)); + break; + case '8': + digitalWrite(TAC9, !digitalRead(TAC9)); + Serial.print("Tactilo 9: "); + Serial.println(digitalRead(TAC9)); + break; + case '9': + digitalWrite(TAC10, !digitalRead(TAC10)); + Serial.print("Tactilo 10: "); + Serial.println(digitalRead(TAC10)); + break; + case 'b': + if(digitalRead(LED) == LOW) + { + digitalWrite(LED, HIGH); + Serial.println("...Begin Tactile Session"); + } + break; + case 'e': + if(digitalRead(LED) == HIGH) + { + set_AllLow(); + Serial.println("...End Tactile Session"); + } + break; + default: + break; + } +} \ No newline at end of file