Sie sind auf Seite 1von 40

Taller Prctico de Robtica

Educativa con Hardware y


Software Libre
Multiplataforma
Conocimiento al alcance de todos

Pensado para su aplicacin en el aula

Responsables:
Miguel Papadpulos
Sergio Arcinaga

Robtica Educativa con Pingino

A modo de Prlogo
Estimados estudiantes y docentes:
En esta cartilla hemos tratado de recopilar parte de la informacin
que se encuentra fundamentalmente en la web, a los efectos de
poner a disposicin del sistema educativo salteo, los conocimientos
necesarios para iniciarse en el fascinante mundo de la robtica.
El taller est pensado para desarrollar las capacidades de creatividad
y pensamiento lgico de nuestros estudiantes y docentes, para
mejorar las competencias comunicativas y de resolucin de
problemas, en forma colaborativa.
Toda la informacin ha sido extractada de sitios de personas que
comulgan con la filosofa del hardware y el software libre, es decir
de la libre circulacin del conocimiento y su intercambio. Es por ello
que les decimos a todos los que tengan acceso a este material y lo
consideren de utilidad, sintanse libres de modificarlo y distribuirlo.
Por ltimo agradecemos a todas las instituciones educativas que, a
partir de su participacin en el taller, nos hicieron llegar sus
sugerencias y correcciones.
Miguel y Sergio

2
Salta Argentina 2013

Robtica Educativa con Pingino

NDICE

::: Introduccin a la Plataforma "Pingino" .................................................................................................4


Plataformas de Hardware Libre: ..............................................................................................................4
::: Hardware Mnimo Inicial .........................................................................................................................5
Resultado Final del armado Fsico ...........................................................................................................5
Esquema lgico de la plataforma ............................................................................................................6
::: Software inicial ........................................................................................................................................6
Instalacin del Software Pingino en Windows 7 ...................................................................................7
::: Creacin y ejecucin de mi primer programa (Hola Mundo). .......................................................... 13
::: Inicio de tu primer proyecto ................................................................................................................. 18
1 Opcin de Solucin: Fuerza Bruta ................................................................................................. 19
2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta) ............................................ 20
3 Opcin de Solucin: Utilizacin de un vector................................................................................... 22
:::: Encender y Apagar un led utilizando un pulsador............................................................................... 23
:::: Armemos un semforo ........................................................................................................................ 24
:::: Combinando los ejemplos anteriores.................................................................................................. 25
:::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite............................................... 26
::: Calentando Motores! .......................................................................................................................... 29
:::: Pongamos Blanco sobre Negro o Negro sobre Blanco ........................................................................ 34
:::: Fuentes de informacin consultada .................................................................................................... 36
:::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE ..................................... 37
:::: Anexo II: Instalacin de los Drivers de Pingino en Windows 8.......................................................... 39

3
Salta Argentina 2013

Robtica Educativa con Pingino

::: Introduccin a la Plataforma "Pingino"


Pingino es una plataforma de hardware y software "open source" para la experimentacin con
microcontroladores, similar a Arduino pero basada en un microcontrolador PIC18F2550/4550 y cuenta con su
propio Entorno de Desarrollo Integrado (IDE) de uso y apariencia similar al de Arduino. A diferencia de la placa
Arduino, el Pingino no necesita una Interfaz UART a USB adicional para comunicarse con la PC, debido a que el
microcontrolador PIC18F2550/4550 tiene un mdulo USB integrado, lo cual le permite comunicarse
directamente con la PC y reduce el costo del hardware, dejando adems libre el puerto UART del
microcontrolador para las aplicaciones.

Plataformas de Hardware Libre:

Arduino1

Pingino2

El circuito bsico del Pingino es muy simple y slo se precisan unos pocos componentes; todo el software
necesario est disponible para bajarse de internet gratuitamente.

En este manual vamos a ver los siguientes aspectos:

Hardware mnimo inicial

Instalacin de los programas necesarios

Compilacin

Ejecucin de un primer programa.

1
2

http://www.arduino.cc/es/
http://www.pinguino.cc/
4
Salta Argentina 2013

Robtica Educativa con Pingino

::: Hardware Mnimo Inicial

Un Microcontrolador Pic 18F2550/4550

1 Pulsador

1 Cuarzo 20 MHz

5 Capacitores

o
o
o
o
2 Leds

o 1 rojo
o 1 verde
3 Resistencias

o 1 de 10 K Ohm
o 2 de 470 Ohm
Una Protoboard/Placa de prueba

Cables para conectar en la protoboard

1 capacitor cermico de 0.1 uf (N 104)


2 capacitores cermicos de 22 pf (N 22)
1 capacitor cermico de 220 nf (N 224)
1 capacitor electroltico de 10 uf

Resultado Final del armado Fsico

Pata larga

Resultado Final de la plataforma


Pingino.

Pata corta

Imagen desarrollada con un soft ware de licencia libre llamado Fritzing. Lo pods bajar
desde su pgina oficial: http://fritzing.org/

5
Salta Argentina 2013

Robtica Educativa con Pingino

Esquema lgico de la plataforma

Resultado Final de la
plataforma Lgico y
Fsico pingino.

Muy importante

