Hola JuegosRobotica.es
¡Anda! Que ya me vale.
Del PDF librombot_ranger_español:
_Es relevante conocer el significado de los colores ID que podemos encontrarnos en los
puertos de las diferentes placas de Makeblock. Estos son:
Rojo (motores), Amarillo (interface digital), Azul (interface digital dual), Gris (Puerto
serie, bluetooth), Negro (interface analógica y dual) y Blanco (Puerto I2C).
Muchisimas gracias por la documentación, ¿Donde has conseguido los esquemas? Mira que los he busacado, lo de I2C lo digo por que llamé a Soporte y así me lo confirmaron, aunque en su día destripando el firmware de la placa Auriga si ví las lineas de codigo, las habituales para tratar sensores de ultrasonidos con arduino y una función de la libreria MeAuriga y como en esas líneas se convertia el tiempo de recepción del eco en distancia, ahora pensando que iban por I2C empezaron todas esas preguntas que no entendia.
**
void readSensor(uint8_t device)
{
/**
ff 55 len idx action device port slot data a
0 1 2 3 4 5 6 7 8
*/
float value=0.0;
uint8_t port,slot,pin;
port = readBuffer(6);
pin = port;
switch(device)
{
case ULTRASONIC_SENSOR:
{
if(us == NULL)
{
us = new MeUltrasonicSensor(port);
}
else if(us->getPort() != port)
{
delete us;
us = new MeUltrasonicSensor(port);
}
value = (float)us->distanceCm();
writeHead();
writeSerial(command_index);
sendFloat(value);
}
break;
case ULTRASONIC_ARDUINO:
{
uint8_t trig = readBuffer(6);
uint8_t echo = readBuffer(7);
long pw_data;
float dis_data;
pinMode(trig,OUTPUT);
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
pinMode(echo, INPUT);
pw_data = pulseIn(echo,HIGH,30000);
dis_data = pw_data/58.0;
delay(5);
writeHead();
writeSerial(command_index);
sendFloat(pw_data);
}
break;
Ahora, veo en el esquema un pin5 T PWR del RJ11 y otro pin6 SIG conectados al microcontrolador y como vemos en el firmware parece que usa uno para trigger y otro para echo.
Momento en el que nos falló el sensor:
Teníamos en el puerto 10 el sensor de ultrasonidos, y en el 6 usabamos un interface para dos servos, por curiosidad del cableado, pasamos el sensor al puerto 6 y los servos al 10, arrancamos la aplicación y no funcionaba, habiamos dado al control de los servos al puerto del sensor US, rectificamos y estuvo funcionando correctamente, desmontamos, hacemos la práctica del robot de dos ruedas, el de las insrucciones, con el sensor en el puerto 10 y ya no funcionaba. ¿Pudo averiarlo cuando lo conectamos al puerto 6? esta práctica se realizó con conexión USB.
Saludos
Hola JuegosRobotica.es
¡Anda! Que ya me vale.
Del PDF libro_mbot_ranger_español:
_Es relevante conocer el significado de los colores ID que podemos encontrarnos en los
puertos de las diferentes placas de Makeblock. Estos son:
Rojo (motores), **Amarillo (interface digital)**, Azul (interface digital dual), Gris (Puerto
serie, bluetooth), Negro (interface analógica y dual) y Blanco (Puerto I2C)_.
Muchisimas gracias por la documentación, ¿Donde has conseguido los esquemas? Mira que los he busacado, lo de I2C lo digo por que llamé a Soporte y así me lo confirmaron, aunque en su día destripando el firmware de la placa Auriga si ví las lineas de codigo, las habituales para tratar sensores de ultrasonidos con arduino y una función de la libreria MeAuriga y como en esas líneas se convertia el tiempo de recepción del eco en distancia, ahora pensando que iban por I2C empezaron todas esas preguntas que no entendia.
##### ************
_void readSensor(uint8_t device)
{
/**************************************************
ff 55 len idx action device port slot data a
0 1 2 3 4 5 6 7 8
***************************************************/
float value=0.0;
uint8_t port,slot,pin;
port = readBuffer(6);
pin = port;
switch(device)
{
case ULTRASONIC_SENSOR:
{
if(us == NULL)
{
us = new MeUltrasonicSensor(port);
}
else if(us->getPort() != port)
{
delete us;
us = new MeUltrasonicSensor(port);
}
value = (float)us->distanceCm();
writeHead();
writeSerial(command_index);
sendFloat(value);
}
break;
case ULTRASONIC_ARDUINO:
{
uint8_t trig = readBuffer(6);
uint8_t echo = readBuffer(7);
long pw_data;
float dis_data;
pinMode(trig,OUTPUT);
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
pinMode(echo, INPUT);
pw_data = pulseIn(echo,HIGH,30000);
dis_data = pw_data/58.0;
delay(5);
writeHead();
writeSerial(command_index);
sendFloat(pw_data);
}
break;_
****************
Ahora, veo en el esquema un pin5 T PWR del RJ11 y otro pin6 SIG conectados al microcontrolador y como vemos en el firmware parece que usa uno para trigger y otro para echo.
Momento en el que nos falló el sensor:
Teníamos en el puerto 10 el sensor de ultrasonidos, y en el 6 usabamos un interface para dos servos, por curiosidad del cableado, pasamos el sensor al puerto 6 y los servos al 10, arrancamos la aplicación y no funcionaba, habiamos dado al control de los servos al puerto del sensor US, rectificamos y estuvo funcionando correctamente, desmontamos, hacemos la práctica del robot de dos ruedas, el de las insrucciones, con el sensor en el puerto 10 y ya no funcionaba. ¿Pudo averiarlo cuando lo conectamos al puerto 6? esta práctica se realizó con conexión USB.
Saludos