Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:miw:miw08_mindstormscontrolj:nxt_icommand.pl [2008/04/14 10:25]
miw utworzono
pl:miw:miw08_mindstormscontrolj:nxt_icommand.pl [2008/05/20 12:25]
gjn
Linia 1: Linia 1:
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
-%                                                                        % 
-% Author: Pawel Gutowski pawel.gutowski@gmail.com ​                       % 
-% University of Science and Technology AGH in Cracow ​                    % 
-% 2008                                                                   % 
-%                                                                        % 
-%                                                                        % 
-% PortName ​ = '​S1'​ or                                                    %  
-%             '​S2'​ or                                                    % 
-%             '​S3'​ or                                                    % 
-%             '​S4' ​                                                      % 
-%                                                                        % 
-% MotorName = '​A' ​ or                                                    % 
-%             '​B' ​ or                                                    % 
-%             '​C' ​                                                       % 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
-:- module(nxt_iCmd,​[ 
- nxt_iCmd_open/​0,​ 
- nxt_iCmd_close/​0,​ 
- nxt_iCmd_distance/​2,​ 
- nxt_iCmd_pressed/​2,​ 
- nxt_iCmd_lightPercentage/​2,​ 
- nxt_iCmd_LED/​2,​ 
- nxt_iCmd_loudness/​2,​ 
- nxt_iCmd_batteryMilliVolt/​1,​ 
- nxt_iCmd_playSoundFile/​2,​ 
- nxt_iCmd_stopPlayingSound/​0,​ 
- nxt_iCmd_playTone/​2,​ 
- % motors 
- nxt_iCmd_stopMotor/​1,​ 
- nxt_iCmd_setMotorSpeed/​2,​ 
- nxt_iCmd_getMotorSpeed/​2,​ 
- nxt_iCmd_rotateMotorToAngle/​3,​ 
- nxt_iCmd_getMotorAngle/​2,​ 
- nxt_iCmd_resetMotorAngle/​1 
-    ]). 
- 
-nxt_iCmd_open:​- 
- writeln('​Opening connection...'​),​ 
- jpl_call( '​icommand.nxt.comm.NXTCommand'​ , '​open',​ [], _), 
- writeln('​Configuring connection...'​),​ 
- jpl_call( '​icommand.nxt.comm.NXTCommand'​ , '​setVerify',​ [@(true)], _), 
- writeln('​Connection established!'​). 
- 
-nxt_iCmd_close:​- 
- writeln('​Closing connection...'​),​ 
- jpl_call( '​icommand.nxt.comm.NXTCommand'​ , '​close',​ [], _), 
- writeln('​Connection is closed.'​). 
- 
- 
-nxt_iCmd_distance(PortName,​ Dist):- 
- writeln('​Getting port handle...'​),​ 
- jpl_get('​icommand.nxt.SensorPort',​ PortName, PortHandle),​ 
- writeln('​Creating ultrasonic sensor object...'​),​ 
- jpl_new('​icommand.nxt.UltrasonicSensor',​ [PortHandle],​ UltraSonic),​ 
- writeln('​Reading distance from ultrasonic sensor...'​),​ 
- jpl_call( UltraSonic, '​getDistance',​ [], Dist), 
- writeln('​Reading finished.'​). 
- 
-nxt_iCmd_pressed(PortName,​ Pressed):- 
- writeln('​Getting port handle...'​),​ 
- jpl_get('​icommand.nxt.SensorPort',​ PortName, PortHandle),​ 
- writeln('​Creating touch sensor object...'​),​ 
- jpl_new('​icommand.nxt.TouchSensor',​ [PortHandle],​ TouchSensor),​ 
- writeln('​Reading touch sensor state...'​),​ 
- jpl_call( TouchSensor,​ '​isPressed',​ [], Pressed), 
- writeln('​Reading finished.'​). 
- 
-nxt_iCmd_lightPercentage(PortName,​ LightPercentage):​- 
- writeln('​Getting port handle...'​),​ 
- jpl_get('​icommand.nxt.SensorPort',​ PortName, PortHandle),​ 
- writeln('​Creating light sensor object...'​),​ 
- jpl_new('​icommand.nxt.LightSensor',​ [PortHandle],​ LightSensor),​ 
- writeln('​Reading light percentage...'​),​ 
- jpl_call( LightSensor,​ '​getLightPercent',​ [], LightPercentage),​ 
- writeln('​Reading finished.'​). 
- 
-nxt_iCmd_LED(PortName,​ IsON):- 
- writeln('​Getting port handle...'​),​ 
- jpl_get('​icommand.nxt.SensorPort',​ PortName, PortHandle),​ 
- writeln('​Creating light sensor object...'​),​ 
- jpl_new('​icommand.nxt.LightSensor',​ [PortHandle],​ LightSensor),​ 
- writeln('​Setting LED state...'​),​ 
- nxt_iCmdHelper_setLEDState(LightSensor,​ IsON), 
- writeln('​Setting finished.'​). 
- 
-nxt_iCmd_loudness(PortName,​ Loudness):- 
- writeln('​Getting port handle...'​),​ 
- jpl_get('​icommand.nxt.SensorPort',​ PortName, PortHandle),​ 
- writeln('​Creating Sound sensor object...'​),​ 
- jpl_new('​icommand.nxt.SoundSensor',​ [PortHandle],​ SoundSensor),​ 
- writeln('​Reading loudness...'​),​ 
- jpl_call( SoundSensor,​ '​getdBA',​ [], Loudness), 
- writeln('​Reading finished.'​). 
- 
-% 
-% Funkcje "​dodatkowe"​ 
-% 
-% 
-nxt_iCmd_batteryMilliVolt(MilliVolt):​- 
- writeln('​Checking battery millivoltage...'​),​ 
- jpl_call( '​icommand.nxt.Battery'​ , '​getVoltageMilliVolt',​ [], MilliVolt). 
- 
- 
-% 
-% Np: iCmd_playSoundFile('​Good Job.rso',​ @(true)).  
-% 
- 
-nxt_iCmd_playSoundFile(SoundName,​ Repeat):- 
- writeln('​Starting sound playing...'​),​ 
- jpl_call( '​icommand.nxt.Sound'​ , '​playSoundFile',​ [SoundName, Repeat], _). 
- 
-nxt_iCmd_stopPlayingSound:​- 
- writeln('​Stopping sound playing...'​),​ 
- jpl_call( '​icommand.nxt.Sound'​ , '​stopSoundPlayback',​ [], _). 
- 
-% 
-% Frequency [Hz] 
-% Duration ​ [ms] 
-% 
- 
-nxt_iCmd_playTone(Frequency,​ Duration):- 
- writeln('​Starting tone playing...'​),​ 
- jpl_call( '​icommand.nxt.Sound'​ , '​playTone',​ [Frequency, Duration], _). 
- 
- 
- 
-% 
-% Funkcja "​stop()"​ działa - z kodu źródłowego iCommand wynika, że jest to nic innego 
-% jak ustawienie prędkości (mocy?) silnika na 0. 
-% Czy nie istenieje ryzyko spalenia silnika? 
-% 
- 
-nxt_iCmd_stopMotor(MotorName):​- 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call(MotorHandle,​ '​stop',​ [], _). 
- 
-% 
-% Speed [degrees/​sec]. 
-% Kierunek obrotu okresla znak +/- predkosci. 
-% 
- 
-nxt_iCmd_setMotorSpeed(MotorName,​ Speed):- 
- writeln('​Setting motor speed...'​),​ 
- Speed >= 0, 
- writeln('​Setting forward motor speed...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call( MotorHandle,​ '​setSpeed',​ [Speed], _), 
- jpl_call( MotorHandle,​ '​forward', ​ [], _), 
- writeln('​Motor is now moving.'​). 
- 
-nxt_iCmd_setMotorSpeed(MotorName,​ Speed):- 
- writeln('​Setting motor speed...'​), ​ 
- Speed < 0, 
- writeln('​Setting backward motor speed...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- writeln('​Counting module of Speed...'​),​ 
- NewSpeed is -Speed, 
- write('​Module of speed is: '), 
- writeln(NewSpeed),​ 
- writeln('​Setting motor speed...'​),​ 
- jpl_call( MotorHandle,​ '​setSpeed',​ [NewSpeed], _), 
- writeln('​Starting the backward movement of motor...'​),​ 
- jpl_call( MotorHandle,​ '​backward', ​ [], _), 
- writeln('​Motor is now moving.'​). 
- 
-% 
-% UWAGA: ​ 
-% Przy odczycie nie bedzie znany kierunek, lecz tylko predkosc silnika! 
-% iCommand nie daje możlwiości odczytania kierunku obrotu 
-% 
- 
-nxt_iCmd_getMotorSpeed(MotorName,​ Speed):- 
- writeln('​Reading actual motor speed...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call(MotorHandle,​ '​isMoving',​ [], IsMoving), 
- IsMoving == @(true), 
- jpl_call(MotorHandle,​ '​getSpeed',​ [], Speed). 
- 
-nxt_iCmd_getMotorSpeed(MotorName,​ Speed):- 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call(MotorHandle,​ '​isMoving',​ [], IsMoving), 
- IsMoving == @(false), 
- Speed = 0. 
- 
-nxt_iCmd_rotateMotorToAngle(MotorName,​ Angle, Speed):- 
- writeln('​Rotating motor to...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call( MotorHandle,​ '​setSpeed',​ [Speed], _), 
- jpl_call( MotorHandle,​ '​rotateTo', ​ [Angle, @(true)], _), 
- writeln('​Motor is now moving.'​). 
- 
-nxt_iCmd_getMotorAngle(MotorName,​ Angle):- 
- writeln('​Reading actual tacho count...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call(MotorHandle,​ '​getTachoCount',​ [], Angle). 
- 
-nxt_iCmd_resetMotorAngle(MotorName):​- 
- writeln('​Resetting tacho count...'​),​ 
- jpl_get('​icommand.nxt.Motor',​ MotorName, MotorHandle),​ 
- jpl_call(MotorHandle,​ '​resetTachoCount',​ [], _). 
- 
- 
-% 
-% HELPERS 
-% 
- 
-nxt_iCmdHelper_setLEDState(LightSensor,​ IsON):- 
- writeln('​Checking if LED should be turned ON...'​),​ 
- IsON == @(true), 
- writeln('​Yes,​ LED should be turned ON - turning ON...'​),​ 
- jpl_call( LightSensor,​ '​activate',​ [], _), 
- writeln('​LED has been turned ON.'). 
- 
-nxt_iCmdHelper_setLEDState(LightSensor,​ IsON):- 
- writeln('​Checking if LED should be turned ON...'​),​ 
- IsON == @(false), 
- writeln('​No,​ LED should be turned OFF - turning OFF...'​),​ 
- jpl_call( LightSensor,​ '​passivate',​ [], _), 
- writeln('​LED has been turned OFF.'​).  
  
pl/miw/miw08_mindstormscontrolj/nxt_icommand.pl.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0