This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

miércoles, 24 de julio de 2013

Otro ejemplo de programacion en C++ a un robot Lego NXT


Vamos a crear un programa en C++ para que el LEGO NXT combine varias acciones de detección y movimiento de manera simultánea.

Proponemos el código siguiente:

#include
#include
#include
#include
#include "nxt.h"
//using namespace std;

// Set up the NXT
Connection *connection = new Nxt_network();
Sensor *sensor1 = new Touch(IN_1, connection);
Sensor *sensor2 = new Light(IN_3, connection, LED_ON);
Sensor *sensor3 = new Sound(IN_2, connection, DBA_MODE);
Motor *motorB = new Motor(OUT_B, connection);
Motor *motorC = new Motor(OUT_C, connection);
int main()
{
  try{
    cout << "Try to connect to the NXT" << endl;
    Server_settings settings;
    connection->connect(1000, "127.0.0.1", settings); // Connect to localhost
    cout << "Connected" << endl;
    cout << "Press touch sensor to make motors B and C turn - hit any key to end" << endl;
    while(!_kbhit()){ // Hit a key to end
      if(sensor1->read()){
        motorB->on(-75);
        motorC->on(-75);
      }
 //Sensor de Luz: Lego lee el valor del sensor de luz y, además, enciende y apaga el LED de dicho sensor cada cierto tiempo.     
 while(!_kbhit()){ // Hit a key to end (if not, repeat and repeat next actions)
       sensor2->set(LED_OFF);
       cout << sensor2->print() << endl; // Returns a string with mode dependent sensor value
       cout << sensor2->read() << endl; // Mode dependent value
       Sleep(1000);
       sensor2->set(LED_ON);
       cout << sensor2->print() << endl; // Returns a string with mode dependent sensor value
       cout << sensor2->read() << endl; // Mode dependent value
       Sleep(1000);
     }
 //Sensor de sonido: Lego mide el nivel de sonido del entorno y lo muestra por pantalla.
 while(!_kbhit()){//hit a key to end
       cout << sensor3->print() << endl; //returns a string can be used on all sensor types
       cout << sensor3->read() << endl;
     }
       else{
       motorB->stop();
       motorC->stop();
      }
    }
    connection->disconnect();
  }
  catch (Nxt_exception& e){
    // Some error occurred - print it out
    cout << e.what() << endl;
    cout << "error code: " << e.error_code() << endl;
    cout << "error type: " << e.error_type() << endl;
    cout << e.who() << endl;
    connection->disconnect();
  }
  return 0;
}

Programando el robot NXT en C++


Vamos a crear un programa en C++ para que el LEGO mida la distancia con los objetos que tiene a su alrededor. Esto implica crear un objeto para el sensor de ultrasonidos y que la conexión a crear sea por red, en lugar de Bluetooth.

El código que implementa la solución es el siguiente:

#include
#include
#include
#include
#include "nxt.h"
//using namespace std;

//set up the NXT
Connection *connection = new Nxt_network();
Sensor *sensor1 = new Sonar(IN_2, connection, METRIC);
int main()
{
  try{
    cout << "Try to connect to the NXT" << endl;
    Server_settings settings;
    connection->connect(1000, "127.0.0.1", settings); //connect to localhost
    cout << "Connected" << endl;
    while(!_kbhit()){//hit a key to end
      cout << sensor1->print() << endl; //returns a string can be used on all sensor types
      cout << sensor1->read() << endl;
    }
    connection->disconnect();
  }
  catch (Nxt_exception& e){
    //some error occurred - print it out
    cout << e.what() << endl;
    cout << "error code: " << e.error_code() << endl;
    cout << "error type: " << e.error_type() << endl;
    cout << e.who() << endl;
    connection->disconnect();
  }
  system("pause");
  return 0;
}

Proyecto de robótica NXT con LabView


Deseamos que el robot NXT avance con el 20% de su potencia hasta que detecte un ruido
superior a 50 dBA, entonces, el robot retrocederá con el 100% de potencia.         Cuando el
ruido desaparezca, volverá a avanzar con el 20% de potencia. El programa finaliza cuando
se active el sensor de contacto.
 
La solución propuesta: