programación en c

3
Programación. Para programar el NXT necesitábamos un IDE especifico que pudiese comunicarse con el robot, estuvimos varias semanas buscando una aplicación correcta para nuestras necesidades, hasta que dimos con una. Hay varias maneras de programar el NXT, todo ello con varios lenguajes y el correcto IDE para la comunicación entre el PC y el NXT. El IDE usado ha sido “RobotC”, esta aplicación permite programar en C. Ejemplos de funciones básicas de comunicación: - Motores/Servos: Motor[MotorX]=-100-100; - Sonido: PlayTone(440,200); - Sensor de presión:SensorValue(touch); - Tiempos: Wait1Msec(3000); PROGRAMA: Sensor de choque. #pragma config(Sensor, S1, touch, sensorTouch) //*!!Code automatically generated by ‘ROBOTC’ configuration wizard !!*// task main() { //Mientras MotorA sea igual a 0 sigue avanzando. while(SensorValue(touch)==0){ motor[motorB]=50; motor[motorC]=50; } /*Cuando MotorA sea igual a 1, entra en IF. Si MotorA es igual a 1, avanza hacia atras al 50 por ciento de potencia durante 1 segundo */ if(SensorValue(touch)==1){ motor[motorB]=-50; motor[motorC]=-50;

Upload: ahernac3d

Post on 16-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Programacin.Para programar el NXT necesitbamos un IDE especifico que pudiese comunicarse con el robot, estuvimos varias semanas buscando una aplicacin correcta para nuestras necesidades, hasta que dimos con una.Hay varias maneras de programar el NXT, todo ello con varios lenguajes y el correcto IDE para la comunicacin entre el PC y el NXT.El IDE usado ha sido RobotC, esta aplicacin permite programar en C.Ejemplos de funciones bsicas de comunicacin:- Motores/Servos:Motor[MotorX]=-100-100;- Sonido:PlayTone(440,200);- Sensor de presin:SensorValue(touch);- Tiempos:Wait1Msec(3000);PROGRAMA: Sensor de choque.#pragma config(Sensor, S1, touch, sensorTouch)//*!!Code automatically generated by ROBOTC configuration wizard !!*//task main(){//Mientras MotorA sea igual a 0 sigue avanzando.while(SensorValue(touch)==0){motor[motorB]=50;motor[motorC]=50;}/*Cuando MotorA sea igual a 1, entra en IF.Si MotorA es igual a 1, avanza hacia atras al 50 por ciento de potencia durante 1 segundo */if(SensorValue(touch)==1){motor[motorB]=-50;motor[motorC]=-50;wait1Msec(1000);//Luego gira hacia la derecha durante 1 segundo(90 grados).motor[motorB]=25;motor[motorC]=75;wait1Msec(1000);SensorValue(touch)=0;}//Mientras MotorA sea igual a 0 sigue avanzando.while(SensorValue(touch)==0){motor[motorB]=50;motor[motorC]=50;}/*Cuando MotorA sea igual a 1, entra en IF.Si MotorA es igual a 1, avanza hacia atras al 50 por ciento de potencia durante 1 segundo */if(SensorValue(touch)==1){motor[motorB]=-50;motor[motorC]=-50;wait1Msec(1000);//Luego gira hacia la derecha durante 1 segundo(90 grados).motor[motorB]=75;motor[motorC]=25;wait1Msec(1000);SensorValue(touch)=0;}}PROGRAMA: Giros.task main (){// Gira hacia la derechaPlayTone(440, 500);/*Ejecuta un sonido durante 5 segundos a una frequencia de 440 Hz*/motor[motorC] = 50;motor[motorB] = 20;wait1Msec(5000);/*PARADO*/PlayTone(600, 400);/*Ejecuta un sonido durante 4 segundos a una frequencia de 600 Hz*/motor[motorC] = 0;motor[motorB] = 0;wait1Msec(500);/*Avanza en recto*/motor[motorC] = 50;motor[motorB] = 50;wait1Msec(3000);/*PARADO*/motor[motorC] = 0;motor[motorB] = 0;wait1Msec(500);// Gira hacia la izquierdaPlayTone(440, 500);/*Ejecuta un sonido durante 5 segundos a una frequencia de 440 Hz*/motor[motorB] = 50;motor[motorC] = 20;wait1Msec(5000);/*PARADO*/motor[motorC] = 0;motor[motorB] = 0;wait1Msec(500);/*Avanza hacia atras*/do{PlayTone(800, 50);/*Ejecuta un sonido durante 1 segundo intermitentemente a una frequencia de 800 Hz*/motor[motorC] = -50;motor[motorB] = -50;wait1Msec(3000);}while(motorC && motorB);/*PARAR ROBOT*/motor[motorC] = 0;motor[motorB] = 0;}