Browse Source

Dateien hochladen nach „“

master
Tobias Baumann 2 years ago
parent
commit
b11fe766ac
2 changed files with 147 additions and 160 deletions
  1. 3
    3
      README.md
  2. 144
    157
      TactiloControllerPanda.ino

+ 3
- 3
README.md View File

# TactiloControllerPanda
Dieses Programm fuer den, auf dem Lattepanda integrierten Arduino Leonardo, empfaengt Daten von der Korrespondierenden OpenViBE Box ueber eine serielle Schnittstelle. <br />
Auf Basis der erhaltenen Daten, werden die sechs bis zehn Tactilos des Taktilen Brain Computer Interface angesteuert. Das Timing wird dabei komplett von OpenViBE uebernommen.
# TactiloControllerPanda
Dieses Programm empfaengt Daten von der Korrespondierenden OpenViBE Box ueber eine serielle Schnittstelle. <br />
Auf Basis der erhaltenen Daten, werden die bis zu zehn Tactilos des Taktilen Brain Computer Interface angesteuert. Das Timing wird dabei komplett von OpenViBE uebernommen.

+ 144
- 157
TactiloControllerPanda.ino View File


///-------------------------------------------------------------------------------------------------
///
/// \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;
}
}

Loading…
Cancel
Save