14
www.tdrobotica.co 1 Introducción El playShield es un escudo para PlayBoard/Arduino que hace que las conexiones y el desarrollo de tus proyectos sean mucho más fáciles. Es totalmente diseñado y construido por el equipo de tdrobotica en Colombia. Su programación está basada en Arduino IDE ó Wiring.ORG, Lenguaje de programación Processing, C ó C++ y es también compatible con Scratch S4A. Está guía práctica contiene la información de conexiones y programación. Materiales requeridos Arduino UNO playShield+ Cable USB tipo B Computador con Arduino y S4A instalado.

Guia de usuario playshield

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Guia de usuario playshield

www.tdrobotica.co 1

Introducción

El playShield es un escudo para PlayBoard/Arduino que hace que las conexiones y el

desarrollo de tus proyectos sean mucho más fáciles. Es totalmente diseñado y construido

por el equipo de tdrobotica en Colombia.

Su programación está basada en Arduino IDE ó Wiring.ORG, Lenguaje de programación

Processing, C ó C++ y es también compatible con Scratch S4A.

Está guía práctica contiene la información de conexiones y programación.

Materiales requeridos

• Arduino UNO

• playShield+

• Cable USB tipo B

• Computador con Arduino y S4A instalado.

Page 2: Guia de usuario playshield

www.tdrobotica.co 2

Introducción al playShield

El playShield está diseñado para facilitar las conexiones típicas que hacemos en un

montaje básico, es ideal para instituciones educativas de primaria y bachillerato, también

es útil para los que están arrancando en el mundo de la electrónica. Te invitamos para que

veas el siguiente link https://youtu.be/N7UxiKHxbJM donde apreciaras las ventajas de

trabajar con el playShield.

Te damos la bienvenida en esta nueva experiencia.

Reconocimiento y conexiones eléctricas

Las entradas y salida están configuradas como se muestran a continuación. Si vas a

conectar algún sensor o actuador debes tenerla en cuenta para su correcto

funcionamiento.

1. PIN 2. 5V 3. GND

1. PIN 2. 5V 3. GND

Page 3: Guia de usuario playshield

www.tdrobotica.co 3

Partes del playShield

Si deseas conocer más sobre las partes electrónicas de las que se compone el playShield

visita: http://tdrobotica.co/tdrobotica-educacion/343.html (Ver parte documentación)

El playShield tiene entradas y salidas de 2 tipos, análogas y digitales.

Las entradas análogas dan valores de 0 a 1023, si son salidas análogas (llamadas también

PWM) aceptan valores de 0 a 255.

Las entradas y salidas digitales reciben como señal 0 ó 1, siendo 0 igual a 0V y 1 igual a 5V.

El playShield también es compatible con S4A. Cuando descargamos el S4A original

http://s4a.cat/index_es.html junto con su firmware podríamos utilizar los recursos que

con el bien por defecto, sin embargo estos limitan algunas E/S de la playshield.

Pensando en utilizar todas la E/S de la playshield cuando estas en S4A, el equipo de

tdrobotica configuró el S4A y su firmware para lograrlo, sin embargo si están en el entorno

Arduino puedes utilizar y configurar todas las E/S según tu necesidad. En la siguiente

sección explicaremos como hacer este procedimiento.

Botones

Potenciómetro

Temperatura

LED’s

Pines

Fotocelda

Pines

Salida Motor

Page 4: Guia de usuario playshield

www.tdrobotica.co 4

Para más claridad vamos a hacer una tabla con las características de cada PIN del

playShield Vs su utilización en S4A. Recuerda que Arduino puedes configurar E/S como

entradas y salidas.

PIN (R2) CONEXIÓN E/S TIPO S4A

D2 Botón1 Entrada Digital Botón – Play Shield

D3 Botón2 Entrada Digital Botón – Play Shield

D4 Pines E/S Digital Salida Digital

D5 Pines E/S PWM Salida PWM-Análoga

D6 Pines Motor Salida PWM Motor

D7 Pines E/S Digital Salida Digital

