2014-15. INICIACIÓN A LA PROGRAMACIÓN. SCRATCH. EVALUACIÓN PARTE 1

Dibujo

EVALUACIÓN DE CONOCIMIENTOS. PROGRAMAMOS UN JUEGO TRADICIONAL DE “MARCIANITOS”

Pues bien, tal y como os comenté en clase, adjunto os dejo el adelanto de la práctica que realizaremos mañana en clase. Todos aquellos que me han solicitado que les adelante el contenido completo de la prueba recibirán un código o clave de acceso para poder ver el siguiente pdf (pulsa sobre el vínculo inferior “PRÁCTICA SCRATCH CONTROL”.

Podéis comenzar la práctica desde este mismo momento de recibirla y continuarla en clase. Todas las exigencias quedan recogidas en ese documento, así como el sistema de puntuación.

Ánimo que es fácil y divertido.

PRÁCTICA SCRATCH. CONTROL

Anuncios

2014-15. ARDUINO. PUENTE EN H

cabecera-entradas-blog
 ARDUINO. PUENTE EN H

Un Puente H o Puente en H es un circuito electrónico que hace posible que un motor eléctrico DC gire en ambos sentidos, avance y retroceda. Estos puentes están disponibles como circuitos integrados aunque también se pueden construir mediante componentes discretos.

El término de “Puente H” viene de la representación gráfica del circuito. Dicho puente se crea con 4 interruptores mecánicos o mediante transistores. Cuando los interruptores S1 y S4 están cerrados y S2 y S3 abiertos se aplica una tensión positiva en el motor, haciendo que gire en un sentido. Abriendo los interruptores S1 y S4 y los interruptores S2 y S3 cerrados el motor gira en sentido contrario.
El puente H, como ya se ha indicado, se utiliza para invertir el giro de un motor, así como para frenarlo, haciendo un corto entre las bornas del motor. Otra forma de utilizarlo es para permitir que el motor frene bajo su propia inercia, cuando desconectamos el motor de la fuente que lo alimenta.
Lo más común en estos circuitos es utilizar interruptores de estado sólido como los transistores ya que sus tiempos de vida y frecuencias de conmutación son mucho más altas.
Los interruptores son acompañados de diodos (conectados a ellos en paralelo) que permitan a las corrientes circular en sentido contrario al previsto cada vez que se conmute la tensión ya que el motor está formado por bobinados que durante cortos períodos de tiempo se opondrán a que la corriente varíe.
puente-h1
 puente-h2

El armado del circuito requiere básicamente de 12 componentes: 4 transistores, 4 resistores y 4 diodos.

2013-08-26-758

Puente H
Controlar motores usando el SN75441 (Puente H)
A continuación se mostrará cómo usar el SN75441 para controlar dos motores DC de 12V. 
En este esquema se puede observar donde a donde va dirigido cada pin del puente H. Ahora les mostraré un diagrama de pines del puente H. (OJO CON LOS PWM–> EN ARDUINO UNO NO TODOS LOS PINES SON PWM, ASÍ QUE EL ESQUEMA SIGUIENTE LO TENDRÍAS QUE ADAPTAR)
Como se muestra en el diagrama:
  • Los pines 1, 9 y 15 van a la parte positiva del protoboard donde habrá 5V. 
  • El pin 8 va a el pin VIN donde habrá 12 V y con este correrán los dos motores dc. 
  • Los pines 4, 5, 12 y 13 van a la parte negativa del protoboard.
  • El motor izquierdo va en los pines 3 y 6.
  • El motor derecho va en los pines 11 y 14.
  • El pin 2 del puente H va a el pin digital 2 del Arduino. 
  • El pin 7 del puente H va a el pin digital 3 del Arduino.
  • El pin 10 del puente H va al pin digital 8 del Arduino.
  • El pin 15 del puente H va al pin digital 7 del Arduino.
Después de estas conexiones ya puedes programar el Arduino para mover los motores usando el programa de Arduino. 
int I1=6;
int I2=7;
int I3=8;
int I4=9;
int E1=3;
int E2=12;
void setup()
{
pinMode(I1,OUTPUT);
pinMode(I2,OUTPUT);
pinMode(I3,OUTPUT);
pinMode(I4,OUTPUT);
pinMode(E1,OUTPUT);
pinMode(E2,OUTPUT);digitalWrite(I1,LOW);
digitalWrite(I2,LOW);
digitalWrite(I3,LOW);
digitalWrite(I4,LOW);
}void M1Adelante()
{
digitalWrite(I1,LOW);
digitalWrite(I2,HIGH);
}void M1Atras()
{
digitalWrite(I1,HIGH);
digitalWrite(I2,LOW);
}

void M2Adelante()
{
digitalWrite(I3,LOW);
digitalWrite(I4,HIGH);
}

void M2Atras()
{
digitalWrite(I3,HIGH);
digitalWrite(I4,LOW);
}

void paradM1()
{
digitalWrite(I1,LOW);
digitalWrite(I2,LOW);
}

void paradM2()
{
digitalWrite(I3,LOW);
digitalWrite(I4,LOW);
}

void loop()
{
for(int i=1; i<=253; i++)
{
analogWrite(E1,i);
M1Adelante();
delay(10);
}
for(int i=253; i>=1; i–)
{
analogWrite(E1,i);
M1Atras();
delay(10);
}
}

2014-15. INICIACIÓN A LA PROGRAMACIÓN. SCRATCH. PARTE III

Cabecera entradas blog

 

INICIACIÓN A LA PROGRAMACIÓN. SCRATCH. PARTE III
PRÁCTICA COLECTIVA. “PONG” CON NIVELES

 

Ya llevamos varias semanas conociendo y disfrutando de este software de programación.  Aprendimos a emplear escala, movimiento, pausa, cambiar fondo, cambiar disfraz, incluir un sonido… todo ello en la primera práctica de aquel animal que volaba y que iba alejando hasta desaparecer y volver a aparecer el el punto inicial para realizar un bucle o ciclo sin fin.

Concluida esa introducción, pasamos en días atrás a la práctica del famoso juego PONG, aquel que una pequeña bolita rebota en los laterales de la pantalla, sin poder tocar el pie de la misma y con el objetivo de golpear a un objeto que se mueve en la parte superior. Para golpear ese objeto, una serie de “ladrillos” se disponen interfiriendo en la dirección de la bola. Si la bola toca uno de esos elementos rectangulares, rebotará y desaparecerá el correspondiente “ladrillo”. Una vez que se golpea el objeto móvil superior de la pantalla, el juego continúa con más velocidad, la línea de ladrillos vuelve a aparecer y una nueva línea de ladrillos se situará más cerca de la barra inferior que nos sirve para evitar que la bola toque el pie de la pantalla. Arriba, un nuevo objeto se moverá, de un lado hacia otro. Cuando la bola toque ese objeto, concluirá nuestro mini-juego, apareciendo en pantalla CONGRATULATIONS¡¡¡. En caso en el que la bola toque la parte inferior de la pantalla, el número de vidas descenderá en 1 (partimos con 5 vidas). Cuando el número de vidas sea igual a 0, cambiará la pantalla por otra en la que se incluya el texto GAME OVER.

Pues bien, las capturas de pantalla que ahora os incluyo, son tomadas de la práctica que hemos desarrollado en clase y que todos vosotros/as habéis desarrollado conmigo en vuestros equipos. Se harán diversas apreciaciones para facilitaros la entrega futura y poder aplicar los conocimientos a la prueba que posteriormente os pondré.

Programamos el sprite u objeto BOLA. Empezamos pulsando la barra para comenzar el juego y definimos una variable en el cuadro DATOS. La variable la denominamos VIDAS y, al crearla, nos saldrán diversos comandos para poder utilizarlos a nuestras conveniencia en el programa. Pues bien, situamos fijar VIDAS (o como en la captura mía –> VIDAS RESTANTES) bajo el comienzo del programa y escribimos 5.  También situaremos la bola en su comienzo en el punto de la pantalla que deseemos y que se dirija hacia el PADDLE (sprite de la barra que se mueve inferiormente). Estos comandos los ejecutará una sóla vez.

A continuación, ejecutará SIEMPRE una serie de comandos como: rebotar cuando toque el borde y que se mueva 10 pasos. Aparecerán unas condiciones para satisfacer todas las posibles opciones en el rebote:

  • Si toca la barra que rebote (cambia de dirección);
  • si toca la parte inferior de la pantalla (hemos dibujado una línea de color) el número de vidas cambiará a -1 (perdemos una vida);
  • si toca cualquiera de los “ladrillos”, rebotará;
  • si toca el objeto superior en movimiento, cambia de fondo de pantalla y suma una vida a las vidas que tenemos.

 

PONG_1 PONG_2 PONG_3 PONG_4.0 PONG_4 PONG_5 PONG_6 PONG_7 PONG_8 PONG_9 PONG_10 PONG_11

2014-15. INICIACIÓN A ARDUINO. SERVOMOTOR

Cabecera entradas blog

SERVOMOTOR ARDUINO


Conexión de un servo a la placa de Arduino

En este tutorial vamos a ver el funcionamiento de un servomotor y como podemos usarlo con Arduino. En este caso usaremos un microServo. El servomotor tiene 3 cables, Alimentación , Masa y la señal.

Los colores son los siguientes:

  • Rojo – Alimentación(Normalmente 5 V aunque pueden ser mas)
  • Negro o Marrón -Masa
  • Blanco o Naranja – Señal de control (pulso enviado al servomotor)

1

Básicamente un servomotor es un motor de corriente continua con un potenciometro que le permite saber la posición en la que se encuentra y así poder controlarla.
Para controlar el servomotor se le envía pulsos cada 20 ms es decir 50Hz. La anchura del pulso es lo que codifica el angulo de giro , es decir lo que se conoce como PWM, codificación por ancho de pulso. Esta anchura varia según el servomotor pero normalmente va entre 0.5 y 2.5 ms aunque pueden variar.
Dependiendo del tamaño del servo y su consumo es posible que no puedas alimentarlo desde tu placa arduino, en ese caso es necesario una fuente de 5V independiente para poder moverlo,en mi caso uso un microservo por lo que consume poca corriente y se puede alimentar directamente por el Arduino . Sobre el peso que pueden levantar se puede deducir con el par del servo. Normalmente los servos indican el par o torque que pueden realizar para un servo estándar suele ser 5kg/cm es decir puede mover 5kg a 1 cm de distancia. En caso de querer moverlo a 5 cm el servo solo podrá mover 1kg.
A continuación vamos a ver como controlar en Arduino un servomotor. Para ello iniciamos la aplicación de Arduino y pulsamos en sketch->importar libreria ->Servo
2
Con esto incorporamos la libreria, aunque tambien podemos escribir el texto directamente. Una vez echo esto ya podemos usar la libreria Servo.
Ahora vamos a definir nuestro objeto Servo, esto es como definir una variable de tipo int o float, pero un poco mas completa con funciones y campos que le pertenecen. Para ponemos Servo miServo.
3
Con el objeto servo definido vamos a pasar a inicializarlo, para ello usaremos la función attach(pin,min,max) los parámetros de esta función son el pin, casi cualquier pin del Arduino puede controlar un Servomotor y no es necesario que sea uno de los PWM. En las placas que no son la Mega la utilización de la librería Servo inhabilita el PWM en los pines 9 y 10 se usen estos pines o no como servo. Los dos siguientes parámetros son opcionales y indican cual es el ancho de pulso en microsegundos para 0º y para 180º por defecto 544 y 2400.
En este ejemplo usaremos el pin 9.
4
El siguiente paso consiste en enviarle el ancho de pulso al servo con el angulo que queremos. En esta primera parte le enviaremos un angulo constante por ejemplo 90º. Y lo visualizaremos el ancho de pulso en el osciloscopio. Donde en la parte inferior se puede ver el ancho de pulso y como el periodo es de 20 ms aproximadamente.
5
Tener en cuenta que no hemos puesto ningún delay por lo que el objeto servo enviara el pulso cada 20 ms independientemente de nuestro programa.
Para poder interactuar con el servo vamos a incorporar unas funciones que nos permitan moverlo desde el PC. Para ello usaremos el puerto Serie conectado al usb y le mandaremos la letra ‘a’ cuando querramos aumentar 10º o la letra ‘z’ cuando querramos decrementar 10º. Ademas con la función constrain nos aseguramos de que el valor no supere los 180 ni baje de los 0.
6
Para las conexiones simplemente la masa conectada con la del Arduino, la señal del servo(Naranja o blanco) al pin 9 y la alimentación si tenéis un servo pequeño al pin +5v del Arduino , sino tenéis que alimentarlo con alguna fuente externa.
NOSOTROS INCORPORAREMOS UN CÓDIGO MÁS SENCILLO PARA NUESTRA PRÁCTICA:
#include <Servo.h>
Servo Servo_coche;
int potpin = 0;
int val;
void setup()
{
Servo_coche.attach(9);
}
void loop()
{
for(int i=0;i<=180;i=i+1)
{
Servo_coche.write(i);
delay(100);
}
for(int i=180;i>=0;i=i-1)
{
Servo_base.write(i);
delay(100);}
}