Tener en cuenta que los Pines Lgicos estn numerados por fuera del PIC y son utilizados por el lenguaje
de programacin a la hora de programar al PIC18F2550 y las patitas fsicas estn numeradas en forma de
U por dentro del PIC y se utilizan para el armado del circuito.
Por ej. la patita 2 del micro corresponde al PIN 13/ANALGICO
Adems !!!
Para que el circuito funcione, el PIC18F2550/4550 debe tener grabado el cargador de arranque (bootloader) de
Pingino, el cual puede ser descargado de:
http://sites.google.com/site/pinguinotutorial/bootloader.
Se necesita un programador de microcontroladores Microchip como el Pickit 2, Pickit 3 u otro compatible para
grabar el bootloader en el PIC18F2550/4550.

::: Software inicial


Actualmente el software para Pingino est soportado oficialmente para los sistemas operativos:

Linux

Windows XP
6
Salta Argentina 2013

Robtica Educativa con Pingino

Windows 7

MACOSX

Debido a que el entorno de desarrollo integrado de Pingino, el cual permite escribir, compilar y
grabar los programas, est escrito en Python, es necesario instalar componentes Python para su
funcionamiento.
En el caso de Windows, la lista de componentes vara ligeramente segn sea el sistema operativo
(Windows XP o 7) en el cual querremos instalar, sin embargo todo esto est detallado en los tutoriales
oficiales del proyecto Pinguino.

Instalacin del Software Pingino en Windows 73


En el sitio:
https://sites.google.com/site/pinguinotutorial/installation/windows-7, se encuentra el procedimiento
para la instalacin del software en Windows 7. Como se encuentra en ingls, simplemente lo
tradujimos y desarrollamos a continuacin.
Primero es necesario instalar el driver libusb. El instalador lo puedes bajar de aqu
(http://www.hackinglab.org/pinguino/download/driver%20pinguino%20windows%207/setup.exe).
Este driver es compatible con 32 y 64 bits con mltiples arquitecturas ( X86,AMD64,IA64 ).
La instalacin de los drivers debe seguir este orden!!!
1. Setup

Actualmente tenemos desarrollado un sistema de instalacin desatendida de todo el software de Pingino.


7
Salta Argentina 2013

Robtica Educativa con Pingino

2. Una vez finalizada la instalacin del Pingino Driver conectamos la Placa Pingino en el puerto
USB de la PC. Es probable que el sistema al detectar un nuevo hardware nos muestre el Asistente
para instalarlo. Si esto sucede se debe

cancelar o cerrar dicha pantalla. A continuacin

verificamos a travs del administrador de dispositivos si Windows reconoci nuestra placa


Pingino haciendo:
a) Clic en el botn Iniciar

(Windows 7) o en el botn Inicio

(Windows XP),

luego clic con el botn derecho sobre Equipo (Windows 7) o en Mi PC (Windows XP)
En la opcin Propiedades del men Luego hacer clic en Administrador de dispositivos
ubicado en el panel de la izquierda (Windows 7)
contextual hacer clic

Las pantallas corresponden a Windows 7

Debe aparecer la siguiente pantalla:

8
Salta Argentina 2013

Robtica Educativa con Pingino

Vemos que el reconocimiento de la Placa Pingino debe ser curado para que Windows la
detecte adecuadamente.
3. Para ello ir a la carpeta libusb-win32-bin-1.2.6.0, luego abrir la carpeta bin y ejecutar el inf-wizard,

El asistente te gua en la instalacin haciendo clic en los botones

.Cuando llegues a la

siguiente pantalla selecciona la opcin Pingino Project y contina con el botn

Cuando llegues a la pantalla con el botn

hacer clic y esperar la finalizacin de la

instalacin

9
Salta Argentina 2013

Robtica Educativa con Pingino

Cuando este driver est instalado verifica en el Administrador de dispositivos (panel de


control/sistema/administrador de dispositivos). Se debe ver algo parecido a esto:

Ya instalamos los driver!!!


Luego debes instalar los siguientes programas:

Python 2.6.6 (http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi)

10
Salta Argentina 2013

Robtica Educativa con Pingino

wxpython

2.8

(http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-

2.8.11.0-py26.exe)

pyusb for python 2.6

