Autor: Rodrigo Bermedo
Competencia: Desarrollo de software (nivel 1)
Palabras claves:NXC, NXT, Lego, programacion
Descripcion de la actividad
Esta actividad fue la segunda desarrollada en el curso de proyecto de robotica de la carrera de Ingenieria Civil Informatica de la Universidad Catolica de Temuco. En esta actividad en especial el robot debia desplazarse por una superficie delimitada sin bordes, la funcion que debia cumplr el robot era determinar la altura que existia desde el piso hacia donde se encontraba el robot. esto debia repetirlo 4 veces y almacenar las alturas en un arreglo para luego traspasar ese arreglo a un archivo de texto que debia ser mostrado en la pantalla del robot NXT.
Pseudocodigo
Pseudocódigo:
Declara enteros medidas[4],tam=512,n=0,i=0,cont=0,num=0;
Declara bytes punteroAtchivo, bytesEscritos;
Declara string numeros,linea="--->",cadena,read,mas="Pit";
#define height 20
sub MedirAltura()
{
medidas[n]=Altura del Precipicio;
Muestras en Pantalla la altura en cm;
n++;
}
sub CrearArchivo()
{
Crea Archivo "Texto.txt";
Guarda en el archivo "REPORTE PITFINDER";
Guarda en el archivo "_________________";
Por(cont=0; mientras cont < Largo de medidas; cont++)
{
num++;
Transforma numeros a String y lo guarda en num;
Transforma cadena en String y lo guardo en medidas[cont];
cadena=mas+numeros+linea+cadena;
Guarda en el Archivo el string cadena;
}
Cierra el Archivo;
}
task Programa()
{
Mientras(i<4)
{
Avanza a Potencia 50;
Si(El sensor es mayor a height)
{
i++;
Inicio mutex;
Avanza 0.1 seg a potencia 50;
Se detiene por 1 seg;
MedirAltura();
Retrocede por 1 seg a potencia 50;
Gira a potencia 50 entre 1.2 y 1.6 seg;
Fin mutex;
}
}
declara entero num1=50;
declara booleano eof = false;
Apaga los motores;
CrearArchivo();
Limpia la pantalla;
Abre y lee el archivo Texto.txt;
mientras(no llegue al final del archivo)
{
if(La lectura del archivo no tiene error)
eof=true;
Muestra eb pantalla el archivo por 5 seg;
}
Cierra el Archivo;
}
task main()
{
Setea Sensor de UltraSonido(IN_1);
Inicia Multitareas(Programa);
}
Declara enteros medidas[4],tam=512,n=0,i=0,cont=0,num=0;
Declara bytes punteroAtchivo, bytesEscritos;
Declara string numeros,linea="--->",cadena,read,mas="Pit";
#define height 20
sub MedirAltura()
{
medidas[n]=Altura del Precipicio;
Muestras en Pantalla la altura en cm;
n++;
}
sub CrearArchivo()
{
Crea Archivo "Texto.txt";
Guarda en el archivo "REPORTE PITFINDER";
Guarda en el archivo "_________________";
Por(cont=0; mientras cont < Largo de medidas; cont++)
{
num++;
Transforma numeros a String y lo guarda en num;
Transforma cadena en String y lo guardo en medidas[cont];
cadena=mas+numeros+linea+cadena;
Guarda en el Archivo el string cadena;
}
Cierra el Archivo;
}
task Programa()
{
Mientras(i<4)
{
Avanza a Potencia 50;
Si(El sensor es mayor a height)
{
i++;
Inicio mutex;
Avanza 0.1 seg a potencia 50;
Se detiene por 1 seg;
MedirAltura();
Retrocede por 1 seg a potencia 50;
Gira a potencia 50 entre 1.2 y 1.6 seg;
Fin mutex;
}
}
declara entero num1=50;
declara booleano eof = false;
Apaga los motores;
CrearArchivo();
Limpia la pantalla;
Abre y lee el archivo Texto.txt;
mientras(no llegue al final del archivo)
{
if(La lectura del archivo no tiene error)
eof=true;
Muestra eb pantalla el archivo por 5 seg;
}
Cierra el Archivo;
}
task main()
{
Setea Sensor de UltraSonido(IN_1);
Inicia Multitareas(Programa);
}
Codigo fuente
int medidas[4];
int tam=512;
int n=0;
int i=0;
int cont=0;
int num=0;
byte punteroArchivo;
byte bytesEscritos;
mutex multi1;
string numeros;
string linea=" ---->";
string cadena;
string read;
string mas="Pit";
#define height 20
sub MedirAltura()
{
medidas[n]=SensorUS(IN_1);
NumOut(0,10*n,medidas[n]);
n++;
}
sub CrearArchivo()
{
CreateFile("Texto.txt", tam, punteroArchivo);
WriteLnString(punteroArchivo, "REPORTE PITFINDER", bytesEscritos);
WriteLnString(punteroArchivo, "__________________", bytesEscritos);
for(cont=0; cont < ArrayLen(medidas); cont++)
{
num++;
numeros= NumToStr(num);
cadena = NumToStr(medidas[cont]);
cadena = mas + numeros + linea + cadena;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
CloseFile(punteroArchivo);
}
task Programa()
{
while (i<4)
{
OnFwd(OUT_AC,50);
if (SensorUS(IN_1)>height)
{
i++;
Acquire(multi1);
OnFwd(OUT_AC,50);
Wait(100);
Off(OUT_AC);
Wait(1000);
MedirAltura();
OnRev(OUT_AC,50);
Wait(1000);
OnFwd(OUT_C,50);
OnRev(OUT_A,50);
Wait(Random(1200)+400);
Release(multi1);
}
}
int num1=50;
bool eof = false;
Off(OUT_AC);
CrearArchivo();
ClearScreen();
OpenFileRead("Texto.txt", tam, punteroArchivo);
while (eof == false){ // read the text file till the end
if(ReadLnString(punteroArchivo,read) != NO_ERR) eof = true;
TextOut(LCD_LINE8,num1,read);
num1= num1-10;
Wait(500);}
Wait(5000);
CloseFile(punteroArchivo);
}
task main()
{
SetSensorLowspeed(IN_1);
Precedes(Programa);
}
int tam=512;
int n=0;
int i=0;
int cont=0;
int num=0;
byte punteroArchivo;
byte bytesEscritos;
mutex multi1;
string numeros;
string linea=" ---->";
string cadena;
string read;
string mas="Pit";
#define height 20
sub MedirAltura()
{
medidas[n]=SensorUS(IN_1);
NumOut(0,10*n,medidas[n]);
n++;
}
sub CrearArchivo()
{
CreateFile("Texto.txt", tam, punteroArchivo);
WriteLnString(punteroArchivo, "REPORTE PITFINDER", bytesEscritos);
WriteLnString(punteroArchivo, "__________________", bytesEscritos);
for(cont=0; cont < ArrayLen(medidas); cont++)
{
num++;
numeros= NumToStr(num);
cadena = NumToStr(medidas[cont]);
cadena = mas + numeros + linea + cadena;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
CloseFile(punteroArchivo);
}
task Programa()
{
while (i<4)
{
OnFwd(OUT_AC,50);
if (SensorUS(IN_1)>height)
{
i++;
Acquire(multi1);
OnFwd(OUT_AC,50);
Wait(100);
Off(OUT_AC);
Wait(1000);
MedirAltura();
OnRev(OUT_AC,50);
Wait(1000);
OnFwd(OUT_C,50);
OnRev(OUT_A,50);
Wait(Random(1200)+400);
Release(multi1);
}
}
int num1=50;
bool eof = false;
Off(OUT_AC);
CrearArchivo();
ClearScreen();
OpenFileRead("Texto.txt", tam, punteroArchivo);
while (eof == false){ // read the text file till the end
if(ReadLnString(punteroArchivo,read) != NO_ERR) eof = true;
TextOut(LCD_LINE8,num1,read);
num1= num1-10;
Wait(500);}
Wait(5000);
CloseFile(punteroArchivo);
}
task main()
{
SetSensorLowspeed(IN_1);
Precedes(Programa);
}

