Vous êtes sur la page 1sur 22
Curso de formación en robótica 2011 D. Carmona Características de pingüino. Conceptos básicos de programación.
Curso de formación en robótica 2011 D. Carmona Características de pingüino. Conceptos básicos de programación.

Curso de formación en robótica 2011 D. Carmona

Curso de formación en robótica 2011 D. Carmona Características de pingüino. Conceptos básicos de programación.
Curso de formación en robótica 2011 D. Carmona Características de pingüino. Conceptos básicos de programación.

Características de pingüino. Conceptos básicos de programación. Entrada/Salida.

Características de pingüino. Conceptos básicos de programación. Entrada/Salida. D. Carmona - CurRo 2k11 2
Características de pingüino. Conceptos básicos de programación. Entrada/Salida. D. Carmona - CurRo 2k11 2

D. Carmona - CurRo 2k11

2

Programación en pinguino D. Carmona - CurRo 2k11 3
Programación en pinguino
D. Carmona - CurRo 2k11
3
Programación en pinguino D. Carmona - CurRo 2k11 3 USB 2.0 4 temporizador/contador (1/3 de 8/16

USB 2.0 4 temporizador/contador (1/3 de 8/16 bit). 5 Entradas analógicas 10 bit. Hasta 18 I/O digital (5 analogicas) Cristal de 20Mhz. 2 salidas PWM (3Khz) USART .

D. Carmona - CurRo 2k11
D. Carmona - CurRo 2k11

4

RSTRSTRSTRST 7777 13131313 6666 14141414 5555 15151515 4444 16161616 3333 17171717 2222 RUNRUNRUNRUN 1111
RSTRSTRSTRST 7777 13131313 6666 14141414 5555 15151515 4444 16161616 3333 17171717 2222 RUNRUNRUNRUN 1111
RSTRSTRSTRST
7777
13131313
6666
14141414
5555
15151515
4444
16161616
3333
17171717
2222
RUNRUNRUNRUN
1111
0000
8888
10101010
9999
11111111
12121212
D. Carmona - CurRo 2k11 5 PinPinPinPin DigitalDigitalDigitalDigital AnalogAnalogAnalogAnalog OtrosOtrosOtrosOtros
D.
Carmona - CurRo 2k11
5
PinPinPinPin
DigitalDigitalDigitalDigital
AnalogAnalogAnalogAnalog
OtrosOtrosOtrosOtros
MicrochipMicrochipMicrochipMicrochip namenamenamename
namenamenamename
I/OI/OI/OI/O
inputinputinputinput
usosusosusosusos
0000
Yes
yes hw
-
RB0RB0/AN12/INT0/FLT0/SDI/SDARB0RB0
1111
Yes
yes hw
-
RB1RB1/AN10/INT1/SCK/SCLRB1RB1
2222
Yes
yes hw
-
RB2RB2/AN8/INT2/VMORB2RB2
3333
Yes
yes hw
-
RB3RB3/AN9/CCP2/VPORB3RB3
4444
Yes
yes hw
-
RB4RB4/AN11/KBI0RB4RB4
5555
Yes
-
-
RB5RB5/KBI1/PGMRB5RB5
6666
Yes
-
-
RB6RB6/KBI2/PGCRB6RB6
7777
Yes
-
-
RB7RB7/KBI3/PGDRB7RB7
8888
Yes
-
Serial Tx
RC6RC6/TX/CKRC6RC6
9999
Yes
-
Serial Rx
RC7RC7/RX/DT/SDORC7RC7
10101010
Yes
-
-
RC0RC0/T1OSO/T13CKRC0RC0
D.
Carmona - CurRo 2k11
6
PinPinPinPin DigitalDigitalDigitalDigital AnalogAnalogAnalogAnalog OtrosOtrosOtrosOtros
PinPinPinPin DigitalDigitalDigitalDigital AnalogAnalogAnalogAnalog OtrosOtrosOtrosOtros
PinPinPinPin
DigitalDigitalDigitalDigital
AnalogAnalogAnalogAnalog
OtrosOtrosOtrosOtros
MicrochipMicrochipMicrochipMicrochip namenamenamename
namenamenamename
I/OI/OI/OI/O
inputinputinputinput
usosusosusosusos
11111111
Yes
-
PWM
RC1RC1/T1OSIRC1RC1
/CCP2/UOE
12121212
Yes
-
PWM
RC2RC2/CCP1RC2RC2
13131313
Yes
Yes all
-
RA0/AN0RA0/AN0RA0/AN0RA0/AN0
14141414
Yes
Yes all
-
RA1/AN1RA1/AN1RA1/AN1RA1/AN1
15151515
Yes
Yes all
-
RA2/AN2RA2/AN2/VREFRA2/AN2RA2/AN2
-/CVREF
16161616
Yes
Yes all
-
RA3/AN3RA3/AN3/VREF+RA3/AN3RA3/AN3
17171717
Yes
Yes all
-
RA5/AN4RA5/AN4/SS/HLVDIN/C2OURA5/AN4RA5/AN4
RunRunRunRun
No
-
-
RA4/T0CKI/C1OUT/RCV
USB+USB+USB+USB+
No
-
USB
RC5/D+/VP
USBUSB-USBUSB---
No
-
USB
RC4/D-/VM
ResetResetResetReset
No
-
-
MCLR/VPP/RE3
D.
Carmona - CurRo 2k11
7
Servos
Expansión
Alimentación 5V
Sensores
Sensores
analógicos
Alimentación
de baterías
Sensores
digitales
D.
Carmona - CurRo 2k11
8
Algunas de las características del PIC 18F2550 no están implementadas (aun) en el software de

Algunas de las características del PIC 18F2550 no están implementadas (aun) en el software de pingüino. El circuito dispone de dos pulsadores:

RESET:

Reset hardware del PIC. Prepara el PIC para programar.

RUN:

Inicia la ejecución del programa cargado en memoria.

RUN: Inicia la ejecución del programa cargado en memoria. D. Carmona - CurRo 2k11 9 El
D.
D.

Carmona - CurRo 2k11

9

del programa cargado en memoria. D. Carmona - CurRo 2k11 9 El circuito se puede alimentar:

El circuito se puede alimentar:

Por USB. (solo lo que funciona a 5V)

Con alimentación externa (entre 7.5 y 12V)

Para seleccionar la forma de alimentar el circuito se utiliza un jumper situado junto al conector USB.

USB

circuito se utiliza un jumper situado junto al conector USB. USB ExternaExternaExternaExterna D. Carmona - CurRo

ExternaExternaExternaExterna

circuito se utiliza un jumper situado junto al conector USB. USB ExternaExternaExternaExterna D. Carmona - CurRo
D.
D.

Carmona - CurRo 2k11

10

Programación en pinguino D. Carmona - CurRo 2k11 11
Programación en pinguino
D. Carmona - CurRo 2k11
11
Programación en pinguino D. Carmona - CurRo 2k11 11 SignoSignoSignoSigno porporporpor TipoTipoTipoTipo
SignoSignoSignoSigno porporporpor TipoTipoTipoTipo TamañoTamañoTamañoTamaño RangoRangoRangoRango conconconcon
SignoSignoSignoSigno porporporpor
TipoTipoTipoTipo
TamañoTamañoTamañoTamaño
RangoRangoRangoRango conconconcon signosignosignosigno
RangoRangoRangoRango sinsinsinsin signosignosignosigno
defectodefectodefectodefecto
boolboolboolbool
1
bit
unsigned
-
0, 1
charcharcharchar
8
bits, 1 byte
signed
-128, +127
0, +255
shortshortshortshort
16
bits, 2 bytes
signed
-32.768, +32.767
0, +65.535
intintintint
16
bits, 2 bytes
signed
-32.768, +32.767
0, +65.535
-2.147.483.648,
longlonglonglong
32
bits, 4 bytes
signed
0, +4.294.967.295
+2.147.483.647
1.175494351E-38,
floatfloatfloatfloat
4
bytes IEEE 754
signed
--
3.402823466E+38
pointerpointerpointerpointer
1, 2, 3 or 4 bytes
generic
--
--
D. Carmona - CurRo 2k11

12

Los programas de pingüino tienen tres funciones básicas: ◦ SetupSetup:SetupSetup Función de configuración . Se

Los programas de pingüino tienen tres funciones básicas:

SetupSetup:SetupSetup

Función de configuración. Se ejecuta antes de iniciar el programa. Se utiliza para configurar los dispositivos que se necesitan en el programa.

LoopLoop:LoopLoop

Función principal. Es un bucle infinito.

UserInterruptUserInterrupt:UserInterruptUserInterrupt

Función que se ejecuta cuando se activa alguna interrupción del microcontrolador. El código debe “averiguar” que produjo la interrupción.

código debe “averiguar” que produjo la interrupción. D. Carmona - CurRo 2k11 13   void setup
código debe “averiguar” que produjo la interrupción. D. Carmona - CurRo 2k11 13   void setup
D.
D.

Carmona - CurRo 2k11

13

 
 

void setup ()

{

//configuración

}

void userinterrupt()

{

//Manejador de interrupciones

 

}

void loop ()

{

//Programa principal

}

 

D.

Carmona - CurRo 2k11

14

  } void loop () { //Programa principal }   D. Carmona - CurRo 2k11 14
  } void loop () { //Programa principal }   D. Carmona - CurRo 2k11 14
  } void loop () { //Programa principal }   D. Carmona - CurRo 2k11 14
Programación en pinguino D. Carmona - CurRo 2k11 15
Programación en pinguino
D. Carmona - CurRo 2k11
15
Programación en pinguino D. Carmona - CurRo 2k11 15 Los pines de pingüino nombrados del 0

Los pines de pingüino nombrados del 0 al 17 son pines que pueden utilizarse como entradas o salida digitales.

Los pines 13 al 17 se pueden utilizar con entradas analógicas.

Para configurarlos pines como entrada o salida se utiliza la función pinModepinModepinModepinMode(). La configuración de los pines de E/S digital se hace normalmente en la función setupsetup().setupsetup

normalmente en la función s e t u p s e t u p ( )
normalmente en la función s e t u p s e t u p ( )

D. Carmona - CurRo 2k11

16

Configura un pin como entrada o salida SintaxisSintaxis:SintaxisSintaxis pinMode (pin , modo) pin : ◦

Configura un pin como entrada o salida SintaxisSintaxis:SintaxisSintaxis

pinMode (pin , modo)

pin:

Numero de pin de 0 a 17. (para el PIC18F2550)

modo:

Modo de funcionamiento:

INPUTINPUT:INPUTINPUT El pin funciona como entrada. OUTPUTOUTPUT:OUTPUTOUTPUT El pin funciona como salida.

Todos los pines por defecto se configuran como entradas.

salida. Todos los pines por defecto se configuran como entradas . D. Carmona - CurRo 2k11
D.
D.

Carmona - CurRo 2k11

17

salida. Todos los pines por defecto se configuran como entradas . D. Carmona - CurRo 2k11
salida. Todos los pines por defecto se configuran como entradas . D. Carmona - CurRo 2k11
salida. Todos los pines por defecto se configuran como entradas . D. Carmona - CurRo 2k11
D.
D.

Carmona - CurRo 2k11

18

  D. Carmona - CurRo 2k11 19   Para escribir en un pin se utiliza
  D. Carmona - CurRo 2k11 19   Para escribir en un pin se utiliza
  D. Carmona - CurRo 2k11 19   Para escribir en un pin se utiliza
  D. Carmona - CurRo 2k11 19   Para escribir en un pin se utiliza
 
D.
D.

Carmona - CurRo 2k11

19

 
 

Para escribir en un pin se utiliza la función digitalWrite(). SintaxisSintaxis:SintaxisSintaxis

 
 

digitalWrite(pin,valor)

Pin:

 

Pin que se quiere escribir.

Valor:

 

Nivel lógico que se quiere escribir en el pin

 

HIGHHIGHHIGHHIGH (alto, salida a la tensión de alimentación) LOWLOWLOWLOW (bajo, salida a masa).

Antes de poder escribir en un pin, debe configurarse como salida (OUTPUT) con pinMode.

 

D.

Carmona - CurRo 2k11

20

escribir en un pin, debe configurarse como salida (OUTPUT) con pinMode .   D. Carmona -
escribir en un pin, debe configurarse como salida (OUTPUT) con pinMode .   D. Carmona -
escribir en un pin, debe configurarse como salida (OUTPUT) con pinMode .   D. Carmona -
Para leer el estado de un pin se utiliza la función digitalRead(). SintaxisSintaxis:SintaxisSintaxis bool

Para leer el estado de un pin se utiliza la función digitalRead(). SintaxisSintaxis:SintaxisSintaxis

bool digitalRead(pin)

Pin:

Pin que se quiere leer.

Resultado:

Devuelve un valor booleano (0 ó 1) en función del nivel de tensión del pin.

Antes de leer el estado un pin, debe configurarse como entrada (INPUT) con pinMode.

Si leemos un pin de salida, se lee el valor del latch.

D. Carmona - CurRo 2k11 21
D.
D.

Carmona - CurRo 2k11

21

D. Carmona - CurRo 2k11 21 En los PIC 18F se utilizan tres registros para la

En los PIC 18F se utilizan tres registros para la configuración y uso de los puertos de E/S.

Registro PORTxPORTx:PORTxPORTx

Registro que contiene el estado lógico de los pines del puerto x.

Registro TRISxTRISx:TRISxTRISx

Registro que configura los pines del puerto x como entrada o salida.

Bit a 1 → pin de entrada. Bit a 0 → pin de salida.

Registro LATxLATx:LATxLATx

Registro utilizado en operaciones de lectura-modificación- escritura. Se recomienda su uso para escribir en el puerto.

de lectura-modificación- escritura. Se recomienda su uso para escribir en el puerto. D. Carmona - CurRo
D.
D.

Carmona - CurRo 2k11

22

Configurando el puerto en bloque: ◦ TRISA=0x00; ◦ TRISB=0xFF; ◦ TRISC=0xF0; Configuración pin a pin:

Configurando el puerto en bloque:

TRISA=0x00;

TRISB=0xFF;

TRISC=0xF0;

Configuración pin a pin:

TRISAbits.TRISA3=0; //pin3 del PORTA como salida.

TRISCbits.TRISC4=1; //pin4 del PORTC como entrada.

◦ TRISCbits.TRISC4=1; //pin4 del PORTC como entrada.   D. Carmona - CurRo 2k11 23  
◦ TRISCbits.TRISC4=1; //pin4 del PORTC como entrada.   D. Carmona - CurRo 2k11 23  
 
D.
D.

Carmona - CurRo 2k11

23

 
 

Escribiendo los 8 bits del puerto:

 

PORTA=0xA5;

//Escribe 10100101 //Escribe 10100101

LATA=0xA5;

El puerto debe configurarse como salida con TRISx.

Escribiendo bit a bit:

PORTBbits.RB2=1;

//Setea el pin2 del puerto B (RB2)

 

LATBbits.LATB2=1;

PORTCbits.RC0=0;

//Resetea el pin0 del puerto C (RC0)

 

LATCbits.LATC0=0;

 

D.

Carmona - CurRo 2k11

24

//Resetea el pin0 del puerto C (RC0)   ◦ LATCbits.LATC0=0;   D. Carmona - CurRo 2k11
//Resetea el pin0 del puerto C (RC0)   ◦ LATCbits.LATC0=0;   D. Carmona - CurRo 2k11
//Resetea el pin0 del puerto C (RC0)   ◦ LATCbits.LATC0=0;   D. Carmona - CurRo 2k11
Leyendo un puerto (8 bits): ◦ Valor = PORTC; //Lee los 8 pines del PORTC

Leyendo un puerto (8 bits):

Valor = PORTC;

//Lee los 8 pines del PORTC [RC0 RC7]

Leyendo un pin del puerto:

PORTBbits.RB1=PORTCbits.RC1;

//Escribe en RB1 el valor del pin RC1

D. Carmona - CurRo 2k11 25
D.
D.

Carmona - CurRo 2k11

25

D. Carmona - CurRo 2k11 25 Los pines del 13 al 17 de pinguino pueden usarse

Los pines del 13 al 17 de pinguino pueden usarse como entradas analógicas de 10 bit. Para leer el valor de las entradas analógicas se utiliza la función analogRead(). Sintaxis:

unsigned int analogRead(pin)

PinPin:PinPin pin a leer (entre 13 y 17).

ResultadoResultado:ResultadoResultado Devuelve un valor entre 0 y 1023 (10 bit) proporcional a la tensión en el pin indicado.

1023=5V

0=0V.

0=0V. D. Carmona - CurRo 2k11 26
D.
D.

Carmona - CurRo 2k11

26

NoNoNoNo eseseses necesarionecesarionecesarionecesario configurarconfigurarconfigurarconfigurar conconconcon
NoNoNoNo eseseses necesarionecesarionecesarionecesario configurarconfigurarconfigurarconfigurar conconconcon

NoNoNoNo eseseses necesarionecesarionecesarionecesario configurarconfigurarconfigurarconfigurar conconconcon pinModepinMode.pinModepinMode DebeDebeDebeDebe estarestarestarestar configuradoconfiguradoconfiguradoconfigurado comocomocomocomo entradaentradaentradaentrada (por(por(por(por defecto).defecto).defecto).defecto).

(por(por(por(por defecto).defecto).defecto).defecto). D. Carmona - CurRo 2k11 27   En
(por(por(por(por defecto).defecto).defecto).defecto). D. Carmona - CurRo 2k11 27   En
D.
D.

Carmona - CurRo 2k11

27

 
 

En pingüino podemos utilizar la función analogWriteanalogWrite,analogWriteanalogWrite para generar una señal PWM.

La precisión del PWM es de 10 bit.

 

La frecuencia es de 3Khz.

Solo se puede utilizar en los pines 11 y 12.

 

SintaxisSintaxis:SintaxisSintaxis

analogWrite(pin,ratio);

 

PinPin:PinPin

pin que se configura como PWM (solo 11 o 12)

 

RatioRatio:RatioRatio

valor entre 0 y 1023. El tiempo en alto del PWM es proporcional a este valor. P.Ej: 513 → PWM 50%

 
 

D.

Carmona - CurRo 2k11

28

en alto del PWM es proporcional a este valor. P.Ej: 513 → PWM 50%    
en alto del PWM es proporcional a este valor. P.Ej: 513 → PWM 50%    
en alto del PWM es proporcional a este valor. P.Ej: 513 → PWM 50%    
Programación en pinguino D. Carmona - CurRo 2k11 29
Programación en pinguino
D. Carmona - CurRo 2k11
29
Programación en pinguino D. Carmona - CurRo 2k11 29 La función d e l a y

La función delaydelay,delaydelay se utiliza para hacer una pausa en el programa.

Es un retardo software.

SintaxisSintaxis:SintaxisSintaxis

delay (unsigned int milisegundos);

FuncionamientoFuncionamiento:FuncionamientoFuncionamiento

La ejecución del programa queda pausada durante la cantidad de milisegundos indicada.

◦ La ejecución del programa queda pausada durante la cantidad de milisegundos indicada. D. Carmona -
◦ La ejecución del programa queda pausada durante la cantidad de milisegundos indicada. D. Carmona -

D. Carmona - CurRo 2k11

30

La función delayMicrosecondsdelayMicroseconds,delayMicrosecondsdelayMicroseconds se utiliza para hacer una pausa en el

La función delayMicrosecondsdelayMicroseconds,delayMicrosecondsdelayMicroseconds se utiliza para hacer una pausa en el programa.

Es un retardo software.

SintaxisSintaxis:SintaxisSintaxis

delayMicroseconds (unsigned microsegundos);

FuncionamientoFuncionamiento:FuncionamientoFuncionamiento

La ejecución del programa queda pausada durante la cantidad de microsegundos indicada.

queda pausada durante la cantidad de microsegundos indicada. D. Carmona - CurRo 2k11 31 Programación en
queda pausada durante la cantidad de microsegundos indicada. D. Carmona - CurRo 2k11 31 Programación en

D. Carmona - CurRo 2k11

31

Programación en pinguino D. Carmona - CurRo 2k11 32
Programación en pinguino
D. Carmona - CurRo 2k11
32
Desde la Beta 9 el IDE de pinguino se incluyen funciones para controlar servomotores .

Desde la Beta 9 el IDE de pinguino se incluyen funciones para controlar servomotores. Cualquier pin de I/O de pinguino puede utilizarse para controlar un servo.

Incluso todos los pines simultáneamente.

Las funciones de control de servos hacen uso del Timer1 del microcontrolador, por lo que si se usan las funciones no podrá usarse este temporizador.

si se usan las funciones no podrá usarse este temporizador. D. Carmona - CurRo 2k11 33
D.
D.

Carmona - CurRo 2k11

33

podrá usarse este temporizador. D. Carmona - CurRo 2k11 33 Para configurar un pin como driver

Para configurar un pin como driver para servos se utiliza la función servo.attach. Sintaxis:Sintaxis:Sintaxis:Sintaxis:

servo.attachservo.attachservo.attachservo.attach ((((PINPINPINPIN););););

PIN es un valor entre 0 y 17 que indica el nº de pin que se quiere usar para controlar un servo.

Tambien se puede utilizar una variable de tipo unsigned char con este fin.

Esta función se utiliza (normalmente) dentro de la función setupsetup.setupsetup

este fin. Esta función se utiliza (normalmente) dentro de la función setupsetup.setupsetup D. Carmona - CurRo
D.
D.

Carmona - CurRo 2k11

34

D. Carmona - CurRo 2k11 35 Una vez configurado el pin como driver de servos,
D. Carmona - CurRo 2k11 35 Una vez configurado el pin como driver de servos,
D. Carmona - CurRo 2k11 35 Una vez configurado el pin como driver de servos,
D.
D.

Carmona - CurRo 2k11

35

D. Carmona - CurRo 2k11 35 Una vez configurado el pin como driver de servos, segenera

Una vez configurado el pin como driver de servos, segenera automaticamente la señal de control del servo. Para poder volver a utilizar el pin como entrada o salida normal, se utiliza la fincion servo.detach. Sintaxis:Sintaxis:Sintaxis:Sintaxis:

servo.detachservo.detachservo.detachservo.detach ((((PINPINPINPIN););););

Ejemplo:Ejemplo:Ejemplo:Ejemplo:

D. Carmona - CurRo 2k11
D. Carmona - CurRo 2k11

36

Para controlar la posición del servo se utiliza la función servo.writeservo.writeservo.writeservo.write .

Para controlar la posición del servo se utiliza la función servo.writeservo.writeservo.writeservo.write. Sintaxis:Sintaxis:Sintaxis:Sintaxis:

servo.writeservo.writeservo.writeservo.write ((((PIN,PIN,PIN,PIN,posicionposicionposicionposicion););););

PINPINPINPIN es un valor entre 0 y 17 que indica el nº de pin que se quiere usar para controlar un servo.

posicionposicionposicionposicion es un valor entre 1 y 250 que indica la posición deseada en el servo:

1 posiciona el servo a la posición -90º90º90º90º

125 posiciona el servo a la posición 0º0º0º0º

250 posiciona el servo a la posición 90º90º90º90º

El valor es proporcional a la posición:

168 ->45º

El valor es proporcional a la posición: ◦ 168 ->45º Se pueden utilizar variables de tipo

Se pueden utilizar variables de tipo unsignedunsignedunsignedunsigned charcharcharchar con para indicar en la función el número de pin y la posición.

indicar en la función el número de pin y la posición. D. Carmona - CurRo 2k11
indicar en la función el número de pin y la posición. D. Carmona - CurRo 2k11
D.
D.

Carmona - CurRo 2k11

37

D. Carmona - CurRo 2k11 37     D. Carmona - CurRo 2k11 38
 
 
 

D.

Carmona - CurRo 2k11

38

el número de pin y la posición. D. Carmona - CurRo 2k11 37     D.
el número de pin y la posición. D. Carmona - CurRo 2k11 37     D.
el número de pin y la posición. D. Carmona - CurRo 2k11 37     D.
En el caso de servo modificados para giro continuo , la función servo.writeservo.writeservo.writeservo.write , permite

En el caso de servo modificados para giro continuo, la función servo.writeservo.writeservo.writeservo.write, permite el control de sentido se giro y velocidad. posicionposicionposicionposicion indica:

1 El servo gira en sentido anti-horario a máxima velocidad. XX mantiene en servo parado.

250 El servo gira en sentido horario a máxima velocidad.

250 El servo gira en sentido horario a máxima velocidad.   D. Carmona - CurRo 2k11
250 El servo gira en sentido horario a máxima velocidad.   D. Carmona - CurRo 2k11
 
D.
D.

Carmona - CurRo 2k11

39

 
 

El valor que detiene el servo varía de un motor a otro, y es necesario averiguar ese valor para cada servo.

Idealmente ese valor es 125, aunque puede variar hacia arriba o abajo.

En valores próximos al de paro del motor, la velocidad de giro es menor. La relación entre el valor posicionposicionposicionposicion y velocidad de giro no es lineal.

Normalmente el motor ya gira a velocidad máxima cuando la diferencia entre el valor posicionposicionposicionposicion y el valor que para el motor es mayor de 20 o 30.

D.

Carmona - CurRo 2k11

40

posicionposicionposicionposicion y el valor que para el motor es mayor de 20 o 30. D. Carmona
posicionposicionposicionposicion y el valor que para el motor es mayor de 20 o 30. D. Carmona
posicionposicionposicionposicion y el valor que para el motor es mayor de 20 o 30. D. Carmona
D. Carmona - CurRo 2k11 41 servo.readservo.readservo.readservo.read ((((PINPINPINPIN);););); Lee el valor de
D. Carmona - CurRo 2k11 41 servo.readservo.readservo.readservo.read ((((PINPINPINPIN);););); Lee el valor de
D.
Carmona - CurRo 2k11
41
servo.readservo.readservo.readservo.read ((((PINPINPINPIN););););
Lee el valor de posicionposicionposicionposicion del servo.
No lee la posición real, sino el ultimo valor que se ha
escrito.
servo.setMaximumPulseservo.setMaximumPulseservo.setMaximumPulseservo.setMaximumPulse(PINPINPINPIN);
Posiciona el servo a 90º
servo.setMinimumPulseservo.setMinimumPulseservo.setMinimumPulseservo.setMinimumPulse(PINPINPINPIN);
Posiciona el servo a -90º
D.
Carmona - CurRo 2k11
42
Pinguino Wiki ◦ http://pinguino.koocotte.org/index.php/Main_Page Pinguino tutorial ◦
Pinguino Wiki
◦ http://pinguino.koocotte.org/index.php/Main_Page
Pinguino tutorial
◦ http://sites.google.com/site/pinguinotutorial/
Web oficial del proyecto pinguino
◦ http://www.hackinglab.org/pinguino/
SDCC
◦ http://sdcc.sourceforge.net/
Control de servos:
◦ http://linuxdroids.wordpress.com/2010/07/29/pin
guino-rutina-para-controlar-18-servos/
D. Carmona - CurRo 2k11
43