Hola roboseros...

Ya tengo el Megapi en mis manos y esta tarde intenté programar un servo, pero me quedé si verlo funcionar. Yo lo probé con un arduino uno y una fuente externa de 9V y perfecto. Pero mi duda es como lo programo en el Megapi, usando el IDE de Arduino.

Mi principal duda es ¿Como defino el puerto donde voy a conectar el servo?. Se que la tarjeta trae del A6 al A15 (10) pines para los servos, pero no he conseguido en la documentación de la tarjeta (http://learn.makeblock.com/en/megapi/) que me indique como lo defino en uno de los puertos.

¿Alguien lo ha probado alguna vez?

Muchas gracias y un salu2.

Henry

Hola roboseros... Ya tengo el Megapi en mis manos y esta tarde intenté programar un servo, pero me quedé si verlo funcionar. Yo lo probé con un arduino uno y una fuente externa de 9V y perfecto. Pero mi duda es como lo programo en el Megapi, usando el IDE de Arduino. Mi principal duda es ¿Como defino el puerto donde voy a conectar el servo?. Se que la tarjeta trae del A6 al A15 (10) pines para los servos, pero no he conseguido en la documentación de la tarjeta (http://learn.makeblock.com/en/megapi/) que me indique como lo defino en uno de los puertos. ¿Alguien lo ha probado alguna vez? Muchas gracias y un salu2. Henry

Hola Henry: te adjunto un pequeño programa extraído de otro mas largo que te aportará información de como definir y trabajar con servos usando Megapi. Está escrito para el IDE de Arduino. Pienso que te puede orientar para tus proyectos.

Si necesitas alguna aclaración no dudes en consultar.

Un saludo

#include "MeMegaPi.h"
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>

MePort conector1(PORT_6);

Servo base;  // crea el objeto "base" para el control del servo 
Servo brazo;

int16_t pin_base =   conector1.pin1();//  es el pin A8
int16_t pin_brazo =  conector1.pin2();//  es el pin A9

int pos_base = 90;
int pos_brazo = 90;
//============================
void setup() {
  Serial.begin(9600);  
  base.attach(pin_base);  // pin que controlara el servo
  brazo.attach(pin_brazo);
  base.write(pos_base); 
  brazo.write(pos_brazo);
  delay(1000);
} 
//============================
void loop() { 
  brazo.write(10);
  delay(1000);
  base.write(10);
  delay(1000);
  brazo.write(170);
  delay(1000);
  base.write(170);
  delay(1000); 
}
Hola Henry: te adjunto un pequeño programa extraído de otro mas largo que te aportará información de como definir y trabajar con servos usando Megapi. Está escrito para el IDE de Arduino. Pienso que te puede orientar para tus proyectos. Si necesitas alguna aclaración no dudes en consultar. Un saludo ```` #include "MeMegaPi.h" #include <Arduino.h> #include <SoftwareSerial.h> #include <Wire.h> MePort conector1(PORT_6); Servo base; // crea el objeto "base" para el control del servo Servo brazo; int16_t pin_base = conector1.pin1();// es el pin A8 int16_t pin_brazo = conector1.pin2();// es el pin A9 int pos_base = 90; int pos_brazo = 90; //============================ void setup() { Serial.begin(9600); base.attach(pin_base); // pin que controlara el servo brazo.attach(pin_brazo); base.write(pos_base); brazo.write(pos_brazo); delay(1000); } //============================ void loop() { brazo.write(10); delay(1000); base.write(10); delay(1000); brazo.write(170); delay(1000); base.write(170); delay(1000); } ````

Gracias Hilario.

Me ha funcionado tu programa, aunque cambié algunas cosas como pedir un angulo por pantalla y solo un servo. Pero me sirvió como ejemplo. Ahora puedo configurar todos los servos 6 en total a 90 grados para centrarlos y comenzar a construir.

Muchas gracias.

Aquí dejo mi código por si alguien lo necesita. Pero ojo, hay que validar que los grados no pasen de 180 ni menor a 0 para evitar daños.

#include "MeMegaPi.h"
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>

MePort conector1(PORT_6);

Servo base;  // crea el objeto "base" para el control del servo 

int16_t pin_base =   conector1.pin1();//  es el pin A8

int pos_base = 90;

void setup() {
  Serial.begin(9600);  
  base.attach(pin_base);  // pin que controlara el servo
  base.write(pos_base); 
  delay(1000);
} 

void loop()
{
   if(Serial.available() > 0) 
   {
      pos_base = Serial.parseInt();
      if(pos_base != 0)
      {
         base.write(pos_base); 
         Serial.println(base.read());
      }
   }
   delay(100);
}
Gracias Hilario. Me ha funcionado tu programa, aunque cambié algunas cosas como pedir un angulo por pantalla y solo un servo. Pero me sirvió como ejemplo. Ahora puedo configurar todos los servos 6 en total a 90 grados para centrarlos y comenzar a construir. Muchas gracias. Aquí dejo mi código por si alguien lo necesita. Pero ojo, hay que validar que los grados no pasen de 180 ni menor a 0 para evitar daños. ```` #include "MeMegaPi.h" #include <Arduino.h> #include <SoftwareSerial.h> #include <Wire.h> MePort conector1(PORT_6); Servo base; // crea el objeto "base" para el control del servo int16_t pin_base = conector1.pin1();// es el pin A8 int pos_base = 90; void setup() { Serial.begin(9600); base.attach(pin_base); // pin que controlara el servo base.write(pos_base); delay(1000); } void loop() { if(Serial.available() > 0) { pos_base = Serial.parseInt(); if(pos_base != 0) { base.write(pos_base); Serial.println(base.read()); } } delay(100); } ````

Me alegro de que haya servido. Cuando termines el proyecto ya nos lo enseñaras por aqui👌

El problema que apuntas se podria evitar asi:
if (pos_servo > 180) pos_servo = 180;
if (pos_servo < 1) pos_servo= 1;

O algo parecido

Salu2

Me alegro de que haya servido. Cuando termines el proyecto ya nos lo enseñaras por aqui
403
vistas
3
respuestas
2
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador