From 937ebc52d2a499e207bd21d8ed05bffea5140b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20SAILLANT?= Date: Fri, 14 Oct 2022 21:02:50 +0200 Subject: [PATCH] update --- LCD_Servo_calibration/platformio.ini | 4 +- ...CD_servo_calib.ino => LCD_servo_calib.cpp} | 27 +- OSC_I2C_CORBACS/.vscode/settings.json | 3 + OSC_I2C_CORBACS/src/OSCMessage.h | 146 ++++++++++ .../src/TEENSY_OSC_i2C_CORBACS.cpp | 275 +++++------------- 5 files changed, 236 insertions(+), 219 deletions(-) rename LCD_Servo_calibration/src/{LCD_servo_calib.ino => LCD_servo_calib.cpp} (99%) create mode 100644 OSC_I2C_CORBACS/.vscode/settings.json create mode 100644 OSC_I2C_CORBACS/src/OSCMessage.h diff --git a/LCD_Servo_calibration/platformio.ini b/LCD_Servo_calibration/platformio.ini index f6c0fa9..adb5c73 100644 --- a/LCD_Servo_calibration/platformio.ini +++ b/LCD_Servo_calibration/platformio.ini @@ -13,7 +13,5 @@ platform = atmelavr board = uno framework = arduino lib_deps = - kelleyja/WEMOS Motor Shield@^1.0.0 - uipethernet/UIPEthernet@^2.0.12 - cnmat/OSC@0.0.0-alpha+sha.41b44981e3 adafruit/Adafruit PWM Servo Driver Library@^2.4.1 + arduino-libraries/LiquidCrystal@^1.0.7 diff --git a/LCD_Servo_calibration/src/LCD_servo_calib.ino b/LCD_Servo_calibration/src/LCD_servo_calib.cpp similarity index 99% rename from LCD_Servo_calibration/src/LCD_servo_calib.ino rename to LCD_Servo_calibration/src/LCD_servo_calib.cpp index 13defc4..0bf287a 100644 --- a/LCD_Servo_calibration/src/LCD_servo_calib.ino +++ b/LCD_Servo_calibration/src/LCD_servo_calib.cpp @@ -253,6 +253,19 @@ void setup() lcd.print("INIT OK"); } +// Fonction de lecture des touches +int read_LCD_buttons() +{ + adc_key_in = analogRead(0); // Lecture du port analogique + // Les valeurs qui suivent doivent être adaptées au shield + if (adc_key_in > 900) return btnNONE; // En principe 1023 quand aucune touche n'est pressée + if (adc_key_in < 50) return btnRIGHT; // 0 + if (adc_key_in < 195) return btnUP; // 99 + if (adc_key_in < 380) return btnDOWN; // 255 + if (adc_key_in < 555) return btnLEFT; // 409 + if (adc_key_in < 790) return btnSELECT; // 640 + return btnNONE; +} void loop() { @@ -393,16 +406,4 @@ void loop() } -// Fonction de lecture des touches -int read_LCD_buttons() -{ - adc_key_in = analogRead(0); // Lecture du port analogique - // Les valeurs qui suivent doivent être adaptées au shield - if (adc_key_in > 900) return btnNONE; // En principe 1023 quand aucune touche n'est pressée - if (adc_key_in < 50) return btnRIGHT; // 0 - if (adc_key_in < 195) return btnUP; // 99 - if (adc_key_in < 380) return btnDOWN; // 255 - if (adc_key_in < 555) return btnLEFT; // 409 - if (adc_key_in < 790) return btnSELECT; // 640 - return btnNONE; -} + diff --git a/OSC_I2C_CORBACS/.vscode/settings.json b/OSC_I2C_CORBACS/.vscode/settings.json new file mode 100644 index 0000000..06b0842 --- /dev/null +++ b/OSC_I2C_CORBACS/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.dimInactiveRegions": false +} \ No newline at end of file diff --git a/OSC_I2C_CORBACS/src/OSCMessage.h b/OSC_I2C_CORBACS/src/OSCMessage.h new file mode 100644 index 0000000..04bf412 --- /dev/null +++ b/OSC_I2C_CORBACS/src/OSCMessage.h @@ -0,0 +1,146 @@ + +// Fonction server.addCallback("/corbac/gd1", &gd1); +// definir numero de servo osc_value[N° SERVO] pour get 1st argument(int32) + +void gd1(OSCMessage &msg, int addrOffset) +{ + servo_select = 0; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd2(OSCMessage &msg, int addrOffset) +{ + servo_select = 1; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd3(OSCMessage &msg, int addrOffset) +{ + servo_select = 10; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd4(OSCMessage &msg, int addrOffset) +{ + servo_select = 11; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd5(OSCMessage &msg, int addrOffset) +{ + servo_select = 16; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd6(OSCMessage &msg, int addrOffset) +{ + servo_select = 17; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd7(OSCMessage &msg, int addrOffset) +{ + servo_select = 26; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void gd8(OSCMessage &msg, int addrOffset) +{ + servo_select = 27; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} + +void c1(OSCMessage &msg, int addrOffset) +{ + servo_select = 4; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c2(OSCMessage &msg, int addrOffset) +{ + servo_select = 5; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c3(OSCMessage &msg, int addrOffset) +{ + servo_select = 6; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c4(OSCMessage &msg, int addrOffset) +{ + servo_select = 7; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c5(OSCMessage &msg, int addrOffset) +{ + servo_select = 12; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c6(OSCMessage &msg, int addrOffset) +{ + servo_select = 13; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c7(OSCMessage &msg, int addrOffset) +{ + servo_select = 14; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c8(OSCMessage &msg, int addrOffset) +{ + servo_select = 15; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c9(OSCMessage &msg, int addrOffset) +{ + servo_select = 20; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c10(OSCMessage &msg, int addrOffset) +{ + servo_select = 21; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c11(OSCMessage &msg, int addrOffset) +{ + servo_select = 22; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c12(OSCMessage &msg, int addrOffset) +{ + servo_select = 23; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c13(OSCMessage &msg, int addrOffset) +{ + servo_select = 28; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c14(OSCMessage &msg, int addrOffset) +{ + servo_select = 29; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c15(OSCMessage &msg, int addrOffset) +{ + servo_select = 30; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void c16(OSCMessage &msg, int addrOffset) +{ + servo_select = 31; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} + +void sheep(OSCMessage &msg, int addrOffset) +{ + servo_select = 32; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void badger(OSCMessage &msg, int addrOffset) +{ + servo_select = 33; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void cow1(OSCMessage &msg, int addrOffset) +{ + servo_select = 34; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} +void cow2(OSCMessage &msg, int addrOffset) +{ + servo_select = 35; + osc_value[servo_select] = int(msg.getFloat(0) * 1000); +} diff --git a/OSC_I2C_CORBACS/src/TEENSY_OSC_i2C_CORBACS.cpp b/OSC_I2C_CORBACS/src/TEENSY_OSC_i2C_CORBACS.cpp index 2e73e4a..7315b4e 100644 --- a/OSC_I2C_CORBACS/src/TEENSY_OSC_i2C_CORBACS.cpp +++ b/OSC_I2C_CORBACS/src/TEENSY_OSC_i2C_CORBACS.cpp @@ -11,8 +11,7 @@ c.saillant@gmail.com / +33625334420 ---------------------------------------------------------------------------------------------------------------------------------------------*/ - -#include "config.h" // fichier de Définition des valeur de servo +#include "config.h" // fichier de Définition des valeur de servo #define DEBUG 0 // 1 pour activer le debug serie @@ -21,30 +20,24 @@ #include #include -//Use youre mac and ip here--------------------------- -byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0x9B, 0x7F }; -byte ip[] = { 192, 168, 2, 115 }; +// Use youre mac and ip here--------------------------- +byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x9B, 0x7F}; +byte ip[] = {192, 168, 2, 115}; //---------------------------------------------------- EthernetUDP Udp; // OSC-------------------------- -//port numbers -const int osc_server_port = 10000; +// port numbers +const int osc_server_port = 10000; #include #include //---------------------------------------------------- - - - - // valeur min et max OSC pour mappage des valeurs vers angle SERVO #define min_value 0 #define max_value 1000 - - // I2C et carte PWM(servo) #include #include @@ -53,50 +46,46 @@ const int osc_server_port = 10000; // want these to be as small/large as possible without hitting the hard stop // for max range. You'll have to tweak them as necessary to match the servos you // have! -#define USMIN 600 // This is the rounded 'minimum' microsecond length based on the minimum pulse of 150 -#define USMAX 2400 // This is the rounded 'maximum' microsecond length based on the maximum pulse of 600 +#define USMIN 600 // This is the rounded 'minimum' microsecond length based on the minimum pulse of 150 +#define USMAX 2400 // This is the rounded 'maximum' microsecond length based on the maximum pulse of 600 #define SERVO_FREQ 50 // Analog servos run at ~50 Hz updates -//Driver : +// Driver : Adafruit_PWMServoDriver board1 = Adafruit_PWMServoDriver(0x40); Adafruit_PWMServoDriver board2 = Adafruit_PWMServoDriver(0x41); Adafruit_PWMServoDriver board3 = Adafruit_PWMServoDriver(0x42); +// Servos : +#define nb_servo 49 // Nombre de servo controlés -//Servos : -#define nb_servo 49 // Nombre de servo controlés - -int servo_select = 0; // variable de selection servo -int osc_value[nb_servo]; // pour stockage valeur par servo +int servo_select = 0; // variable de selection servo +int osc_value[nb_servo]; // pour stockage valeur par servo int osc_value_old[nb_servo]; // pour comparaison si changement de valeur int pulse = 0; uint8_t servomoteur[nb_servo] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}; // défini sur quelle voie du driver sera branché chaque servomoteurs -//Liste des longueurs minimum d'impulsions pour - 90° +// Liste des longueurs minimum d'impulsions pour - 90° uint16_t servomoins90[nb_servo] = { - MIN0 , MIN1 , MIN2 , MIN3 , MIN4 , MIN5 , MIN6 , MIN7 , MIN8 , MIN9 , MIN10 , MIN11 , MIN12 , MIN13 , MIN14 , MIN15 , MIN16 , MIN17 , MIN18 , MIN19 , MIN20 , MIN21 , MIN22 , MIN23 , MIN24 , MIN25 , MIN26 , MIN27 , MIN28 , MIN29 , MIN30 , MIN31 , MIN32 , MIN33 , MIN34 , MIN35 , MIN36 , MIN37 , MIN38 , MIN39 , MIN40 , MIN41 , MIN42 , MIN43 , MIN44 , MIN45 , MIN46 , MIN47 , MIN48 -}; + MIN0, MIN1, MIN2, MIN3, MIN4, MIN5, MIN6, MIN7, MIN8, MIN9, MIN10, MIN11, MIN12, MIN13, MIN14, MIN15, MIN16, MIN17, MIN18, MIN19, MIN20, MIN21, MIN22, MIN23, MIN24, MIN25, MIN26, MIN27, MIN28, MIN29, MIN30, MIN31, MIN32, MIN33, MIN34, MIN35, MIN36, MIN37, MIN38, MIN39, MIN40, MIN41, MIN42, MIN43, MIN44, MIN45, MIN46, MIN47, MIN48}; -//Liste des longueurs minimum d'impulsions pour + 90° +// Liste des longueurs minimum d'impulsions pour + 90° uint16_t servoplus90[nb_servo] = { - MAX0 , MAX1 , MAX2 , MAX3 , MAX4 , MAX5 , MAX6 , MAX7 , MAX8 , MAX9 , MAX10 , MAX11 , MAX12 , MAX13 , MAX14 , MAX15 , MAX16 , MAX17 , MAX18 , MAX19 , MAX20 , MAX21 , MAX22 , MAX23 , MAX24 , MAX25 , MAX26 , MAX27 , MAX28 , MAX29 , MAX30 , MAX31 , MAX32 , MAX33 , MAX34 , MAX35 , MAX36 , MAX37 , MAX38 , MAX39 , MAX40 , MAX41 , MAX42 , MAX43 , MAX44 , MAX45 , MAX46 , MAX47 , MAX48 -}; + MAX0, MAX1, MAX2, MAX3, MAX4, MAX5, MAX6, MAX7, MAX8, MAX9, MAX10, MAX11, MAX12, MAX13, MAX14, MAX15, MAX16, MAX17, MAX18, MAX19, MAX20, MAX21, MAX22, MAX23, MAX24, MAX25, MAX26, MAX27, MAX28, MAX29, MAX30, MAX31, MAX32, MAX33, MAX34, MAX35, MAX36, MAX37, MAX38, MAX39, MAX40, MAX41, MAX42, MAX43, MAX44, MAX45, MAX46, MAX47, MAX48}; -//Liste des longueurs minimum d'impulsions pour + 90° +// Liste des longueurs minimum d'impulsions pour + 90° int servo_boot[nb_servo] = { - BOOT0 , BOOT1 , BOOT2 , BOOT3 , BOOT4 , BOOT5 , BOOT6 , BOOT7 , BOOT8 , BOOT9 , BOOT10 , BOOT11 , BOOT12 , BOOT13 , BOOT14 , BOOT15 , BOOT16 , BOOT17 , BOOT18 , BOOT19 , BOOT20 , BOOT21 , BOOT22 , BOOT23 , BOOT24 , BOOT25 , BOOT26 , BOOT27 , BOOT28 , BOOT29 , BOOT30 , BOOT31 , BOOT32 , BOOT33 , BOOT34 , BOOT35 , BOOT36 , BOOT37 , BOOT38 , BOOT39 , BOOT40 , BOOT41 , BOOT42 , BOOT43 , BOOT44 , BOOT45 , BOOT46 , BOOT47 , BOOT48 -}; + BOOT0, BOOT1, BOOT2, BOOT3, BOOT4, BOOT5, BOOT6, BOOT7, BOOT8, BOOT9, BOOT10, BOOT11, BOOT12, BOOT13, BOOT14, BOOT15, BOOT16, BOOT17, BOOT18, BOOT19, BOOT20, BOOT21, BOOT22, BOOT23, BOOT24, BOOT25, BOOT26, BOOT27, BOOT28, BOOT29, BOOT30, BOOT31, BOOT32, BOOT33, BOOT34, BOOT35, BOOT36, BOOT37, BOOT38, BOOT39, BOOT40, BOOT41, BOOT42, BOOT43, BOOT44, BOOT45, BOOT46, BOOT47, BOOT48}; +#include "OSCMessage.h" // fichier de Définition des message OSC +void setup() +{ -void setup() { - -#ifdef DEBUG - //Debug Mode enable in case DEBUG equal 1 - //Serial.begin(115200); - //delay(5000); - //Serial.println("CORBAC I2C START"); - +#if DEBUG == 1 + // Debug Mode enable in case DEBUG equal 1 + Serial.begin(115200); + delay(5000); + Serial.println("CORBAC I2C START"); #endif // start the Ethernet connection: @@ -105,7 +94,7 @@ void setup() { // Déifinition des cartes de I2C/PWM board1.begin(); - board1.setPWMFreq(SERVO_FREQ); // Analog servos run at ~60 Hz updates + board1.setPWMFreq(SERVO_FREQ); // Analog servos run at ~60 Hz updates board2.begin(); board2.setPWMFreq(SERVO_FREQ); @@ -114,44 +103,47 @@ void setup() { board3.setPWMFreq(SERVO_FREQ); // centrage des servo - for (int i = 0; i < nb_servo ; i++) { + for (int i = 0; i < nb_servo; i++) + { pulse = map(servo_boot[i], -90, 90, servomoins90[i], servoplus90[i]); // selection de la carte de sortie - if (i <= 15) { + if (i <= 15) + { board1.setPWM(servomoteur[i], 0, pulse); } - if (i >= 16 && i < 32) { + if (i >= 16 && i < 32) + { board2.setPWM(servomoteur[i - 16], 0, pulse); } - if (i >= 32 && i < 48) { + if (i >= 32 && i < 48) + { board3.setPWM(servomoteur[i - 32], 0, pulse); } } - - - - +#if DEBUG == 1 // print your local IP address: - //Serial.print("Arduino IP address: "); - //Serial.println(Ethernet.localIP()); - //Serial.print("OSC Port "); - //Serial.println(osc_server_port); - //Serial.println("Setup done."); - + Serial.print("Arduino IP address: "); + Serial.println(Ethernet.localIP()); + Serial.print("OSC Port "); + Serial.println(osc_server_port); + Serial.println("Setup done."); +#endif } -void loop() { // Main loop +void loop() +{ // Main loop OSCMessage msgIN; int size; - if ( (size = Udp.parsePacket()) > 0) + if ((size = Udp.parsePacket()) > 0) { while (size--) msgIN.fill(Udp.read()); - if (!msgIN.hasError()) { + if (!msgIN.hasError()) + { msgIN.route("/gd1", gd1); msgIN.route("/gd2", gd2); @@ -184,175 +176,52 @@ void loop() { // Main loop msgIN.route("/cow1", cow1); msgIN.route("/cow2", cow2); - //Serial.println("OSC alive! "); + // Serial.println("OSC alive! "); } - } // mise à jour des valeur de servo - for (int servo_select = 0; servo_select < nb_servo ; servo_select++) { + for (int servo_select = 0; servo_select < nb_servo; servo_select++) + { if (osc_value_old[servo_select] != osc_value[servo_select]) { -#ifdef DEBUG - //Serial.println("mise à jour position moteur"); +#if DEBUG == 1 + Serial.println("mise à jour position moteur"); #endif osc_value_old[servo_select] = osc_value[servo_select]; int servo_value = map(osc_value[servo_select], min_value, max_value, -90, 90); pulse = map(servo_value, -90, 90, servomoins90[servo_select], servoplus90[servo_select]); // selection de la carte de sortie - if (servo_select <= 15) { + if (servo_select <= 15) + { board1.setPWM(servomoteur[servo_select], 0, pulse); -#ifdef DEBUG - //Serial.println("sur carte 1"); +#if DEBUG == 1 + Serial.println("sur carte 1"); #endif } - if (servo_select >= 16 && servo_select < 32) { + if (servo_select >= 16 && servo_select < 32) + { board2.setPWM(servomoteur[servo_select - 16], 0, pulse); -#ifdef DEBUG - //Serial.println("sur carte 2"); +#if DEBUG == 1 + Serial.println("sur carte 2"); #endif } - if (servo_select >= 32 && servo_select < 48) { + if (servo_select >= 32 && servo_select < 48) + { board3.setPWM(servomoteur[servo_select - 32], 0, pulse); -#ifdef DEBUG - //Serial.println("sur carte 3"); +#if DEBUG == 1 + Serial.println("sur carte 3"); #endif } -#ifdef DEBUG - //Serial.print("moteur : "); - //Serial.println(servo_select); - //Serial.print("valeur osc : "); - //Serial.println(osc_value[servo_select]); - //Serial.print("valeur pulse : "); - //Serial.println(pulse); +#if DEBUG == 1 + Serial.print("moteur : "); + Serial.println(servo_select); + Serial.print("valeur osc : "); + Serial.println(osc_value[servo_select]); + Serial.print("valeur pulse : "); + Serial.println(pulse); #endif } } - - -} - - - - -// Fonction server.addCallback("/corbac/gd1", &gd1); -//definir numero de servo osc_value[N° SERVO] pour get 1st argument(int32) - -void gd1(OSCMessage &msg, int addrOffset ) { - servo_select = 0; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd2(OSCMessage &msg, int addrOffset ) { - servo_select = 1; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd3(OSCMessage &msg, int addrOffset ) { - servo_select = 10; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd4(OSCMessage &msg, int addrOffset ) { - servo_select = 11; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd5(OSCMessage &msg, int addrOffset ) { - servo_select = 16; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd6(OSCMessage &msg, int addrOffset ) { - servo_select = 17; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd7(OSCMessage &msg, int addrOffset ) { - servo_select = 26; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void gd8(OSCMessage &msg, int addrOffset ) { - servo_select = 27; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} - - - -void c1(OSCMessage &msg, int addrOffset ) { - servo_select = 4; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c2(OSCMessage &msg, int addrOffset ) { - servo_select = 5; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c3(OSCMessage &msg, int addrOffset ) { - servo_select = 6; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c4(OSCMessage &msg, int addrOffset ) { - servo_select = 7; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c5(OSCMessage &msg, int addrOffset ) { - servo_select = 12; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c6(OSCMessage &msg, int addrOffset ) { - servo_select = 13; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c7(OSCMessage &msg, int addrOffset ) { - servo_select = 14; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c8(OSCMessage &msg, int addrOffset ) { - servo_select = 15; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c9(OSCMessage &msg, int addrOffset ) { - servo_select = 20; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c10(OSCMessage &msg, int addrOffset ) { - servo_select = 21; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c11(OSCMessage &msg, int addrOffset ) { - servo_select = 22; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c12(OSCMessage &msg, int addrOffset ) { - servo_select = 23; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c13(OSCMessage &msg, int addrOffset ) { - servo_select = 28; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c14(OSCMessage &msg, int addrOffset ) { - servo_select = 29; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c15(OSCMessage &msg, int addrOffset ) { - servo_select = 30; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void c16(OSCMessage &msg, int addrOffset ) { - servo_select = 31; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} - - -void sheep(OSCMessage &msg, int addrOffset ) { - servo_select = 32; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void badger(OSCMessage &msg, int addrOffset ) { - servo_select = 33; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void cow1(OSCMessage &msg, int addrOffset ) { - servo_select = 34; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); -} -void cow2(OSCMessage &msg, int addrOffset ) { - servo_select = 35; - osc_value[servo_select] = int(msg.getFloat(0) * 1000); }