You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TactiloControllerPanda.ino 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. ///-------------------------------------------------------------------------------------------------
  2. ///
  3. /// \file TactiloControllerPanda.ino
  4. /// \brief Controlls the Tactilos on the Leonardos GPIOs, based on the messages from OpenVibes TactiloController Box Algorithm
  5. /// \author Tobias Baumann (TH-Nürnberg).
  6. /// \version 1.0.
  7. /// \date Mon Mar 7 14:02:56 2022.
  8. ///
  9. ///-------------------------------------------------------------------------------------------------
  10. //define used GPIO pins
  11. #define TAC1 7
  12. #define TAC2 8
  13. #define TAC3 9
  14. #define TAC4 10
  15. #define TAC5 11
  16. #define TAC6 12
  17. #define LED 13
  18. void setup()
  19. {
  20. //init serial
  21. Serial.begin(115200);
  22. //init GPIOs
  23. Serial.println("...init GPIOs");
  24. set_PinMode();
  25. set_AllLow();
  26. }
  27. void loop()
  28. {
  29. char SerialData;
  30. if(Serial.available() > 0)
  31. {
  32. SerialData = Serial.read();
  33. }
  34. processSerialData(SerialData);
  35. }
  36. void set_PinMode()
  37. {
  38. //set all pins to OUTPUT
  39. pinMode(TAC1, OUTPUT);
  40. pinMode(TAC2, OUTPUT);
  41. pinMode(TAC3, OUTPUT);
  42. pinMode(TAC4, OUTPUT);
  43. pinMode(TAC5, OUTPUT);
  44. pinMode(TAC6, OUTPUT);
  45. pinMode(LED, OUTPUT);
  46. }
  47. void set_AllLow()
  48. {
  49. //set all pins to LOW
  50. digitalWrite(TAC1, LOW);
  51. digitalWrite(TAC2, LOW);
  52. digitalWrite(TAC3, LOW);
  53. digitalWrite(TAC4, LOW);
  54. digitalWrite(TAC5, LOW);
  55. digitalWrite(TAC6, LOW);
  56. digitalWrite(LED, LOW);
  57. }
  58. void processSerialData(char SerialData)
  59. {
  60. switch(SerialData)
  61. {
  62. case '0':
  63. if(digitalRead(LED) == LOW)
  64. {
  65. digitalWrite(LED, HIGH);
  66. Serial.println("...Start Tactile Session");
  67. }
  68. else
  69. {
  70. set_AllLow();
  71. Serial.println("...End Tactile Session");
  72. }
  73. break;
  74. case '1':
  75. digitalWrite(TAC1, !digitalRead(TAC1));
  76. Serial.print("Tactilo 1: ");
  77. Serial.println(digitalRead(TAC1));
  78. break;
  79. case '2':
  80. digitalWrite(TAC2, !digitalRead(TAC2));
  81. Serial.print("Tactilo 2: ");
  82. Serial.println(digitalRead(TAC2));
  83. break;
  84. case '3':
  85. digitalWrite(TAC3, !digitalRead(TAC3));
  86. Serial.print("Tactilo 3: ");
  87. Serial.println(digitalRead(TAC3));
  88. break;
  89. case '4':
  90. digitalWrite(TAC4, !digitalRead(TAC4));
  91. Serial.print("Tactilo 4: ");
  92. Serial.println(digitalRead(TAC4));
  93. break;
  94. case '5':
  95. digitalWrite(TAC5, !digitalRead(TAC5));
  96. Serial.print("Tactilo 5: ");
  97. Serial.println(digitalRead(TAC5));
  98. break;
  99. case '6':
  100. digitalWrite(TAC6, !digitalRead(TAC6));
  101. Serial.print("Tactilo 6: ");
  102. Serial.println(digitalRead(TAC6));
  103. break;
  104. default:
  105. break;
  106. }
  107. }