|
|
|
|
|
|
|
|
|
|
|
|
|
|
///------------------------------------------------------------------------------------------------- |
|
|
|
|
|
/// |
|
|
|
|
|
/// \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; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///-------------------------------------------------------------------------------------------------
|
|
|
|
|
|
///
|
|
|
|
|
|
/// \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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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':
|
|
|
|
|
|
Serial.println("...Begin Tactile Session");
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 'e':
|
|
|
|
|
|
set_AllLow();
|
|
|
|
|
|
Serial.println("...End Tactile Session");
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|