(http://sourceforge.net/projects/pyusb/files/PyUSB%200.x/0.4.3/pyusb-0.4.3.win32py2.6.exe/download)

Muy Bien!!! ya instalamos todos los paquetes de Python.


11
Salta Argentina 2013

Robtica Educativa con Pingino

Descarga la ltima versin de Pingino:


(http://www.hackinglab.org/pinguino/download/latestpinguino/)
Por ltimo necesitamos instalar el software pingino, la versin X.2 o la X.34 haciendo clic en Siguiente > y
Finalizar

El ltimo programa que nos falta instalar es el Pingino Kit, para ello simplemente hacemos doble clic
sobre el cono del instalador y vamos aceptando los valores que por defecto nos propone el proceso
de instalacin, haciendo clic en Aceptar o en Siguiente-Next, segn sea el caso.

Ya instalamos todos los programas, es el momento de5:

4
5

En este Taller se trabaja con la versin X.2 por ser la ms estable en estos momentos.
Aqu tendramos que poner sonido de redoblantes!!!
12
Salta Argentina 2013

Robtica Educativa con Pingino

::: Creacin y ejecucin de mi primer programa (Hola Mundo).


En el primer ejemplo de programacin del microprocesador simplemente vamos a
prender y apagar un LED de manera intermitentemente.
Presentamos una gua paso a paso para no morir en el intento y asegurar el xito
de la tarea:

1.- Tenemos que tener en claro el objetivo:


Hacer que parpadee un LED de manera intermitente conectado a una de las patitas del micro.

2.- Los componentes necesarios son: 1 led

Tener en cuenta que la pata larga del LED tambin llamada nodo- va
hacia el microprocesador (en este caso al Pin 13 Analgico
correspondiente a la patita 2 del PIC).
Pata larga

3.- Montar el led en la protoboard:

Mueca del PIC

Pata larga

13
Salta Argentina 2013

Robtica Educativa con Pingino

4.- Arrancar Pingino Kit y arrastrar los bloques hasta que quede como la imagen de la columna de
la izquierda:
Desde Pingino Kit

Diagrama de Flujo
Inicio del Programa

Cdigo:
presionando F4 aparece el siguiente cdigo
(sin los comentarios en verde)
void setup() //Aqu se establece el
comportamiento de los pines
{
pinMode(13,OUTPUT); // Establecemos el

Pin Mode 13
Analogico - Output

Pin 13 como salida para el led


}
void loop() // Aqu se inicia un ciclo que

Enciende LED por 4


seg

repite

indefinidamente

lo

que

est

encerrado entre las dos llaves.


{ //llave de apertura
digitalWrite(13,HIGH); // El led se prende
Apaga LED por 1 seg

delay(4000); //durante 4 segundo.


digitalWrite(13,LOW); // El led se apaga
delay(1000); // durante 1 segundo.

Fin del Programa

} //llave de cierre

Al cdigo que aparece en una ventanita luego de presionar F4, lo seleccionamos y lo copiamos presionando
Ctrl C o haciendo clic con el botn derecho del mouse y eligiendo la opcin Copy del men contextual.

14
Salta Argentina 2013

Robtica Educativa con Pingino

5.- Minimizar el Pingino Kit y arrancar el Pingino IDE X.2

Hacer clic en
Archivo, luego clic
en Nuevo.
Presionar Ctrl V
para pegar el
cdigo.

Ahora hay que Compilar el cdigo con el botn "Compile" en la barra de herramientas (si apuntas los
conos con el mouse, se pueden ver las funciones de cada botn):

15
Salta Argentina 2013

Robtica Educativa con Pingino

1.- Botn para


compilar

Eurekas!!
!
Si todo ha ido bien debe aparecer en la ventana inferior Output (la que tiene fondo negro) compilation
done. Esto significa que el Pingino IDE ha podido compilar (traducir el cdigo a un lenguaje que pueda
ser entendido por el micro) con xito.

6.- Grabar el compilado en el Microprocesador

2.- Botn Upload to


Pingino para grabar el
programa compilado
en el micro.

Hacer clic en el botn "Upload to Pingino".


16
Salta Argentina 2013

Robtica Educativa con Pingino

Aparece la ventana "Vascobootloader". En este momento debes presionar el pulsador de la placa


Pingino montada en la protoboard, esperar tres segundos aproximadamente (cuenta hasta 3) y luego
haz clic en el botn "Write" para cargar el programa en la placa Pingino.
1.- Presionar el pulsador de Reset

2.- Esperar 3 segundos y hacer clic en el botn


Write

En la ventana de VascoBootloader aparece la leyenda6:


PIC found
NoName0.hex uploaded
Esto quiere decir que el PIC ha sido encontrado o reconocido y el programa previamente compilado
llamado NoName0.hex ha sido cargado con xito. Una vez cargado, el programa empieza a ejecutarse en la
placa Pingino y en este caso el LED empieza a parpadear7.
Probando, probando!!: el nmero "4000" en la instruccin "delay(4000);" representa el tiempo en milisegundos
que el LED permanece prendido (o sea 4 seg.). Cambia la cantidad a 200 u 800 para ver qu sucede. Lo mismo con
el delay(1000); que es el que define el tiempo que el LED est apagado. No te olvides del

; al final de c/lnea.

Nota: No te olvides que para grabar otro nuevo programa en la placa, debes apretar el botn reset, contar hasta
3 y recin pulsar el botn "Write" en la ventana "Vascobootloader", de otro modo el Pingino no es reconocido
por el software.

Si en vez de PIC found aparece la leyenda PIC not found!! no te asustes, es probable que te hayas apresurado o
demorado en presionar Write. Simplemente vuelve a presionar reset, cuenta hasta tres y haz clic en Write nuevamente.
7
Este es el momento de los fuegos artificiales !!!
17
Salta Argentina 2013

Robtica Educativa con Pingino

::: Inicio de tu primer proyecto


En esta primera actividad vamos a realizar una secuencia de leds que se enciendan y se apaguen
simulando un desplazamiento de luces rojas.
Para ello contaremos con la conexin de 5 leds agregados al circuito de Pingino.
La secuencia sera la siguiente:
Tiempo 1: Led encendido conectado a la salida 3 (En el Grafico Led N 1)
Tiempo 2: Led encendido conectado a la salida 4 (En el Grafico Led N 2)
Tiempo 3: Led encendido conectado a la salida 5 (En el Grafico Led N 3)
Tiempo 4: Led encendido conectado a la salida 6 (En el Grafico Led N 4)
Tiempo 5: Led encendido conectado a la salida 7 (En el Grafico Led N 5)
Manos a la obra!!!
El esquema de conexin ser el siguiente:

Esta actividad puede ser resuelta de diferentes maneras:

18
Salta Argentina 2013

Robtica Educativa con Pingino

1 Opcin de Solucin: Fuerza Bruta


Desde Pingino Kit

Diagrama de Flujo
Inicio del Programa

Cdigo
void setup() {
pinMode(3,OUTPUT);

Pin Mode 3 Analgico - Output

Pin Mode 4 Analgico - Output

pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);

Pin Mode 5 Analgico - Output

Pin Mode 6 Analgico - Output

Pin Mode 7 Analgico - Output

pinMode(7,OUTPUT);
}

void loop() {
digitalWrite(3,HIGH);

Enciende Led 3 por 1 Seg


Apaga Led 3 por 1 Seg

delay(1000);
digitalWrite(3,LOW);
delay(1000);

Enciende Led 4 por 1 Seg


Apaga Led 4 por 1 Seg

digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);

Enciende Led 5 por 1 Seg


Apaga Led 5 por 1 Seg

delay(1000);
digitalWrite(5,HIGH);
delay(1000);

Enciende Led 6 por 1 Seg


Apaga Led 6 por 1 Seg

digitalWrite(5,LOW);
delay(1000);
digitalWrite(6,HIGH);

Enciende Led 7 por 1 Seg


Apaga Led 7 por 1 Seg

delay(1000);
digitalWrite(6,LOW);
delay(1000);

Fin del Programa

digitalWrite(7,HIGH);
delay(1000);
digitalWrite(7,LOW);
delay(1000);
}

