Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- #include <compat/deprecated.h>
- #include <FlexiTimer2.h>
- #define SAMPFREQ 256 // ADC sampling rate 256
- #define TIMER2VAL (1024/(SAMPFREQ)) // Set 256Hz sampling frequency
- volatile unsigned char CurrentCh=0; //Current channel being sampled.
- volatile unsigned int ADC_Value = 0; //ADC current value
- volatile unsigned int ADC_Value1 = 0; //ADC current value
- Servo myServo1;
- Servo myServo2;
- Servo myServo3;
- Servo myServo4;
- Servo myServo5;
- Servo myServo6;int pos = 0; // variable to store the servo position
- int modo = 0;
- int oscMsg[12]; // buffer for incoming OSc packet
- int inByte = 0; // incomming serial byte
- int inbyteIndex=0; // incomming bytes counter
- float msgVal=0; // resulting message value
- void setup()
- {
- Serial.begin(57600); // debug port
- myServo1.attach(13); // pulso
- myServo2.attach(8); //dedo mindinho
- myServo3.attach(9); //dedo2
- myServo4.attach(10); //dedo3
- myServo5.attach(11, 576, 2384); //indicador
- myServo6.attach(12); //poegar
- }
- void loop(){
- int value99 = 0; //contador de numero de vezes
- int value98 = 0; //contador de ups
- while (value99 < 500) { //Here finds the muscle pattern.
- if (Serial.available()) { // if we have new byte from LAN
- if (getOscMsg()==1){ // add it to message while is is not ready
- if (byte(oscMsg[1]) != 32){ //para evitar o envio de mensagem vazia Serial.print(oscMsg[1]); // or print the OSC message name Serial.print(" / "); Serial.println(msgVal); // and vaule int value = msgVal; switch(oscMsg[1]){ case'a': if(value > 0 && value <= 180){ modo = 1; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } case'b': if(value > 0 && value <= 180){ modo = 2; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } case'c': if(value > 0 && value <= 180){ modo = 3; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } case'd': if(value > 0 && value <= 180){ modo = 4; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } case'e': if(value > 0 && value <= 180){ modo = 5; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } case'f': if(value > 0 && value <= 180){ modo = 6; //variavel para determinar o movimento Serial.print("MODO "); Serial.println(modo); value = 0; break; } } } } } delay(1); ADC_Value = analogRead(CurrentCh); value99 = value99+1; if(ADC_Value > 400){
- value98 = value98 + 1; //caso tenha o valor alto, adiciona um no contador
- }
- if(ADC_Value < 250){
- value98 = value98 + 1; //caso tenha o valor alto, adiciona um no contador
- }
- }
- if (value98 < 25){ //off Serial.print("off"); //this is packet header for my application Serial.println(ADC_Value); myServo1.write(90); myServo2.write(10); myServo3.write(10); myServo4.write(10); myServo5.write(10); myServo6.write(10); delay(1); } else if (value98 >= 45){ //on
- Serial.print("on"); //this is packet header for my application
- Serial.println(ADC_Value);
- Serial.println(value98);
- if(modo <= 1){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(150); // fechado
- myServo3.write(150);
- myServo4.write(150);
- myServo5.write(150);
- myServo6.write(150);
- delay(1);
- }
- if(modo ==2){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(10); // pinca
- myServo3.write(10);
- myServo4.write(10);
- myServo5.write(140);
- myServo6.write(150);
- delay(1);
- }
- if(modo ==3){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(150); // aponta
- myServo3.write(150);
- myServo4.write(150);
- myServo5.write(15);
- myServo6.write(20);
- delay(1);
- }
- if(modo ==4){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(15); // Spider
- myServo3.write(150);
- myServo4.write(150);
- myServo5.write(15);
- myServo6.write(20);
- delay(1);
- }
- if(modo ==5){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(150); // Joia
- myServo3.write(150);
- myServo4.write(150);
- myServo5.write(150);
- myServo6.write(20);
- delay(1);
- }
- if(modo ==6){
- Serial.print("MODO ");
- Serial.println(modo);
- myServo1.write(90);
- myServo2.write(15); // hang
- myServo3.write(150);
- myServo4.write(150);
- myServo5.write(150);
- myServo6.write(20);
- delay(1);
- }
- }
- }
- // function to process simple OSC message sent by TouchOSC for iphone / ipad
- float getOscMsg(){
- inByte=Serial.read(); // read next serial byte
- if (inByte == 47){ // if byte = slash it's message start
- inbyteIndex=0; // and we set array pointer to 0
- }
- if ((inbyteIndex <= 11) && (inbyteIndex >= 0)){ // is it time to finish or can we start?
- oscMsg[inbyteIndex]=inByte; // we add the byte to the array
- inbyteIndex++; // increase array counter
- }
- if (inbyteIndex == 11){ // end of the message
- inbyteIndex=-1; // set the pointer to -1 so we stop processing
- union u_tag { // this is array to float conversation routine
- byte bytes[4]; // I copied from Arduino.cc forum
- float buffer;
- }
- u;
- u.bytes[0]=oscMsg[11]; // to decode we have to supply bytes inr everse order
- u.bytes[1]=oscMsg[10];
- u.bytes[2]=oscMsg[9];
- u.bytes[3]=oscMsg[8];
- msgVal = u.buffer; // byte array to float
- return 1; // signal we are ready to display value
- }
- return 0; // in this case the message is not ready yet
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement