Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda convertir un numero binario a decimal en c

Desde
14 Oct 2011
Mensajes
12
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
 
puedes usar este codigo en una funcion

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
int binario[20];
int b,a=0,val=0,c;
void main(){
cout<<"cuants bits vas a introducri";
cin>>b;
c=b-1;
int x;
for( x=0;x<=c;x++){
cout<<"bit["<<x<<"]";
cin>>binario[x];
}
for(x=c;x>=0;x--){
if(binario[x]!=0){
val=val+pow(2,a);
}
a++;
}
cout<<"El valor es "<<val;
getch();
}
 
gracias me sirvio de mucho aunque no uso c realmente pero solo cambiando unas cosa y quedo gracias de verdad :D
 
Volver
Arriba