19
Salta Argentina 2013

Robtica Educativa con Pingino

2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta)


Qu es un ciclo for?
Este tipo de ciclos es uno de los ms usados para repetir una secuencia de instrucciones, sobre todo cuando se
conoce la cantidad exactas de veces que se requiere ejecutar un tipo de instrucciones.
Su formato es:

for (valores de entrada ; condicin de terminacin ; iteracin por ciclo)

Las tres partes del ciclo se encuentran separadas por ; (punto y coma)

La primer parte del ciclo especifica valores previos a su inicio.

La segunda parte indica la condicin de terminacin para el ciclo, la cual est directamente relacionada
con los valores iniciales.

Finalmente, la ltima parte especifica cmo sern incrementados los valores iniciales en cada iteracin
o repeticin del ciclo: de uno en uno, de dos en dos, etc.
Desde Pingino Kit

Diagrama de Flujo

Cdigo
int tiempo=2000; // Inicializamos

Inicio del Programa

la variables tiempo en 2 seg.

Inicializamos variables
I = 0 utilizado en ciclo For

int i=0; // y la variable i que ser

Tiempo = 2000, 2 Seg

utilizada en el ciclo for.


void setup() {

i3

i<8

//Inicializamos

i i + 1
Si

las

salidas

analgicas utilizando un ciclo for

No

for(i=3;i<8;i++){
pinMode(i,OUTPUT);

Pin (i, Output)

}
i3

}
i<8

void loop() {

i i + 1

for(i=3;i<8;i++){
Si
No

Enciende Led (i) por (Tiempo) Seg

Apaga Led (i) por (Tiempo) Seg

digitalWrite(i,HIGH);
delay(tiempo);
digitalWrite(i,LOW);
delay(tiempo);

Fin del Programa

}
}
20

Salta Argentina 2013

Robtica Educativa con Pingino

Analicemos con detenimiento lo que hace el ciclo for y el comando digitalWrite que est en su interior:
for (i=3;i<8;i++){
digitalWrite(i,HIGH);
}

1.- La primera vez que se ejecute esta instruccin la variable i es igual a 3 por lo tanto digitalWrite ser:
digitalWrite(3,HIGH) se prende el led conectado al Pin 3 (correspondiente a la patita 24)
2.- La segunda vez que se ejecute esta instruccin i=4 por lo tanto digitalWrite ser:
digitalWrite(4,HIGH) se prende el led conectado al Pin 4 (correspondiente a la patita 25)
3.- La tercera vez que se ejecute esta instruccin i=5 por lo tanto digitalWrite ser:
digitalWrite(5,HIGH) se prende el led conectado al Pin 5 (correspondiente a la patita 26)
4.- La cuarta vez que se ejecute esta instruccin i=6 por lo tanto digitalWrite ser:
digitalWrite(6,HIGH) se prende el led conectado al Pin 6 (correspondiente a la patita 27)
5.- La quinta vez que se ejecute esta instruccin i=7 por lo tanto digitalWrite ser:
digitalWrite(7,HIGH) se prende el led conectado al Pin 7 (correspondiente a la patita 28)
La sexta vez que se ejecute el ciclo for la variable i ser igual a 8 por lo tanto la condicin i<8 no se cumplir.
Esto hace que se termine el ciclo for y por consiguiente la secuencia de encendido y apagado de los leds.
Y si quisiera que la secuencia de encendido y apagado continuara indefinidamente (para que finalice debera
desenchufar la placa Pingino del puerto USB de la PC), qu debera hacer?
Simplemente agregar i=3; (sin las comillas) despus de la llave de cierre del ciclo for. Te animas a
comprobarlo?
Muy bien!! completamos nuestra actividad utilizando ciclos FOR, ahora te proponemos la siguiente actividad:

1 - Encontrar una alternativa para modificar la secuencia de encendido y apagado de los leds. Que en vez de
iniciar la secuencia desde el led 1 se inicie desde el led 5, de la siguiente manera:

Secuencia Anterior

Nueva Secuencia propuesta

