sexta-feira, 17 de setembro de 2010

Re: [segunda-fundacao] código arduino do MNerim

mineiro!
tenho que devolver teu robo!
=]

2010/9/17 Moacir Lago <moalago@gmail.com>
hã?

; )

Em 17 de setembro de 2010 10:23, Henrique Foresti <hforesti@gmail.com> escreveu:

#include <ServoTimer2.h>  // Inclusao da biblioteca de controle de
Servo via timer2


ServoTimer2 servo1;    // Declaracao dos motores - maximo de 8 para a
Servotimer2
ServoTimer2 servo2;
ServoTimer2 servo3;
ServoTimer2 servo4;
ServoTimer2 servo5;
ServoTimer2 servo6;
ServoTimer2 servo7;

bool F1exec;  //declaracos de flags que definem se funcao esta ativa
(comando em execussao)
bool F2exec;
bool F3exec;
bool F4exec;

void setup() {
 Serial.begin(115200);
 Serial.println("Uai...eu sou o MNERIM");
 Serial.println("Estamos Conectados a 115200bps");
 servo1.attach(2);     // Definicao dos pinos(GPIO) de controlde de cada motor
 servo2.attach(3);
 servo3.attach(4);
 servo4.attach(5);
 servo5.attach(6);
 servo6.attach(7);
 servo7.attach(8);
 //todas as fucoes desabilitadas - 0 = falso
 F1exec = 0;
 F2exec = 0;
 F3exec = 0;
 F4exec = 0;

 ZeroPos(); // ir para posicao inicial
}


// esta função inicializa os motores
//de acordo com a precisão mecânica da montagem eles devem ser ajustados
//posicao minima => 730 posicao maxima =>2270  range => 1540  meio => 1500
int ZeroPos(void){
  servo1.write(1500);//1500
  servo2.write(1500);//1500
  servo3.write(1450);//1000
  servo4.write(1500);//2000
  servo5.write(1450);//1800
  servo6.write(1550);//1200
  servo7.write(1500);//1500
  return 0;
}

int ExecutaComando(uint8_t dado)
{
       uint8_t nimble1;
       uint8_t nimble2;
       int pos;
       int newpos;
       nimble1 = dado / 16;
       nimble2 = dado % 16;
       switch (nimble1)
      {
         case 1:
           pos = servo1.read();
           newpos = pos+((nimble2-5)*20);
           servo1.write(newpos);
           return newpos;
         break;
         case 2: //giro invertido
           pos = servo2.read();
           newpos = pos-((nimble2-5)*20);
           servo2.write(newpos);
           return (3000 - newpos);
         break;
         case 3: //giro invertido
           pos = servo3.read();
           newpos = pos-((nimble2-5)*20);
           servo3.write(newpos);
           return (3000 - newpos);
         break;
         case 4:
           pos = servo4.read();
           newpos = pos+((nimble2-5)*20);
           servo4.write(newpos);
           return newpos;
         break;
         case 5:
           pos = servo5.read();
           newpos = pos+((nimble2-5)*20);
           servo5.write(newpos);
           return newpos;
         break;
         case 6: //giro invertido
           pos = servo6.read();
           newpos = pos-((nimble2-5)*20);
           servo6.write(newpos);
           return (3000 - newpos);
         break;
         case 7:
           pos = servo7.read();
           newpos = pos+((nimble2-5)*20);
           servo7.write(newpos);
           return newpos;
         break;
         case 9:
           Serial.println("9");
         break;
         case 15:
           if (nimble2 == 0)
           return ZeroPos();
           if (nimble2 == 1){
             F1exec = 1;
             return 1;
           }
           if (nimble2 == 1){
             F1exec = 1;
             return 1;
           }
           if (nimble2 == 2){
             F2exec = 1;
             return 2;
           }
           if (nimble2 == 3){
             F3exec = 1;
             return 3;
           }
           if (nimble2 == 4){
             F4exec = 1;
             return 4;
           }
         break;
         case 14:
           if (nimble2 == 0)
           return ZeroPos();
           if (nimble2 == 0){
             F1exec = 0;
             return 0;
           }
           if (nimble2 == 0){
             F1exec = 0;
             return 0;
           }
           if (nimble2 == 0){
             F2exec = 0;
             return 0;
           }
           if (nimble2 == 0){
             F3exec = 0;
             return 0;
           }
           if (nimble2 == 0){
             F4exec = 0;
             return 0;
           }
         break;
         default:
            Serial.println(nimble1,DEC);
         break;
      }//swith
}

void ExecutaFuncoes(void)
{
 static int contF1 = 0;
 if (F1exec){
   if (contF1 < 5){
     ExecutaComando(22); ExecutaComando(49);ExecutaComando(63);
   }else if(contF1 < 6){
     ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);
   }else if(contF1 < 13){
     ExecutaComando(28);
ExecutaComando(41);ExecutaComando(67);ExecutaComando(12);
ExecutaComando(39);ExecutaComando(53);
   }else if(contF1 < 14){
     ExecutaComando(79);
ExecutaComando(79);ExecutaComando(79);ExecutaComando(79);
ExecutaComando(79);ExecutaComando(79);ExecutaComando(79);
ExecutaComando(79);
   }else if(contF1 < 15){
     ExecutaComando(79);
ExecutaComando(79);ExecutaComando(79);ExecutaComando(79);
ExecutaComando(79);ExecutaComando(79);ExecutaComando(79);
ExecutaComando(79);
   }else if(contF1 < 22){
     ExecutaComando(22);
ExecutaComando(49);ExecutaComando(63);ExecutaComando(18);
ExecutaComando(31);ExecutaComando(57);
   }else if(contF1 < 23){
     ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);
   }else if(contF1 < 24){
     ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);ExecutaComando(71);ExecutaComando(71);
ExecutaComando(71);
   }else contF1 = 6;
   contF1 ++;
 }
}


void loop()
{
 static int tempo = 9000; //variavel que define quantas passagens
corresponde a 1 tempo de execussao do robo(timer de execussao das
funcoes)
 tempo --;
 //Serial.println(tempo);
 if (tempo == 0)
 {
   ExecutaFuncoes();
   tempo = 200;
   Serial.println("dentro");
 }
 if ( Serial.available())
 {
   char dado = Serial.read();
   Serial.println(ExecutaComando(dado),DEC);
 }//serial available
}



--
Moa Lago ☻



--
Jerônimo Barbosa
jeraman.info

Nenhum comentário:

Postar um comentário

Vida de bombeiro Recipes Informatica Humor Jokes Mensagens Curiosity Saude Video Games Car Blog Animals Diario das Mensagens Eletronica Rei Jesus News Noticias da TV Artesanato Esportes Noticias Atuais Games Pets Career Religion Recreation Business Education Autos Academics Style Television Programming Motosport Humor News The Games Home Downs World News Internet Car Design Entertaimment Celebrities 1001 Games Doctor Pets Net Downs World Enter Jesus Variedade Mensagensr Android Rub Letras Dialogue cosmetics Genexus Car net Só Humor Curiosity Gifs Medical Female American Health Madeira Designer PPS Divertidas Estate Travel Estate Writing Computer Matilde Ocultos Matilde futebolcomnoticias girassol lettheworldturn topdigitalnet Bem amado enjohnny produceideas foodasticos cronicasdoimaginario downloadsdegraca compactandoletras newcuriosidades blogdoarmario