Upload
tdroboticaco
View
670
Download
17
Embed Size (px)
DESCRIPTION
Â
Citation preview
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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).
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.
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
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