qwertyqwerty12345
Becerro
- Desde
- 14 Oct 2011
- Mensajes
- 12
- Tema Autor
- #1
Hola bakunos les comento que ando en un proyecto de robotica y estamos programando un robot siguelineas con un matriz de ocho sensores en uno(lineleader de lego mindstorm)y la cosa esta en que te muestra la lectura del sensor en binario on ejemplo es k si el robot esta en medio miraria esto 00011000 y para nuestra conveniencia seria mejor trabajar la lectura en decimal
pero es algo complicado porque apenas comienso en la programacion hay algunas cosas que se por ejemplo ke se utilisa un ciclo for no habia mencionado que usamos brixcc que esta basado en c aparte utiliza unas variables 2 si mal no recuerdo y despues de for sigue if (variable .......,false);
utiliza una bariable string msg si mal no recuerdo que es la ke tiene el balor del codigo binario
les dejo el programa de ejemplo que comvierte la lectura del sensor a binario
const byte SensorPort = IN_1;
#define ADDR 0x02
#include "LL-lib.nxc"
char last_steering = 0;
task RunAlongLine()
{
char steering, result;
int c_speed, a_speed;
while (true ) {
steering = LL_ReadSteering(SensorPort, ADDR);
steering = steering / 2;
c_speed = 50 + steering;
a_speed = 50 - steering;
if ( c_speed > 100 ) c_speed = 100;
if ( a_speed > 100 ) a_speed = 100;
if ( c_speed < -100 ) c_speed = -100;
if ( a_speed < -100 ) a_speed = -100;
result = LL_Read(SensorPort, ADDR, LL_READ_RESULT);
msg = "bin: ";
x = LL_format_bin(result);
msg = StrReplace(msg, 4, x);
TextOut(0, LCD_LINE1, msg, false);
// print power
msg = "p: ";
x = NumToStr(c_speed);
msg = StrReplace(msg, 2, x);
x = NumToStr(a_speed);
msg = StrReplace(msg, 7, x);
TextOut(0, LCD_LINE2, msg, false);
msg = "steering: ";
x = NumToStr(steering);
msg = StrReplace(msg, 10, x);
TextOut(0, LCD_LINE3, msg, false);
OnFwdReg(OUT_A, a_speed, OUT_REGMODE_SPEED);
OnFwdReg(OUT_C, c_speed, OUT_REGMODE_SPEED);
}
}
task main ()
{
string msg;
string x;
int s, i;
byte message[];
unsigned byte buf[20];
int count, l;
byte nByteReady = 0;
SetSensorLowspeed(SensorPort);
Wait(10);
LL_Write_KP(SensorPort, ADDR, 25, 32);
LL_Write_KI(SensorPort, ADDR, 0, 200);
LL_Write_KD(SensorPort, ADDR, 8, 32);
StartTask (RunAlongLine);
principal mente lo de rojo es lo que convierte a binario lo demas solo hace ke se mueva el robot
Gracias y saludos
pero es algo complicado porque apenas comienso en la programacion hay algunas cosas que se por ejemplo ke se utilisa un ciclo for no habia mencionado que usamos brixcc que esta basado en c aparte utiliza unas variables 2 si mal no recuerdo y despues de for sigue if (variable .......,false);
utiliza una bariable string msg si mal no recuerdo que es la ke tiene el balor del codigo binario
les dejo el programa de ejemplo que comvierte la lectura del sensor a binario
const byte SensorPort = IN_1;
#define ADDR 0x02
#include "LL-lib.nxc"
char last_steering = 0;
task RunAlongLine()
{
char steering, result;
int c_speed, a_speed;
while (true ) {
steering = LL_ReadSteering(SensorPort, ADDR);
steering = steering / 2;
c_speed = 50 + steering;
a_speed = 50 - steering;
if ( c_speed > 100 ) c_speed = 100;
if ( a_speed > 100 ) a_speed = 100;
if ( c_speed < -100 ) c_speed = -100;
if ( a_speed < -100 ) a_speed = -100;
result = LL_Read(SensorPort, ADDR, LL_READ_RESULT);
msg = "bin: ";
x = LL_format_bin(result);
msg = StrReplace(msg, 4, x);
TextOut(0, LCD_LINE1, msg, false);
// print power
msg = "p: ";
x = NumToStr(c_speed);
msg = StrReplace(msg, 2, x);
x = NumToStr(a_speed);
msg = StrReplace(msg, 7, x);
TextOut(0, LCD_LINE2, msg, false);
msg = "steering: ";
x = NumToStr(steering);
msg = StrReplace(msg, 10, x);
TextOut(0, LCD_LINE3, msg, false);
OnFwdReg(OUT_A, a_speed, OUT_REGMODE_SPEED);
OnFwdReg(OUT_C, c_speed, OUT_REGMODE_SPEED);
}
}
task main ()
{
string msg;
string x;
int s, i;
byte message[];
unsigned byte buf[20];
int count, l;
byte nByteReady = 0;
SetSensorLowspeed(SensorPort);
Wait(10);
LL_Write_KP(SensorPort, ADDR, 25, 32);
LL_Write_KI(SensorPort, ADDR, 0, 200);
LL_Write_KD(SensorPort, ADDR, 8, 32);
StartTask (RunAlongLine);
principal mente lo de rojo es lo que convierte a binario lo demas solo hace ke se mueva el robot
Gracias y saludos