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

Dibujo

SCRATCH 2.0. INICIACIÓN A LA PROGRAMACIÓN I


Scratch es un lenguaje de programación que “corre” en un entorno de programación que también se llama Scratch.

Scratch es desarrollado y mantenido por el equipo de Scratch en el grupo Lifelong Kindergarten del MIT Media Lab (http://www.media.mit.edu/).

ICONO SCRATCH

Scratch es y será siempre software libre y gratuito. Usted no necesita una licencia de uso de Scratch para utilizarla en una Institución educativa, en la casa o en cualquier otro lugar.

Vamos con algunos requisitos para seguir el tutorial:

  • Tener Scratch instalado y listo para correr.
  • Ya es corriente el uso online de Scratch 2.0.
  • Poseer algunas aptitudes básicas a la hora de usar un ordenador (palabras como arrastrar y soltarseleccionardoble clic, etc. te deberían significar algo).
  • Necesitaréis tener nociones sobre magnitudes angulares y sobre los ejes cartesianos.
  • Ser paciente, y tener ganas de aprender. Punto.

No hace falta que sepas nada sobre programación ni sobre algoritmos… de hecho una vez que empieces a trabajar con soltura con Scratch estarás en condiciones de interpretar cualquier definición sobre estos conceptos.

De cualquier manera, para no arrancar “a ciegas” sobre estas cuestiones, conviene dejar algunas definiciones simples e incompletas sobre algunos términos:

Programa: Conjunto de instrucciones estructuradas y ordenadas, las cuales un ordenador puede interpretar y ejecutar (más simplemente, con un programa podemos darle órdenes a la computadora para que haga lo que nosotros queramos).

Programación: Creación de un conjunto de órdenes e instrucciones que un ordenador puede interpretar y ejecutar (o sea, vista la definición anterior, es la creación de un programa).

Se programa con los lenguajes de programación (que es el “idioma” con que podemos comunicarnos con la computadora).

Los cambios más importantes que hemos encontrado en Scratch 2.0, respecto de la versión 1.4 son:

  • Permite crear y editar proyectos en línea.
  • Se ofrecen ahora dos nuevas categorías: “Eventos” y “Más bloques”.

Ejemplo scratch tetris

INGREDIENTES BÁSICOS DE UN PROYECTO DE SCRATCH

  • Los proyectos de Scratch están construidos con Objetos (Objeto móvil programable es la traducción al español dada a Sprite, en adelante se utiliza solo la palabra Objeto).
  • Puede modificar cómo se ve un Objeto dándole un disfraz diferente. Usted puede hacer que el Objeto parezca una persona, un tren, una mariposa o cualquier otra cosa.
  • Puede usar cualquier imagen como disfraz: puede dibujar una imagen en el Editor de Pinturas o importar una imagen del disco duro de su equipo.
  • Puede darle instrucciones al Objeto, diciéndole que se mueva o toque música o que reaccione a otros Objetos. Para decirle a un Objeto qué hacer, usted encaja bloques gráficos unos con otros formando pilas, llamadas programas (scripts).

Como texto básico de los conocimientos explicados en clase para poder abordar los proyectos que estamos planteando, os dejo este pdf que resume, en gran medida, todo aquello que debéis conocer.

ScratchGuiaReferencia

Del mismo modo, os invito a visitar esta web, con contenidos perfectamente explicados, muy intuitiva y que se adentra en prácticas básicas para un comienzo adecuado en nuestra andadura (pulsa sobre el icono).

scratch button


Anuncios

2014-15. PROYECTO INTEGRADO. ARDUINO. INICIACIÓN III

cabecera-entradas-blog

PROYECTO INTEGRADO. INTRODUCCIÓN A ARDUINO

LED RGB ACCIONADOS MEDIANTE PULSADORES

Control de un RG a través del accionamiento de tres pulsadores

El objetivo de este tutorial consiste en combinar la utilización de pulsadores para controlar el color de un led RGB.

RGB_led_pulsadores

El modelo RGB se basa en la posibilidad de representar un color mediante la mezcla por adición de los tres colores de luz primarios: rojo, verde y azul.

Antes de adentrarnos en el montaje, enumeraremos los componentes necesarios para realizar el experimento:

  • 1 led RGB
  • 3 resistencias de 270 ohmios (Con 220 ohmios será suficiente, la única diferencia que encontraremos es que a menor resistencia, el led brillará con mayor intensidad, soportando con garantías este incremento)
  • 3 pulsadores táctiles
  • 1 placa breadboard
  • 1 microprocesador Arduino UNO
  • Cables
  • 1 placa breadboard pequeña adicional (opcional)

A continuación, vemos el diagrama del cableado:

 Deberemos comprobar que la patilla más larga del led RGB sea la que esté conectada a tierra. En nuestro diagrama se trata de la segunda patilla, pero esto puede variar según el tipo de led RGB que tengamos.

Cabe destacar que se está asumiendo que se dispone de un led “Cátodo común”. Si, en cambio, nuestro led es “Ánodo común”, deberemos conectar el pin más largo de éste a +5V en vez de a tierra. En este caso, el ciclo de color será inverso, es decir, cuando accionemos el pulsador dispuesto a encender la luz roja, se encenderá la azul y viceversa.

colores rgb

En primer lugar, el código que vamos a introducir presupone que el led está apagado. Si mantenemos presionado alguno de los botones, el led se encenderá aumentando gradualmente su intensidad. El botón de la izquierda encenderá el color rojo, el del centro, el verde y el de la derecha, el azul.Tal y como vemos en el diagrama, se está empleando la mitad de la placa breadboard, ya que la parte media de los buses de nuestra placa está separada, por lo que la corriente no tiene continuidad.

Finalmente, vamos a explicar con detalle el programa a introducir en el software de Arduino. Iremos analizando cada parte del código para entender qué se consigue con cada una de ellas.

Podremos realizar cualquier combinación con estos tres colores, teniendo en cuenta que a mayor tiempo de pulsación, obtendremos una mayor intensidad de luz. Si queremos volver a empezar con el led apagado, basta con darle al botón de reiniciar (botón rojo de la placa Arduino).

Tenemos tres pines de salida para controlar el led. Mediante éstos podemos controlar cuánta potencia va a cada color del led.

Necesitamos tres pines más para los pulsadores, los cuales configuraremos como pines de entrada.

int redLEDPin = 11;

int greenLEDPin = 10;

int blueLEDPin = 9;

int redSwitchPin = 7;

int greenSwitchPin = 6;

int blueSwitchPin = 5;

 Tras la asignación de los pines, declaramos las siguientes variables:

int red = 0;

int blue = 0;

int green = 0;

Las utilizaremos para mantener los valores actuales de la intensidad de cada canal del led y pueden variar de 0 a 255. Por tanto, si tenemos ‘blue’ = 0, la parte azul del led estará apagada, mientras que si tenemos ‘blue’=255, brillará con la máxima intensidad.

void setup() {

  pinMode(redLEDPin, OUTPUT);

  pinMode(greenLEDPin, OUTPUT);

  pinMode(blueLEDPin, OUTPUT); 

  pinMode(redSwitchPin, INPUT);

  pinMode(greenSwitchPin, INPUT);

  pinMode(blueSwitchPin, INPUT); }

void loop() {

  if (digitalRead(redSwitchPin) == HIGH) {

    red ++;

    if (red > 255) red = 0; }

  if (digitalRead(greenSwitchPin) == HIGH) {

    green ++;

    if (green > 255) green = 0; }

  if (digitalRead(blueSwitchPin) == HIGH)  {

    blue ++;

    if (blue > 255) blue = 0;  }

 Tras definir el modo de los pines ( ‘input’ para las entradas y ‘output’ para las salidas), pasamos a la parte de los bucles. Cada uno de ellos funciona de la misma manera.

Por ejemplo, el primero controla el led rojo. Si ‘digitalRead’, mediante ‘redSwitchPin’ detecta que está en ‘LOW’, lo que quiere decir que el botón está pulsado, se le suma 1 a ‘red’ (mediante el comando ++). Y seguirá sumando hasta que ‘red’ llegue a 255. A partir de este momento, el ‘if’ siguiente volverá a poner ‘red’ a 0 y se iniciará de nuevo el bucle.

 analogWrite(redLEDPin, red);

analogWrite(greenLEDPin, green);

analogWrite(blueLEDPin, blue); 

delay(300); }

Con el ‘delay’ final conseguimos reducir la velocidad de cambio de color del led para que nos sea más fácil manipularlo.

2014-15. DÍA DE ANDALUCÍA DESDE EL SMARTPHONE Y LOS BIDI/QR

Cabecera entradas blog

DÍA DE ANDALUCÍA DESDE LA TECNOLOGÍA

APRENDEMOS DE NUESTRA TIERRA A TRAVÉS DE LOS CÓDIGOS BIDI o QR EN NUESTROS SMARPHONES

Desde el Departamento de Tecnología del colegio Espíritu Santo de Baena entendemos que la competencia digital debe implementarse en la enseñanza partiendo de aquello que forma parte de nuestra vida.

El Colegio Espíritu Santo de Baena ha propuesto una interesantísima experiencia cultural en esta semana donde celebramos nuestra autonomía andaluza. La competencia digital se implementa desde todos los ámbitos educativos y, en este caso, impulsado desde el departamento de Tecnología, se ha puesto al alcance de los alumnos un concurso de preguntas relacionadas con Andalucía y donde la cuestión es lanzada desde un código. Este código es leído por cualquier dispositivo móvil Android con una aplicación de lectura de códigos BIDI o QR.

2015-02-26 12.14.06

Este concurso dispone de un total de 120 preguntas, dispuestas sobre un mapa tridimensional andaluz, con un relieve interpretado a través de prismas coronados por unos códigos BIDI o QR. Estos códigos son similares a aquellos tan conocidos como son los códigos de barras. Cada código responde a una de las muchas preguntas de varias asignaturas. Así, tenemos cuestiones de Geografía, Historia, Arte, Educación Física, Literatura, Biología, Cultura Clásica e Inglés.

2015-02-26 09.44.38

La propuesta resultó especialmente divertida y permanecerá activa en el recibidor del centro educativo para todo aquel que quiera participar o comprobar la enorme y grata respuesta del alumnado.

2015-02-25 12.03.20 2015-02-25 13.01.42 2015-02-26 09.42.372015-02-26 09.42.50

Todos quedamos convencidos que, más allá de los regalos a los mejores (aportados por MANCOMUNIDAD DEL GUADAJOZ y CAMPIÑA ESTE y ADEGUA), quedará un poso de cultura cuya semilla ha sido plantada por el omnipresente Smartphone y abonada por la cultura que aporta este centro educativo.

2014-15. CONCEPTOS BASICOS

cabecera-entradas-blog

 

CONCEPTOS BÁSICOS

ELECTRICIDAD, MECÁNICA E HIDRÁULICA. COCHE ELÉCTRICO

Adjunto os dejo tres documentos que resumen nuestras clases prácticas seguidas para la construcción del coche eléctrico de 2o ESO.

Abordan circuitos básicos serie-paralelo de electricidad, mecánica básica basada en reductoras de motores mediante poleas y aplicación del principio de Pascal y, por tanto, de la Hidráulica en el giro del eje delantero de nuestro vehículo.
image
image

image

image

image

2014-15. TRABAJOS OBLIGATORIOS 2º TRIMESTRE 2º-3º ESO. ELECTRICIDAD

Cabecera entradas blog

TRABAJOS DE DESARROLLO Y TEORÍA BÁSICA

ELECTRICIDAD. 2º CURSO – 3º CURSO DE ESO

TEORÍA BÁSICA/INTRODUCCIÓN (procedente de otra entrada de este blog. PULSA SOBRE ESTE PÁRRAFO PARA REDIRIGIRTE)

buenos-conductores-de-electricidad

TEORÍA BÁSICA EN PÁGINA EXTERNA “AULA DE TECNOLOGÍA”  http://www.aulatecnologia.com/ESO/TERCERO/teoria/electricidad/electricidad.htm

ELECTRICIDAD BÁSICA. PÁGINA DEL ITE Y DEL MINISTERIO DE EDUCACIÓN, CULTURA Y DEPORTE http://ntic.educacion.es/w3/recursos/fp/electricidad/index.html

ELECTRICIDAD 2ESO (Pulsando sobre este enlace obtendrán las preguntas que debes desarrollar en este trimestre. DEBES CONTESTAR LAS CUESTIONES A MANO)

ELECTRICIDAD 3ESO (Pulsando sobre este enlace obtendrán las preguntas que debes desarrollar en este trimestre. DEBES CONTESTAR LAS CUESTIONES A MANO)

Recuerda, es imprescindible la entrega del cuestionario previo al examen. El examen abordará cuestiones básicas de las preguntas anteriores y del documento que a continuación se os deja en la presente entrada.

TEORÍA BÁSICA ELECTRICIDAD SECUNDARIA

La electricidad (fundamental) (Pulsando sobre el enlace anterior, accederás a un documento básico para acercarte al mundo de la electricidad y será base para nuestras clases de electricidad)

VÍDEOS RESUMEN DE CONCEPTOS BÁSICOS A COMPRENDER

2014-15. PROYECTO INTEGRADO. ARDUINO. INICIACIÓN II

cabecera-entradas-blog

PROYECTO INTEGRADO. INTRODUCCIÓN A ARDUINO II

CONOCIMIENTOS BÁSICOS. PRÁCTICAS COMENTADAS

Encender LED con un pulsador

Tenemos conocimientos suficientes para detectar las partes de un programa o sketch y el momento de declarar variables que emplearemos en el mismo.  Ahora vamos a introducir un elemento básico como es un PULSADOR. Pues bien, un pulsador es un mecanismo que permite el paso de la corriente o no, es decir, en Arduino, permitirá el paso de 5 voltios o bien cortará este flujo (0 voltios). Los pulsadores pueden estar normalmente abiertos (no permiten el paso de tensión) o bien normalmente cerrados (permiten el paso de la tensión que proporciona la placa de Arduino). Cuando permiten el paso, el estado será HIGH o bien valor 1, mientras que, caso contrario, será estado LOW o valor 0. Un led tendrá asociada una resistencia de 220 Ohms, mientras que un pulsador la tendrá de 10KOhms.

Estado digital 5 voltios 0 voltios
 Opción 1  HIGH  LOW
 Opción 2  1  O
 Opción 3  TRUE  FALSE

Un pulsador se encuentra conectado a 5 voltios en un polo y (10KOhmios + Pin) en el otro polo.

Ya en la programación, el número del pin en el que conectamos un pulsador se puede introducir tal cual está serigrafiado en la placa (del 0 al 13) , pero es muy recomendable introducirlo como una variable, constante o definición con el valor introducido previamente en la parte del Sketch en la que se hace la definición de variables, de ahí que definamos int pulsador=(pin donde se conecta). Del mismo modo declaramos que el pulsador será un INPUT.

pinMode (pulsador, INPUT);

// declara el pin al que está conectado el pulsador como entrada

Posteriormente, en el loop definiremos la función IF que es la que comprobará si el pulsador está en posición HIGH o LOW.

Lo primero que se puede apreciar es la aparición de la función if-else. Esta es una condicional que evalúa una condici[on y dependiendo del resultado ejecuta una u otra acción.  En nuestro caso la condición a evaluar será: Si al iniciar loop()  Arduino entrega 5 voltios (HIGH) en el pin que nosotros elijamos, entonces Arduino ejecutará la tarea de secuenciar el encendido de los leds. Podemos emplear el presente esquema como visualización del ejemplo.
t02_31

Pues, después de esta introducción, os dejo una nueva forma de trabajar en clase.  DESARROLLAREMOS NUESTRAS PRÁCTICAS A TRAVÉS DEL PROGRAMA DE AUTODESK que podemos encontrar en este enlace:

http://www.123d.circuits.io

Nos damos de alta con un usuario y contraseña y el programa guardará las programaciones automáticamente en su base de datos asociada a nuestro usuario.

Este programa reúne el software IDE de Arduino (donde confeccionábamos el sketch de Arduino) y la visualización del software FRITZING. Podremos probar nuestro programa, hacerlo funcionar sin necesidad de montarlo físicamente. Del mismo modo, nos permite exportar el código del sketch al IDE de Arduino. Todas nuestras prácticas las desarrollaremos a través del citado software online libre.

Ahora os explicaré cómo desarrollar la sencilla práctica que enciende un led cuando accionamos un pulsador. Se ha desarrollado con 123d.circuits, se ha simulado y se ha exportado al IDE de Arduino para poder exportarlo al soporte físico de Arduino.

Pulsador con led_123

Escogemos los componentes a emplear y los situamos en la protoboard. Asignamos el valor de las resistencia pulsando sobre ellas y editando el dígito y las unidades empleadas. Los componentes se agregan pulsando el icono superior derecho COMPONENTS.

Pulsador con led_123_2

Posteriormente procedemos a programar nuestro código. Pulsamos CODE EDITOR. 123circuits nos escribe un código automático, pero este lo debemos adaptar a nuestras necesidades. Definimos los bloques habituales (DEFINICIÓN DE VARIABLES, VOID SETUP, VOID LOOP). Cuando terminemos la programación, pulsamos START SIMULATION. Ahí podemos observar si nuestro programa es eficiente. Terminada satisfactoriamente la simulación, podemos exportar el código pulsado el icono DOWNLOAD CODE, generándonos un archivo RAR que una vez descomprimido puede ser abierto por el IDE de Arduino. A partir de entonces, procedemos de forma habitual.

Pulsador con led_exportado123

Adjunto os dejo el sketch para que lo probéis y podamos desarrollar las dos prácticas que os dejo al final de esta entrada.

Como podéis ver, aparece el comando if. Intentaré explicar su funcionamiento lógico de forma concisa, alejada de tecnicismos.

El comando if (podemos traducirlo como SI OCURRE ESTO) comprobará si se dan unas condiciones determinadas. Caso de que así sea, procede a ejecutar una serie de comandos. En nuestro caso el if comprueba si el pulsador está accionado. Pues bien, si está accionado cierra el circuito y la placa entrega 5 voltios, por tanto está en estado HIGH. Arduino debe leer pues este valor o voltaje. Como ya sabemos, Arduino lee con la orden digitalRead (para señal digital), por tanto el comando dirá: if (digitalRead(…….)==HIGH). Acto seguido, ¿QUÉ LEEMOS? Pues queremos leer el pin 4, al que hemos denominado PULSADOR, por tanto debemos escribir lo que sigue, en cualquiera de las dos formas, preferiblemente la primera:

A) if (digitalRead(pulsador)==HIGH) {

B) if (digitalRead(4)==HIGH){

Después de la llave abierta, indicamos QUÉ QUEREMOS QUE HAGA ARDUINO DE CUMPLIRSE LA CONDICIÓN. Por tanto, en nuestro caso, tal y como vemos en la captura de pantalla, será poner en estado HIGH el led asociado al pin 7. Finalmente volvemos a cerrar llaves.

Adicionalmente podemos añadir varias condiciones al if, por ejemplo que se den dos simultaneas, teniendo la estructura que sigue:

if (…………)&&(………..) {(ejecuta algo}

Podemos incluir también qué queremos que haga en caso de que no se cumpla el comando if, resultando lo que sigue:

if (…………)&&(………..) {(ejecuta algo}

else {(ejecuta esto otro)}

Otros comparativos pueden ser:

 x == y (x is equal to y)
 x != y (x is not equal to y)
 x <  y (x is less than y)  
 x >  y (x is greater than y) 
 x <= y (x is less than or equal to y) 
 x >= y (x is greater than or equal to y)

PRÁCTICAS BÁSICAS A DESARROLLAR 

PRÁCTICA 1. JUEGO DE BALONCESTO

Debemos programar dos jugadores con dos canastas conectadas a un pulsador cada una de ellas. Cuando un jugador enceste tres veces en su canasta, se encenderá el primer led, así hasta alcanzar tres leds encendidos tras encestar tres veces tres. El jugador que termine antes con su secuencia de encestes ganará con el sonido de un buzzer zumbador, dando por terminado el juego. Montaremos en 123d.circuits, simulamos y exportamos a Arduino IDE. Finalmente, intentaremos fabricarlo físicamente.

PRÁCTICA 2. JUEGO DE REFLEJOS

Dos jugadores. Cada uno vuelve a tener tres leds que encender. En este caso, existirá un led aislado, que se irá encendiendo de forma aleatoria (enciende y apaga sin pauta predefinida). Cuando uno de los jugadores pulse con antelación al otro tres veces, encederá uno de los tres leds, así hasta alcanzar tres leds encendidos tras concluir la secuencia propuesta.

ANEXO

Arduino no recuerda acciones que ha desarrollado en el void loop si vuelve a ejecutar el mismo comando. Por decirlo de alguna forma, al volver a pasar por el mismo comando, borra la lectura realizada en el anterior ciclo y recuerda la nueva lectura hasta que vuelva a pasar por ahí el loop.

Para que recuerde cualquier lectura externa, ya sea un tiempo, una temperatura, una pulsación… debemos generar una variable. Y decimos variable porque varía en función de los datos que se reciben. Así, será variable el número de veces que encestamos, del mismo modo que varía la temperatura exterior o bien el tiempo que pudiera tardar en accionar un pulsador.

En nuestro caso, Arduino debe recordar cuándo se ha pulsado 3 veces un mecanismo (pulsador). Por ello, tenemos que definir una variable entera, previa al void loop para que solo lo lea al principio y una vez. La estructura sería  de este modo:

int contador==0;

Aquí decimos que una variable denominada contador (o cualquier otra cosa que queramos) parte de un valor igual a cero. Ponemos dos iguales para que lo asocie con el valor cero y no con un pin.

Usando el comando if, pudiéramos construir algo parecido a esto: Si accionamos el pulsador, el contador debe sumar 1 a su valor anterior, por tanto, sería:

if (digitalRead(pulsador)==HIGH) {

contador=contador+1;

En este momento, la variable contador modifica su valor (dentro del void loop) y cada vez que vuelva a pasar el loop y compruebe que se ha accionado el pulsador, sumará 1 al valor que tenía antes CONTADOR.  Claro está, nuestro programa objeto (ejercicios propuestos) quiere que cuando ocurra algo 3 veces, encienda un led. Por tanto, dentro del IF primero, debemos colocar otro if que compruebe si CONTADOR es igual a 3 y, caso de que así sea, encender el led primero, si es igual a 6 encender el led segundo y, finalmente, si es igual a 9, encender el led 3 y sonar el zumbador. Por tanto, debemos usar varios if. Como tenemos dos jugadores, debemos asociar tanto leds como contador con cada jugador, así sería, por ejemplo: led_1_P1    led_1_P2  (led primero del player 1…); contadorP1    contador P2  …….

Me pongo a vuestra disposición para cuantas dudas os surjan.

Seguimiento de la asignatura de Tecnología e innovaciones. Colegio Espíritu Santo de Baena (Córdoba). Prof.: Fco. Javier Cortés Ariza