Tiempo 1

Prenda el LED 1

Prender el LED 5

Tiempo 2

Prenda el LED 2

Prender el LED 4

Tiempo 3

Prenda el LED 3

Prender el LED 3

Tiempo 4

Prenda el LED 4

Prender el LED 2

Tiempo 5

Prenda el LED 5

Prender el LED 1
21
Salta Argentina 2013

Robtica Educativa con Pingino

3 Opcin de Solucin: Utilizacin de un vector.


Qu es un vector en informtica?
Un array o vector es una coleccin ordenada de elementos de un mismo tipo de datos, agrupados de forma
consecutiva en memoria. Cada elemento del array o vector tiene asociado un ndice o direccin, que no es ms
que un nmero natural que lo identifica inequvocamente y nos permite acceder a l. Por ej. el vector a puede
ser representado como una cajonera cuyo contenido son valores numricos (3,4,5,6,7):

3 Este cajn contiene el valor numrico 3. El ndice del 1 cajn es cero. Se representa: a[0]=3
4 Este cajn contiene un 4 y su ndice es 1. Se representa como: a[1]=4
5 Este cajn contiene un 5 y su ndice es 2. Se representa como: a[2]=5
6 Este cajn contiene un 6 y su ndice es 3. Se representa como: a[3]=6
7

El ltimo cajn

contiene el valor numrico 7 y su ndice es 4: a[4]=7

Es decir que se identifica el vector con un nombre (puede ser una letra o una palabra) luego se encierra entre
corchetes el ndice -que es la posicin que ocupa el dato dentro del vector- teniendo en cuenta que la primera
posicin es el ndice cero- luego se coloca el signo igual y a continuacin su valor: nombre vector[ndice]=valor

Cdigo a ser escrito en el Pingino IDE X.2


En primer lugar definimos el vector llamado leds con 5 cajoncitos ({3,4,5,6,7}) cuyos contenido sern nmeros
enteros (int). La 1 posicin o ndice [0] tendr el valor 3 y la ltima posicin o ndice [4] tendr el valor 7:
int leds[]={3,4,5,6,7}; // Se define un vector llamado leds que contiene los valores enteros (int) 3,4,5,6 y 7
int tiempo=200;
int n=0;
int contador=0;
void setup() {
for (n=0;n<5;n++){
pinMode(leds[n],OUTPUT); //Inicializamos las salidas analgicas utilizando un ciclo for
}
}

22
Salta Argentina 2013

Robtica Educativa con Pingino