D8 Pines E/S Digital Salida Digital

D9 Pines E/S PWM Servomotor

D10 LED Verde Salida Digital LED

D11 LED Amarillo Salida Digital LED

D12 Pines E/S Digital Salida Digital

D13 LED Rojo Salida Digital LED

A0 Potenciómetro Entrada Análoga Potenciómetro

A1 Fotocelda Entrada Análoga Fotocelda

A2 temperatura Entrada Análoga Sensor temperatura

A3 Pines Entrada Análoga Entrada Análoga

A4 Pines Entrada Análoga Entrada Análoga

A5 Pines Entrada Análoga Entrada Análoga

Ahora que conocemos las partes y conexiones vamos a empezar con las prácticas

Programación en scratch S4A

Para usar la programación en scratch debes descargar e instalar el S4A y cargar el firmware

desde el entorno de arduino. Como lo mencionamos anteriormente para que puedas

utilizar todos los recursos es necesario que instales el S4A, le remplaces el archivo

S4A.image y le cargues el firmware editado por tdrobotica. Estos dos archivos los

encuentras en http://tdrobotica.co/tdrobotica-educacion/343.html (Ver parte

documentación)

Te invitamos para que visites el siguiente tutorial y logres de manera exitosa la

configuración del S4A.

http://aprender.tdrobotica.co/tutoriales/

Nota: En la web de tdrobotica.co encontraras los archivos los archivos de S4A.imagen,

firmaware e información técnica de la tarjeta como el datasheet y el esquemático.

Page 5: Guia de usuario playshield

www.tdrobotica.co 5

Programas y montajes

Para cada uno de los siguientes tutoriales encontrarás el montaje electrónico, el programa

de demostración en S4A y también el programa en Arduino. A continuación te mostramos

la estructura general de cada tutorial con el siguiente ejemplo.

A. Montaje (El motor no tiene polaridad)

Los montajes son muy simples normalmente solo necesitas el playShield, sin embargo algunas veces

el montaje tiene elementos externos. Hay que tener cuidado con la polaridad de los objetos

(Polaridad: única forma de conexión de los pines). Antes del montaje te alertamos si hay polaridad

o no.

B. Programa Scratch

El programa en scratch vas a encontrar que lo que necesitas es un ciclo infinito “por siempre”, y

otras estructuras tal como scratch original, también encontraras un panel completo con entradas y

salidas del Arduino.

Page 6: Guia de usuario playshield

www.tdrobotica.co 6

Si ya estás en un nivel más avanzando en programación también tenemos el código en Arduino para

que te sirva de guía para solucionar las prácticas.

Ten en cuenta que en arduino el primer paso es declarar el funcionamiento de los pines, ya sea que

los quieras de entrada o de salida. Adicionalmente siempre vamos a tener una función setup() y otra

función loop().

Si no tienes mucha experiencia con arduino visita nuestros tutoriales!!!

http://tdrobotica.co/tutoriales

C. Código en Arduino //Inicio del código

/*Conexiones playShieldR1 yR2

Pulsador1, D2

Pulsador2, D3

Motor D6*/

int inicio= 2, parada= 3;//Botones

int motor= 6;

// Declaracion de entradas, salidas y consola ---------------------

void setup(){

pinMode (inicio, INPUT);

pinMode (parada, INPUT);

pinMode (motor, OUTPUT);}

// Programa principal----------------------------------------------

void loop(){

//Valor de los botones es 0 ó 1, 1 si el botón está presionado

//¿Esta presionado el botón D2?

if(digitalRead(inicio)== HIGH){

analogWrite(motor, 255);}

//¿Esta presionado el botón D3?

if(digitalRead(parada)== HIGH){

analogWrite(motor, 0);} }

//Fin del código

A continuación te presentamos las prácticas que puedes en esta guía.

Prácticas

1. Semáforo.

2. LED Intermitente.

3. Mover motor.

4. Fotocelda LED.

5. Temperatura LED.

6. Distancia LED.

7. Servomotor.

