KIT Vr408 NO REALIZA NINGUNA FUNCION


#1

Buenas tardes, he montado el Kit VR408 y cuando lo enciendo solo se pone de pie, pero no consigo que realize ninguna función, alguien me puede ayudar, gracias


#2

Hola Pedro1971
Debes programar la tarjeta arduino para que ALLBOT pueda realizar los movimientos


#3

Buenas tardes, perdona pero ya lo he programado o eso creo y no consigo nada, he realizado todo lo que dicen en la web, descargado la aplicación en el móvil, y no funciona nada.
Por favor hay algún tutorial en donde explique más paso a paso como realizar los ajustes, gracias


#4

Hola Pedro1971
Disculpe, pero no entiendo su problema. ¿Desea ejecutar ALLBOT con el control remoto por infrarrojos y un teléfono móvil? , o ¿quieres que ALLBOT sea autónomo y realice los movimientos previos al programa? .


#5

Buenas noches, realmente me gustaría que funcionara de las dos formas, primero para que el niño vea que funciona, por si solo y luego que funcionara por los IR Y la aplicación móvil.
Pero paso a paso de momento que funcionara solo, gracias de antemano por tu interés.


#6

Buenas noches, sigo intentando que me funcione eso si a ratos, le he descargado este boceto y las patas se vuelven locas y no realiza nada y el IR con el movil tampoco realiza ninguna función que es lo que hago mal? gracias
Te paso el boceto
#include <Servo.h>
#include <ALLBOT.h>

ALLBOT BOT(8); //number of motors

enum MotorName {
hipFrontLeft,
hipFrontRight,
hipRearLeft,
hipRearRight,
kneeFrontLeft,
kneeFrontRight,
kneeRearLeft,
kneeRearRight
};

int sounderPin = 13;

String rawcommand; // Global variable that stores the raw received IR command
String command; // Global variable that stores part of the decoded IR command
int times; // Global variable that stores part the received IR command
int speedms; // Global variable that stores part the received IR command

boolean IRreceive = true; // Set this to true if you want to use the IR remote
boolean receivelog = false; // Set this to true if you want to see the serial messages for debugging the IR commands

void setup() {

//NAME.attach(motorname, pin, init-angle, flipped, offset-angle);
BOT.attach(hipFrontLeft, A1, 45, 0, 0);
BOT.attach(hipFrontRight, A0, 45, 1, 0);
BOT.attach(hipRearLeft, 9, 45, 1, 0);
BOT.attach(hipRearRight, 4, 45, 0, 0);

BOT.attach(kneeFrontLeft, 11, 45, 1, 0);
BOT.attach(kneeFrontRight, 2, 45, 0, 0);
BOT.attach(kneeRearLeft, 10, 45, 1, 0);
BOT.attach(kneeRearRight, 3, 45, 0, 0);

//INIT sounder
pinMode(sounderPin, OUTPUT);

//wait for joints to be initialized
delay(500);

// Starting the hardware UART, necessary for receiving IR
if (IRreceive == true) // Check if required (when Serial is started servo1 connector will not work!)
{
Serial.begin(2400);
Serial.setTimeout(100);
Serial.println(“serial communication started”);
}

// Chirp for ready
chirp(1, 50);
chirp(1, 255);
chirp(3, 0);

}

void loop() {
if (IRreceive == true) // Choose between IR commands or random action
{
getcommand(); // Listen for IR command
executecommand(); // Execute any receveid commands
}
}

void leanright(int speedms){
BOT.move(kneeFrontRight, 90);
BOT.move(kneeRearRight, 90);
BOT.animate(speedms);

delay(speedms/2);

BOT.move(kneeFrontRight, 45);
BOT.move(kneeRearRight, 45);
BOT.animate(speedms);

}

void chirp(int beeps, int speedms){
for (int i = 0; i < beeps; i ){
for (int i = 0; i < 255; i ){
digitalWrite(sounderPin, HIGH);
delayMicroseconds((355-i)+ (speedms2));
digitalWrite(sounderPin, LOW);
delayMicroseconds((355-i)+ (speedms
2));
}
delay(30);
}
}

void getcommand (void) // This is the routine that listens and decodes any IR commands. Decodes commands end up in the global vars.
{
int space1 = 0;
int space2 = 0;

if (Serial.available()) {
rawcommand = Serial.readString();
if (receivelog){
Serial.println(“START " + rawcommand + " END” + “\r\n” + "Received string length = " + rawcommand.length() + “\r\n” + "End character > at index = " + rawcommand.indexOf(’>’));
}

 //checking and deleting rubbish data at start of received command
 if ((rawcommand.indexOf('<') != 0) && (rawcommand.indexOf('<') != -1))
 {
    rawcommand.remove(0, rawcommand.indexOf('<'));
 }
 
 //check if received command is correct
 if ((rawcommand.charAt(0) == '<') && (rawcommand.indexOf('>') <= 12) && (rawcommand.indexOf('>') != -1) && (rawcommand.length() > 7))
 {
   if (receivelog){
     Serial.println("Command is VALID"); 
   }      
   //breakdown into chunks
   //command
   command = rawcommand.substring(1, 3);
   
   //finding the spaces to find the times and speedms
   for (int i=0; i <= rawcommand.length(); i   )
   {
     if ((rawcommand.charAt(i) == ' ') && (space1 == 0))
     {
        space1 = i;
     }
     else if ((rawcommand.charAt(i) == ' ') && (space2 == 0))
     {
        space2 = i;
     }
   }

   //Setting the command variables and checking if they are indeed a number (toInt()).
   
   //times
   times = rawcommand.substring(space1+1, space2).toInt();
   
   //speedms
   speedms = rawcommand.substring(space2+1, rawcommand.indexOf('>')).toInt();

   if (receivelog){
     Serial.println("decoded commands are:");
     Serial.flush();
     Serial.println("command = " +  command);
     Serial.flush();
     Serial.println("times = " +  times);
     Serial.flush();
     Serial.println("speedms = " +  speedms);
   }
   
 }
 else
 {
   if (receivelog){
      Serial.println("Command is NOT valid");
   }
   resetserial();  
 }

}
}
//--------------------------------------------------------------
void resetserial (void) // This clears any received IR commands that where received in the serial buffer while the robot was execution a command.
{
//resetting all variables
rawcommand = “”;
command = “”;
times = 0;
speedms = 0;

//flushing the serial buffer (64 byte) so there are no stored movements that need to be handled (annoying)…
while (Serial.available()) {
Serial.read();
}
}
//--------------------------------------------------------------
void executecommand (void) // Execute the commands that are stored in the global vars.
{
if (command == “LR”)
{
leanright(speedms*5);
resetserial();
}
}


#7

hola pedro
Utilicé el mismo boceto que tú, creo que el problema puede ser
de la comunicación IR. Verifique el volumen del teléfono o conecte el control remoto IR y verifique que las baterías de la placa ARDUINO estén completamente cargadas. Y no se olvide de cambiar después de programar la placa para cambiar el interruptor SW1 PROGRAM / IR a la posición IR. El interruptor en el tablero vrssm.
Adiós pedro buena programación.