void loop() {
for(n=0;n<5;n++){
digitalWrite(leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}
Muy bien!! Completamos nuestra actividad utilizando un vector, ahora te proponemos la siguiente actividad:

Cambiar el cdigo del programa para obtener la siguiente secuencia de encendido y apagado de los leds: led 7
led 3 led 6 led 2 led 4.
Una vez resuelta la anterior secuencia puedes realizar otras secuencias utilizando otro patrn de encendido y
apagado de los leds. Juega un poco con distintas alternativas y saca tus propias conclusiones.

:::: Encender y Apagar un led utilizando un pulsador

Materiales
1 resistencia de 10 k
1 Pulsador
1 led
Pulsador

Cuando el pulsador no est


pulsado el pin 13 est en
estado alto/HIGH
Cuando el pulsador est
pulsado el pin 13 est en
estado bajo/LOW
23
Salta Argentina 2013

Robtica Educativa con Pingino

En el esquemtico se observa las conexiones necesarias para poner en prctica el siguiente ejemplo de cdigo:
void setup()
{
pinMode(7,OUTPUT);
pinMode(13,INPUT);
}
void loop()
{
if(digitalRead(13)== LOW) //Si el Pin 13 es LOW, el pulsador est presionado.
{
toggle(7); //El Pin 7 cambia de estado: si est LOW pasa a HIGH y viceversa
while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador.
delay(250);
}
}

En esta secuencia de cdigo definimos por primera vez una patita del micro como entrada (INPUT), tambin
vemos como se lee dicha entrada o sea, cuando se presiona el pulsador (con el comando digitalRead). El
comando toggle nos permite prender si est apagado o apagar si est prendido el led conectado al Pin 7
(definido como de salida/OUTPUT). Por ltimo con el comando while (que significa: mientras) evitamos los
efectos de rebote que pueda tener el pulsador ya que nicamente deja que el void loop se repita si es que el
pulsador efectivamente est presionado.

:::: Armemos un semforo


Materiales: 3 leds de color

Circuito: conectar las patitas largas (nodo) de

Cdigo: debes completar

rojo, amarillo y verde

los leds en los pines: 7(V), 6(A) y 5 (R) del micro.

el cdigo con los valores


correctos

int i=5;
int tiempo=?;
void setup() {
for(i=?;i<?;i++){
pinMode(i,OUTPUT);
}
}
void loop() {
for(i=?;i<?;i++){
digitalWrite(i,HIGH);
delay(tiempo);
digitalWrite(i,LOW);
delay(tiempo);
}
}

24
Salta Argentina 2013

Robtica Educativa con Pingino

:::: Combinando los ejemplos anteriores


Te proponemos combinar el ejemplo del uso de un pulsador con el encendido del semforo en un solo
proyecto.
Si te animas, puedes armar un semforo como el de
la imagen, dentro de un tubito de estao vaco. La
base est hecha con un pedazo de una disquetera
vieja y un poco de poxilina. Los agujeros para los leds
fueron hechos con el mismo soldador (ojo con
quemarse).

Una ayudita con el cdigo (una mezcla de los dos ejemplos anteriores):
int i=5;
int tiempo=?;
void setup()
{
pinMode(13,INPUT);
for(i=?;i<?;i++){
pinMode(i,OUTPUT);
}
}
void loop()
{
if(digitalRead(13)== LOW) //Si el Pin 13 es LOW, el pulsador est presionado.
{
for(i=?;i<?;i++){
digitalWrite(i,HIGH);
delay(tiempo);
25
Salta Argentina 2013

Robtica Educativa con Pingino

digitalWrite(i,LOW);
delay(tiempo);
}
while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador.
delay(250);
}
}

:::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite


A continuacin vamos a transcribir de la excelente pgina de Henry Laredo un tutorial referido al uso de estas
dos instrucciones:
Este tutorial trata sobre dos instrucciones magnficas del Pingino que son: analogRead y analogWrite.
Mediante el analogRead es posible implementar lecturas de voltajes analgicos, es decir leer niveles de tensin
que varen entre 0V y 5V. Con el analogWrite conseguiremos tener una salida de PWM8 cuyo duty cycle es
variable pero de frecuencia fija.
Vamos a explicar un poco cmo trabaja analogWrite. En el siguiente grfico vemos que el ancho del pulso o
Duty Cycle (la meseta) puede variar de tamao. A medida que es ms ancho vemos que la tensin media Vm
(representada por lnea de puntos) aumenta y se acerca al valor mximo de tensin Vp de 5 voltios en nuestro
caso. Esto hace que la seal que sale por la patita del PIC vare segn se aumente o disminuya dicho ancho
(Duty Cycle).

Ntese que el tiempo entre el inicio de una seal y otra es constante y se llamada PERODO (la distancia en
tiempo entre una meseta y otra).
8

La modulacin por ancho de pulsos (tambin conocida como PWM, siglas en ingls de pulse-width modulation)
de una seal o fuente de energa es una tcnica en la que se modifica el ciclo til de una seal (el que tiene forma de
meseta), ya sea modificando el ancho del pulso o duty cycle (modulacin de ancho de pulso) o el tiempo entre pulso y
pulso (modulacin por frecuencia de pulso).
26
Salta Argentina 2013

Robtica Educativa con Pingino

Esto significa que la frecuencia (nmero de ciclos tiles por unidad de tiempo) siempre es la misma. Por
ejemplo, si tenemos durante un segundo la seal a 5 voltios y durante otro segundo a 0 voltios, el nivel medio
en 2 segundos habr sido de 2.5 V exactos. Si utilizamos una seal, por ejemplo, que est al 40% del nivel alto
(5 vol), tendremos un nivel medio de 2.0V (0.40V*5). En definitiva esto har que si tenemos un led conectado
al pin de salida del PIC- la intensidad de su luz aumente o disminuya.
La instruccin anlogWrite hace esto a travs de los dos valores que deben definirse separados por una coma y
encerrados entre parntesis:
analogWrite(pin PWM, DutyCycle)
Recordar que el PIC tiene las patitas 12 y 13 como pines PWM (las patitas 12 y 13 corresponden a los pines 11 y
12 respectivamente, ver esquemtico de la pgina 6) y los valores de Duty Cycle pueden variar entre 0 y 1023
(0= sin seal y 1023=mximo valor de la seal).
En la siguiente tabla se ejemplifican algunos valores:
Instruccin

Duty Cycle

Pin de salida
PWM

% de la seal

Valor de la
seal de salida

analogWrite(11, 64)

256

11

25% de 5 vol.

1.25 vol.

analogWrite(11, 127)

512

11

50% de 5 vol.

2.5 vol.

analogWrite(11, 191)

768

11

75% de 5 vol.

3.75 vol.

Los efectos de ambas instrucciones las veremos en el siguiente circuito de aplicacin:


Materiales:
Un potencimetro de ms de
47 k Ohm.
Un led
Conexin:
Del potencimetro: ubicado con el
cabo regulador hacia arriba
El conector de la izquierda se
conecta a 5 vol.
El conector del medio al pin 13
de Pingino
El conector derecho a tierra o
negativo
Del Led:
La patita larga al pin 11 del PIC
La patita corta a tierra o
negativo
27
Salta Argentina 2013

Robtica Educativa con Pingino

El siguiente cdigo lee el valor que el potencimetro introduce por el pin 13 del PIC, para utilizar dicho valor en
el tiempo de encendido y apagado de un led conectado al pin 11. Ntese que si el pin 13 es usado como de
ingreso de datos analgicos no necesita ser definido en el void setup. El resultado es un led que modifica su
velocidad de parpadeo segn se modifiquen los valores introducidos a travs del giro del cabo del
potencimetro.
#define LED 11
#define POT 13
int val = 0;

// Al pin 11 lo llamamos LED


// Al pin 13 lo llamamos POT

void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
val = analogRead(POT);
digitalWrite(LED, HIGH);
delay(val);
digitalWrite(LED, LOW);
delay(val);
}

El siguiente cdigo permite cambiar la intensidad de la luz emitida por un diodo Led conectado al pin 11
(recordemos que es un pin de salida PWM) segn se vare la seal de entrada por el pin 13 a travs del giro del
cabo del potencimetro. Ntese que en el void setup no se define nada ya que las entradas (INPUT) como las
salidas (OUTPUT) analgicas no necesitan definirse.
#define LED 11
#define LDR 13
int valu = 0;
void setup()
{
}
void loop()
{
valu = analogRead(LDR);
valu = valu/4;//Se divide por 4 el valor entregado por el potencimetro para que no sea tan alto
analogWrite(LED, valu);
delay(10);
}

28
Salta Argentina 2013

Robtica Educativa con Pingino

::: Calentando Motores!


En esta seccin vamos a incursionar en el mundo de los motorcitos de corriente continua de 5 vol. Te
vamos a mostrar dnde los puedes conseguir y la forma de conectarlo a la placa Pingino.
En Busca De Los Motores: Los motorcitos de cc o dc (corriente continua - los que andan si los
conectamos con una pila) se los pueden extraer de una lectora de CD/DVD en desuso. Como una imagen vale
ms que mil palabras, veamos la secuencia de imgenes para poder extraerlos:

29
Salta Argentina 2013

Robtica Educativa con Pingino

10

11

12

13

14

15

16

17

30
Salta Argentina 2013

Robtica Educativa con Pingino

Conectando el motor a Pingino: no se puede conectar los dos cables del motorcito directamente a la
placa Pingino ya que es necesario proteger la placa contra posibles picos de corriente inversa cuando se activa
o desactiva el motor9. Para poder proteger la placa vamos a conectar el motor a un chip llamado L293D

El L293D no solo nos permite proteger el circuito sino tambin controlar el sentido del giro del motor y tambin
combinado con las salidas PWM del Pingino- la variacin de su velocidad.
El circuito de conexin es el siguiente:

Pin PWM de Pingino


Pin digital de Pingino (13)

Pin digital de Pingino (14)

Como se ve en el esquemtico anterior se pueden conectar dos motorcitos, copiando en el lado derecho las
conexiones detalladas en el lado izquierdo.
Para que te resulte ms fcil su conexin presentamos las imgenes -desarrolladas en Fritzing- del cableado
desde Pingino al L293D y al motor:

Cuando un motor contina girando (debido a la inercia) despus de ser apagado se convierte en un generador
de corriente. Esta corriente generada por el motor puede daar la placa electrnica, al retornar a la placa Pingino.
31
Salta Argentina 2013

Robtica Educativa con Pingino

Referencia:
Cable marrn => del pin 11 del Pingino al pin 1 del L293D
Cable gris

=> del pin 13 del Pingino al pin 2 del L293D

Cable naranja => del pin 14 del Pingino al pin 7 del L293D
Cable verde => del pin 3 del L293D al motorcito
Cable amarillo => del pin 6 del L293D al motorcito

L293D

Cdigo para Pingino:


void setup(){
pinMode(13,OUTPUT);
pinMode(14,OUTPUT);
digitalWrite(13,LOW);
digitalWrite(14,LOW);
}
void loop(){
//giro en un sentido
digitalWrite(13,HIGH);
digitalWrite(14,LOW);
delay(2000);
//giro en el otro sentido
digitalWrite(13,LOW);
digitalWrite(14,HIGH);
delay(2000);
//para parar el giro motor
digitalWrite(13,LOW);
digitalWrite(14,LOW);
delay(2000);
}
32
Salta Argentina 2013

Robtica Educativa con Pingino

Explicacin del cdigo:


En primer lugar definimos a los pines 13 y 14 como pines de salida y lo ponemos en cero. Para manejar el
sentido de giro y la parada del motor debemos tener en cuenta la siguiente tabla:

Pin 13

Pin 14

Motor

LOW

LOW

PARADA

HIGH

LOW

GIRO EN UN SENTIDO

LOW

HIGH

GIRO EN OTRO SENTIDO

Para manejar adems la velocidad de giro debemos manejar los valores del pin PWM; a tal efecto presentamos
un ejemplo de cdigo:
#define motor 11 // Recordar que los nicos pines PWM son el 11 y el 12
void setup()
{
//Recordar que los pines analgicos no necesitan ser definidos
}
void loop(){
unsigned int a;
for (a=0;a<1023;a++) {
analogWrite(motor,a);
delay(1);
}
for (a=1023;a>0;a--) {
analogWrite(motor,a);
delay(100);
}
}

Explicacin del Cdigo:


Definimos al pin 11 con el nombre motor, y luego variamos de 0 a 1023 los parmetros de la instruccin
analogWrite a travs de un ciclo for. El motor debe empezar a aumentar su velocidad de giro hasta alcanzar el
valor mximo. All se espera 1 milisegundos (casi nada) y se comienza a decrementar la velocidad de giro (de
1023 a 0). Este ciclo se repite indefinidamente hasta que desconectemos Pingino del puerto USB.
Vamos por ms!!!
Te proponemos combinar los dos cdigos a los efectos de poder hacer que el motor vare la velocidad y el
sentido de giro. Esto puede complementarse con el uso de pulsadores que segn se presionen tengamos
distintas velocidades y distinto sentido de giro.

33
Salta Argentina 2013

Robtica Educativa con Pingino

:::: Pongamos Blanco sobre Negro o Negro sobre Blanco


Es posible hacer que Pingino distinga entre una superficie clara/blanca (capaz de refractar la luz) y una
superficie obscura/negra (incapaz de refractar la luz). Para ello tenemos que echar mano a un componente
llamado foto diodo emisor/receptor; el sensor CNY70 que es uno de los sensores ms empleados dada su
economa y sus variadas aplicaciones prcticas.
Habitualmente se lo usa si se desea que un robot mvil siga un camino marcado por una raya en el suelo; el
CNY70 enviar al microcontrolador la informacin necesaria para que sepa si est desplazandose sobre la raya
o no. El tratamiento de dicha informacin por Pingino originar los comandos adecuados hacia las ruedas
motrices para continuar sobre la raya que hace de gua.
A continuacin se presenta cmo funciona el CNY7010 y el circuito para conectarlo a Pingino:

Diodo IR Fototransistor
A: nodo
E: Emisor
K: Ctodo C: Colector

10

Cuando la luz del emisor infrarrojo impacta sobre la base del fototransistor se conduce una corriente entre el Colector y el Emisor que produce la
seal de salida. La salida de este circuito es analgica y viene determinada por la cantidad de luz reflejada.

34
Salta Argentina 2013

Robtica Educativa con Pingino

Conectamos un led al pin 7 de Pingino y el cable blanco que sale del circuito del CNY70 lo conectamos al pin
13 de Pingino, tal como lo muestra el esquema:

Una vez que se tiene todo conectado procedemos a grabar en el Pingino el cdigo para probar la
deteccin de superficies claras y obscuras. Para ello cargamos el IDE de Pingino X2 y copiamos el siguiente
cdigo:
#define ledR 7
#define CNY70 13
int rojo=0;
void setup(){
pinMode(ledR,OUTPUT);
digitalWrite(ledR,LOW);
}
void loop() {
rojo = (5.0 * analogRead(CNY70) ) / 1024;
if (rojo < 1) {
digitalWrite(ledR,LOW);
}
if (rojo > 2.0) {
digitalWrite(ledR,HIGH);
}
delay(1000);
}

Como vemos el cdigo es muy sencillo y lo que hace es:


1. Bautizar (definir) al pin 7 con el nombre ledR, ya que en dicho pin vamos a conectar la patita larga del
led rojo. Al pin 13 con el nombre de CNY70 ya que en ese pin vamos a leer la informacin que mande el
circuito del CNY70 (por el cablecito blanco). Inicializar una variable llamada rojo con el valor cero.
2. En el void setup definimos al pin 7 (ledR) como salida y lo pone en estado bajo (el led apagado).
Recordar que los pines analgicos no hace falta definirlos como entrada o salida.
3. En el void loop tenemos una frmula que dice lo siguiente: al valor ledo del CNY70 transformarlo en un
valor que represente un porcentaje en relacin a los 5 vol (que es el 100%) y 1024 (que representa el
mximo valor de la seal que se lee en el pin analgico). Este valor se almacena en la variable rojo.
35
Salta Argentina 2013

Robtica Educativa con Pingino

4.
5.

Luego se pregunta si rojo es menor que 1, esto quiere decir si sobre el CNY70 hay una superficie
blanca, el led rojo permanece apagado o se apaga si estaba encendido.
Si rojo es mayor a 2 quiere decir que sobre el CNY70 hay una superficie rojo y el led rojo ser
encendido si estaba apagado o continuar prendido si ya lo estaba.

De esta manera le hemos enseado a Pingino a distinguir entre superficies blancas y superficies negras.

:::: Fuentes de informacin consultada

Henry Laredo, http://microembebidos.wordpress.com


Ral Alvarez Torrico, http://www.tecbolivia.com
Sitio oficial, http://www.pinguino.cc/
Yeison Cardona, http://yeisoneng2.blogspot.com.ar
http://www.crya.com.mx/manuales/atcryabot1.pdf
Ingenio Slido S.A.S., http://www.ingeniosolido.com/blog/
De la Cruz, Julio, http://micropinguino.blogspot.com.ar/

36
Salta Argentina 2013

Robtica Educativa con Pingino

:::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE

37
Salta Argentina 2013

Robtica Educativa con Pingino

38
Salta Argentina 2013

Robtica Educativa con Pingino

:::: Anexo II: Instalacin de los Drivers de Pingino en Windows 811


Pasos
1. Descargar el controlador de Pingino de este enlace:
https://sites.google.com/site/camachomedia/home/archivos/controlador%20pinguino.zip?attredirects=0&d=1

2. Presionar la tecla que tiene el smbolo de windows y 'R' de forma simultnea.


3. Copiar en en el cuadro de texto de la ventana de ejecutar el comando entre comillas "shutdown.exe /r
/o /f /t 00" y a continuacin pulsa"Aceptar".

4.

Selecciona la opcin "Solucionar Problemas"

5.

Selecciona "Opciones Avanzadas"

6.

Selecciona "Configuracin de Inicio" y pulsa "Reiniciar".

11

Tutorial extrado de la pgina http://micropinguino.blogspot.com.ar/


39
Salta Argentina 2013

Robtica Educativa con Pingino

7. Una vez se reinicie el sistema aparecer un men donde se pueden elegir diferentes opciones como:
Habilitar Depuracin, Habilitar el registro de arranque, Habilitar modo seguro, etc. Hay que elegir la opcin
7 "Deshabilitar el uso obligatorio de controladores firmados".

8.
9.

Conectar la tarjeta pingino y ejecutar el asistente de instalacin del controlador de pingino.


Verificar que est instalando en dispositivos e impresoras.

40
Salta Argentina 2013

Das könnte Ihnen auch gefallen