Page 7: Guia de usuario playshield

www.tdrobotica.co 7

1. Semáforo:

En este primer tutorial vamos a ver cómo podemos simular el comportamiento de un semáforo por medio del Arduino y la placa playShield.

A. Montaje

Conexión del playShield (LED Rojo 13, LED Amarillo 11, LED Verde 10).

C. Programa en Arduino

Es una secuencia con tiempo de espera para que cada color se ilumine de forma adecuada tal como lo haría el semáforo en las calles. //Inicio del código

/*Conexiones playShieldR1 yR2

LED rojo D13

LED amarillo D11

LED verde D10*/

int LEDR= 13, LEDA= 11, LEDV= 10;

//Declaracion de entradas, salidas

y consola-----------

void setup(){

pinMode (LEDR, OUTPUT);

pinMode (LEDA, OUTPUT);

pinMode (LEDV, OUTPUT);}

//Programa principal-------------

void loop(){

digitalWrite(LEDV, LOW);

digitalWrite(LEDA, LOW);

digitalWrite(LEDR, HIGH);

delay(2000);//Espera 2s

digitalWrite(LEDA, HIGH);

delay(1000);//Espera 1s

digitalWrite(LEDR, LOW);

digitalWrite(LEDA, LOW);

digitalWrite(LEDV, HIGH);

delay(2000);//Espera 2s

digitalWrite(LEDA, HIGH);

delay(1000);//Espera 1s

//Fin del código

B. Programa en Scratch

Es una secuencia con tiempo de espera para que cada color se ilumine de forma adecuada tal como lo haría el semáforo en las calles.

Page 8: Guia de usuario playshield

www.tdrobotica.co 8

2. LED intermitente (Luces de navidad):

Al mover el potenciómetro cambia el ritmo de intermitencia del LED rojo.

A. Montaje

Conexión del playShield (LED Rojo 13, Potenciómetro A0).

C. Programa en Arduino

Para realizar este programa no tenemos que escalar ya que la escala de la función va en milisegundos, lo cual nos queda muy bien ya que mil milisegundos es un segundo y nos sirve perfecto en la aplicación ya que la intermitencia nos quedaría más o menos de 1 segundo.

//Inicio del código

/*Conexiones playShieldR1 yR2

LED rojo D13

Potenciometro A0*/

int LEDR= 13, pot= A0;

//Declaracion de entradas, salidas y

consola-----------

void setup(){

pinMode (LEDR, OUTPUT);

pinMode (pot, INPUT);}

//Programa principal-----------------

------------------

void loop(){

digitalWrite(LEDR, HIGH);

delay(analogRead(pot));

digitalWrite(LEDR, LOW);

delay(1023-analogRead(pot));

}

//Fin del código

B. Programa en scratch

El valor del tiempo hay que ajustarlo para que el tiempo de espera sea razonable, por esta razón tenemos que escalar la señal, para que la escala de tiempo de intermitencia nos quede entre 0 segundos y 2 segundos.

Page 9: Guia de usuario playshield

www.tdrobotica.co 9

3. Mover motor (Control ON/OFF): El Motor se enciende si se presiona el botón D2 y se apaga si se presiona el botón D3.

A. Montaje Conexión del playShield (botones D2 y D3), El motor va conectado de forma exterior en el pin D6 (No hay polaridad). Pero ten en cuenta que los cables del motor estén en los pines (5V, PIN) si el motor no se mueve tendrás que energizar tu Arduino con el fuente de 12V ya que tal vez tu USB.

C. Programa en Arduino

Vamos a usar condicionales, en este caso si presionamos el botón D2 el motor se va a prender y si presionamos D3 el motor va a parar. Hay que tener en cuenta que los botones dan estados lógicos 1 ó 0, por esa razón se usan operadores lógicos, el motor puede variar la velocidad por lo tanto puede ser modificada en el intervalo de 0 a 255.

//Inicio del código

/*Conexiones playShieldR1 yR2

Pulsador1, D2

Pulsador2, D3

Motor D6*/

int inicio= 2, parada= 3;

int motor= 6;

// Declaracion de entradas,

salidas y consola ---------------

------

void setup(){

pinMode (inicio, INPUT);

pinMode (parada, INPUT);

pinMode (motor, OUTPUT);}

// Programa principal------------

---------------------------------

-

void loop(){

//Valor de los botones es 0 ó 1, 1

si el botón está presionado

//¿Esta presionado el botón D2?

if(digitalRead(inicio)== HIGH){

analogWrite(motor, 100);}

//¿Esta presionado el botón D3?

if(digitalRead(parada)== HIGH){

analogWrite(motor, 0);} }

//Fin del código

B. Programa en Scratch Vamos a usar condicionales, en este caso si presionamos el botón D2 el motor se va a prender y si presionamos D3 el motor va a parar. Él motor puede variar la velocidad en un rango de 0 a 255.

Page 10: Guia de usuario playshield

www.tdrobotica.co 10

4. Fotocelda LED (Control Luz):

El LED rojo se enciende si hay exceso de luz en la fotocelda.

A. Montaje

Conexión del playShield (LED Rojo 13, fotocelda A1).

C. Programa en Arduino

Vamos a usar condicionales, en este caso si el valor de la fotocelda A1 es mayor de 500 cumple la condición y enciende el LED 13 rojo, en este caso la fotocelda es un sensor analógico dándonos valores en un intervalo de 0 a 1023, si el valor es cero no hay luz.

//Inicio del código

/*Conexiones playShieldR1 yR2

LED rojo D13

fotocelda A1*/

int LEDR= 13, foto= A1;

//Declaracion de entradas, salidas y

consola-----------

void setup(){

pinMode (LEDR, OUTPUT);

pinMode (foto, INPUT);}

//Programa principal----------------

-------------------

void loop(){

if(analogRead(foto)>500){

digitalWrite(LEDR, HIGH);}

else{

digitalWrite(LEDR, LOW);}}

//Fin del código

Nota: la escala puede variar ya que estas son tomadas de la luz ambiente, puedes seguir el tutorial y ver en la consola el valor de la iluminación.

http://aprender.tdrobotica.co/arduino-basico-t16ab-control-de-intensidad-de-un-led/

B. Programa en scratch

Vamos a usar condicionales, en este caso si el valor de la fotocelda A1 es mayor de 500 cumple la condición y enciende el LED 13 rojo, en este caso la fotocelda es un sensor analógico dándonos valores en un intervalo de 0 a 1023, si el valor es cero no hay luz.

Page 11: Guia de usuario playshield

www.tdrobotica.co 11

5. Temperatura LED (Control de

temperatura):

En LED rojo se enciende si hay exceso en la temperatura.

A. Montaje Conexión del playShield (LED Rojo 13, temperatura A2).

B. Programa en Arduino

En este caso si el valor de la temperatura A2 es mayor de 180 cumple la condición y enciende el LED 13 rojo, el rango de la temperatura es de 0 a 1023(no son ºC). si deseas que la temperatura quede en centígrados o Fahrenheit visita el siguiente tutorial. http://aprender.tdrobotica.co/arduino-avanzado-t01aa-termometro-visual/

//Inicio del código

/*Conexiones playShieldR1 yR2

LED rojo D13

temperatura A2*/

int LEDR= 13, temp= A2;

//Declaracion de entradas, salidas y

consola-----------

void setup(){

pinMode (LEDR, OUTPUT);

pinMode (temp, INPUT);}

//Programa principal------------------

-----------------

void loop(){

if(analogRead(temp)>180){

digitalWrite(LEDR, HIGH);}

else{

digitalWrite(LEDR, LOW);}

}

//Fin del código

Nota: la escala puede variar, puedes seguir el tutorial y ver en la consola el valor de la temperatura actual. http://aprender.tdrobotica.co/arduino-basico-t16ab-control-de-intensidad-de-un-led/

C. Programa en scratch

En este caso si el valor de la temperatura A2 es mayor de 180 cumple la condición y enciende el LED 13 rojo, el rango de la temperatura es de 0 a 1023 (no son ºC).

Page 12: Guia de usuario playshield

www.tdrobotica.co 12

6. Distancia LED:

En LED rojo se enciende si hay un objeto frente al sensor de distancia.

A. Montaje

Conexión del playShield (LED Rojo 13), El sensor va externo en los pines A3 Cuidado!!! Tiene polaridad.

Nota: Si estás usando el playShieldR1 debes tener precaución con el cableado ya que difieren las conexiones.

C. Programa en Arduino

En este caso si el valor del sensor cumple la condición enciende el LED 13 rojo, el rango de la señal es de 0 ó 1, difiere del de scratch ya que en arduino podemos controlar entradas digitales, por dicha razón podemos usar el sensor como una señal digital.

//Inicio del código

/*Conexiones playShieldR1 yR2

LED rojo D13

distancia A3*/

int LEDR= 13, dist= A3;

//Declaracion de entradas, salidas

y consola-----------

void setup(){

pinMode (LEDR, OUTPUT);

pinMode (dist, INPUT);}

//Programa principal-------------

----------------------

void loop(){

if(digitalRead(dist)== 1){

digitalWrite(LEDR, LOW);}

else{

digitalWrite(LEDR, HIGH);}}

//Fin del código

B. Programa en Scratch

En este caso si el valor del sensor cumple la condición enciende el LED 13 rojo, el rango de la señal del sensor de distancia es de 0 a 1023.

Page 13: Guia de usuario playshield

www.tdrobotica.co 13

7. Servomotor: El servomotor se va a mover en relación al

potenciómetro.

A. Montaje En la práctica con S4A como en Arduino vamos a conectar el servo en el pin D9. La Conexión del playShield (D9, potenciómetro A0), El servo va externo al playShield y va conectado en el pin D9. IMPORTANTE: Para su correcto funcionamiento es necesario conectar el Adaptador de 12V 1A al Arduino, con el fin de darle la corriente necesaria al servomotor. De lo contrario puede que el servomotor resetea el Arduino también hay que tener en cuenta que el Servo tiene Polaridad (Gnd-5V PIN)

C. Programa en Arduino

En este caso el valor de del sensor va a servir de referencia para el ángulo del servomotor. El servomotor tiene un alcance de 0 a 180 grados. El potenciómetro tiene un rango de 0 a 1023, para que sirva de referencia hay que enviar valores de 0 a 180, para que quede con esa escala dividimos el valor del sensor en 5.7. Ya que 1023 / 5.7 = 180 apx. Con esto nos queda con una buena escala si dividimos el valor del sensor en 5.7. Nota: Si deseas conocer más sobre el servomotor te invitamos al siguiente tutorial. http://aprender.tdrobotica.co/arduino-avanzado-t00aa-control-de-un-servomotor-con-pwm/ //Inicio del código

/*Conexiones playShieldR1 yR2

servomotor D9

potenciometro A0*/

#include <Servo.h>//librería servo

Servo servo; // objeto Servo

int pot= A0;

int valpot;

//Declaracion de entradas, salidas y

consola-----------

void setup(){

servo.attach(9);

pinMode (pot, INPUT);}

//Programa principal----------------

-------------------

void loop(){

valpot = map(analogRead(pot), 0,

1023, 0, 179);

servo.write(valpot);//Actualiza la

posición

delay(15); }

//Fin del código

A. Programa en scratch

En este caso el valor de del sensor va a servir de referencia para el ángulo del servomotor. El servomotor tiene un alcance de 0 a 180 grados. El potenciómetro tiene un rango de 0 a 1023, para que sirva de referencia hay que enviar valores de 0 a 180, para que Con esto nos queda con una buena escala si dividimos el valor del sensor en 5.7

Page 14: Guia de usuario playshield

www.tdrobotica.co 14

Felicitaciones…

Haz terminado de conocer y utilizar los principales recursos de PlayShield…

Es hora de Imaginar, prototipar y programar tus proyectos