Archivo de la categoría: General

¡La XII edición de Seré Ingeniera está en marcha!

¡Arrancamos motores para preparar una nueva edición del campus tecnológico para chicas Seré Ingeniera!

Ya tenemos fechas para la celebración de la XII edición del campus tecnológico para Chicas Seré Ingeniera, y estamos emocionadas de anunciar que será del 30 de junio al 11 de julio. Además, las inscripciones estarán disponibles ¡a partir del 1 de mayo!, así que anota esa fecha en el calendario, que no se te pase. ¡No te vayas a quedar sin tu plaza!

Parece increíble que ya llevemos 12 años organizando este campus con tanta ilusión y cariño. Desde que empezamos, más de 440 chicas han pasado por nuestras ediciones, y muchas de ellas han decidido seguir carreras en el ámbito de la tecnología, la ingeniería. ¡Nada nos hace más felices y orgullosas!

Como cada año, en esta edición las participantes trabajarán en un proyecto en grupos. ¡Y este año tendrán cuatro proyectos súper chulos entre los que podrán elegir! Nosotras, las profes de Seré Ingeniera, estamos preparando cada uno con mucho mimo para que las chicas, desde cero, consigan desarrollar un proyecto completo con hardware y software libre, además de potenciar su creatividad. Queremos que aprendan de forma práctica y divertida, resolviendo retos y experimentando como verdaderas ingenieras.

En los últimos años, hemos realizado en el campus una actividad muy especial: charlas y desayunos con ingenieras. En estas sesiones, exalumnas del campus que ahora estudian ingeniería comparten su experiencia y dan consejos a las participantes sobre cómo elegir su camino académico. Creemos que es una gran oportunidad para que las chicas tengan referentes cercanos y resuelvan sus dudas de cara a su futuro. Este año tenemos otra sorpresa para ayudarles con la orientación sobre sus estudios y profesión del futuro.

Además, todas las profesoras y monitoras del campus somos ingenieras o estudiantes de ingeniería, y estamos aquí para ayudar en lo que necesiten, no solo durante el campus, sino también como mentoras para aquellas que nos lo soliciten.

Este campus es posible gracias a la iniciativa de la Oficina de Software Libre de la UGR, pero también necesitamos el apoyo de empresas que quieran hacer colaboración con nosotras. Si te interesa o conoces a alguien que quiera apoyar esta iniciativa, en nuestra web, en el apartado colaboración encontrarás toda la información sobre cómo hacerlo.

Aprovechamos para dar las gracias a todas las empresas que han colaborado con nosotras en ediciones anteriores. Sin su apoyo, este campus no sería posible.

Si eres chica y estás entre 2º de ESO y 2º de Bachillerato, este campus es para ti. ¡No pierdas la oportunidad de sumergirte en el mundo de la tecnología y la ingeniería de una forma divertida y emocionante!

¡Vuelve Seré Ingeniera!

¡Hola a todas!

Ya estamos preparando la edición del Campus Tecnológico para Chicas Seré Ingeniera del año 2023, que además ¡coincide con su décimo aniversario!

Nuestro objetivo es proporcionar un ambiente desafiante y acogedor donde las chicas puedan explorar su pasión por la tecnología y las STEM (Ciencia, Tecnología, Ingeniería y Matemáticas).

En nuestro campus tecnológico, que se celebrará en julio en la ETSIIT, las chicas tendrán acceso a una amplia gama de recursos educativos y de formación, desde talleres y charlas hasta proyectos prácticos y colaboraciones con empresas y organizaciones líderes en la industria. Todo el campus estará guiado por nuestras fantásticas profesoras.

Estamos buscando patrocinadores que se unan a nosotras en este importante esfuerzo para cerrar la brecha de género en STEM. Si tu empresa o organización está interesada en apoyar esta iniciativa, por favor consulta esta página para obtener más información sobre las oportunidades de patrocinio y las formas en que puede contribuir a hacer una diferencia en la vida de las futuras ingenieras.

Prestad también atención a nuestro Twitter: @sereingeniera y visitad a menudo el resto de páginas de nuestra web, donde anunciaremos las fechas de celebración y otra información relevante.

Las monitoras de Seré Ingeniera (IV)

Por último pero no menos importante, la que os ha ido contando actualizaciones sobre esta edición del campus tecnológico para chicas seré ingeniera tanto por redes sociales como por este mismo blog, es la última de las monitoras que falta por presentar. Ya conocéis a las ingenieras Ángela, María e Inés y ha llegado la hora de presentarme.

Elvira Castillo

Explorando lugares nuevos.

Puede que algunas ya me conozcáis de años anteriores ya que este será mi 5 año participando como monitora de seré ingeniera, además ayudo en la coordinación del campus y la organización desde hace 3 años. Creo que poco a poco me habéis visto crecer personal y profesionalmente porque cada año os he ido contando actualizaciones sobre mi. Pero para las que no me conocéis aún os cuento:

Soy graduada en Ingeniería Informática por la Universidad de Granada y Experta Universitaria en Ingeniería Inversa e Inteligencia Malware por la Universidad de Málaga gracias a una Beca que me concedió Google.

Trabajando en remoto desde un parque.

Me apasiona la ciberseguridad, la docencia y la investigación. Soy investigadora y analista en ciberseguridad. He participado como investigadora en diversas actividades organizadas por la Unidad de cultura científica de la Universidad de Granada tales como: la noche europea de los investigadores, la feria de las ingenierías, las actividades organizadas para celebrar la semana de la ciencia o el día internacional de la mujer y la niña en la ciencia, etc. Como puedes ver, me encanta participar en tantas actividades como puedo para fomentar las vocaciones STEM.

En el tiempo que llevo trabajando en empresas relacionadas con la tecnología y la ciberseguridad he podido ratificar lo que ya me temía cuando estaba estudiando el grado en ingeniería informática. Y es que ¡es necesaria mucha más presencia femenina en el sector tecnológico!. Antes de empezar en la universidad, estudié un ciclo formativo de grado superior en administración de sistemas informáticos en red. Ya ahí comencé a darme cuenta de dos cosas. La primera es que hay pocas chicas en el sector tecnológico con perfiles cualificados. Y la segunda, es que ¡este sector es de paro nulo!. Antes de terminar, ya tienes trabajo y que queréis que os diga chicas…

Con Chema Alonso en el congreso de ciberseguridad UAD360

Si estudias un ciclo formativo, una ingeniería o grado relacionado con tecnología, física, matemáticas, electrónica, robótica, etc. ¡Vas a tener trabajo seguro!. Y puede que en estos momentos no tengas claro exactamente que quieres estudiar. Pero hace unas semanas hablando con una chica que estudió Física, me contó que ahora trabaja investigando curas contra el cáncer en un hospital. ¿Pensabais que había que estudiar medicina o enfermería para eso?

Pues… quizás te haya sorprendido pero una Física también puede trabajar en un hospital. Y no solo eso, sino que si estudias ingeniería puedes desarrollar software para ayudar a las personas como el que hay por ejemplo en la sala de coordinación de Urgencias y Emergencias del 061 o participar en el diseño de maquinaria robótica como la que utilizan en las operaciones o incluso aprender a controlar los sistemas de control industrial como pueden ser trabajar en las centrales eólicas, eléctricas, depuradoras de aguas… Con todo esto quiero deciros que ¡las ingenieras estamos en todas partes! además ¡Necesitamos más ingenieras!

Entrevista para Alumni UGR (Espacio abierto)

Me gusta mucho mantener el contacto con las chicas que participan en el campus en cada edición. Así puedo saber de ellas después. Incluso ayudarles u orientarlas cuando tienen dudas sobre que estudiar.

Si cuando estudias en la Universidad de Granada además vives la universidad, te pasará como a mí, que siempre que me preguntan conozco a alguien que conoce a alguien que ha estudiado el grado por el que me están preguntando y… me encanta hacer un poco de mentora y poder poner en contacto a las chicas del campus con otras mujeres que ya han estudiado el grado por el que me preguntan…

Soldando algunos componentes

Bueno además de todo esto, me encanta la playa, el senderismo, romper cosas (hacking), cacharrear con el hardware, leer libros de psicología y de herramientas abiertas y ciberinteligencia.

Estoy deseando que llegue el primer día del campus para conocer a todas las aspirantes a ingenieras, saber sus inquietudes y poder ayudarlas en todo lo que necesiten. Este año tenemos unos proyectos muy chulos y me esta costando mucho no publicarlos por redes sociales. Pero quiero que os sorprendamos cuando los veáis el primer día del campus. ¡Os veo en menos de una semana!

Las monitoras de Seré Ingeniera (III)

¡Hola de nuevo chicas! ¿Pensabais que tan solo os iban a acompañar este año como monitoras Ángela y María? Pues no, tenemos una nueva incorporación más y estoy segurísima de que os va a encantar en cuanto os la presente.

Inés Jiménez Díaz

Inés con sus proyectos y certificados de haber asistido a las últimas ediciones de
Seré Ingeniera

Nos llena de orgullo presentaros a Inés, porque podríamos decir que es «nuestra chica que se ha convertido en mujer» y es que, Inés ha participado en las últimas 4 ediciones de Seré Ingeniera y ahora estudia Ingeniería Informática en la Universidad de Granada.

Ines participa como miembro técnico de IoT (Internet of things o internet de las cosas) en el GDSC (Google Developers Student Club), donde ha impartido alguna que otra charla como la de introducción a Arduino en la ETSIIT.

Algunas de sus mayores aficiones son cacharrear y programar para crear distintos sistemas, juegos, prendas vestibles e incluso robots. A lo largo de las ediciones del campus en las que ha podido asistir ha aprendido las bases para poder realizar todos esos proyectos y ha puesto en práctica su creatividad para crearlos y ponerles nombres tan creativos como por ejemplo el guante total (un sistema vestible montado en un guante con el que podías tocar notas musicales) o el marciajuegos (una maquinita con la que podías jugar diferentes juegos).

Ines nos cuenta que un consejo que le sirvió mucho y que le gustaría difundir a todas las chicas que vayan a participar en el campus o las que estén interesadas en una ingeniería, es que no dejéis que nadie os diga que no debéis de estudiar uno u otro grado porque es muy difícil para una mujer (sobre todo si tenéis en mente estudiar una ingeniería) ¡Por qué no lo es!

Así mismo, afirma que en Seré Ingeniera aprendió muchas cosas… entre ellas que no hay que dejar las cosas para el último día que el proyecto puede funcionar un día y al siguiente dejar de funcionar, porque has cambiado algo en el programa o se ha soltado un cable… Pero dice que lo que mejor aprendió y más le impactó es en el modo que todas en el campus se unieron como una piña y a pesar de estar cada una con un proyecto distinto podían llegar a ayudarse unas a otras e incluso sacar todos los proyectos adelante.

Inés termina con esta frase tan reveladora: «Para mi asistir al campus Seré Ingeniera y las monitoras que además eran todas ingenieras, me ayudó a darme cuenta que quería ser una de ellas».

Las monitoras de Seré Ingeniera 2022 (II)

Hace unos días os presentamos a la primera de las integrantes del equipo que formará parte del Campus Tecnológico para chicas: Seré ingeniera (si no sabéis aún quien es Ángela, aquí tenéis el enlace). Hoy le toca el turno a una de las nuevas incorporaciones al equipo de monitoras y se trata de:

María Sánchez

María tiene 22 años y es estudiante del Grado en Ingeniería Informática en la Escuela Superior de Ingenierías Informática y Telecomunicación (ETSIIT) de la Universidad de Granada. Actualmente está cursando la especialidad en Ingeniería del Software y además está trabajando en la Oficina de Software Libre de la Universidad de Granada (OSL) desde hace unos meses.

Desde que era pequeñita tenia una gran curiosidad por la tecnología y le gustaba muchísimo jugar a videojuegos. Lo que ella no sabía por aquel entonces es que unos años más tarde esta curiosidad e inquietud le llevaría a la pasión que tiene actualmente por desarrollar sus propios proyectos.

Tal ha sido el interés que María ha desarrollado su propia aplicación Android para jugar a juegos de rol. Además también hace sus pinitos con el hardware y se ha creado un piano electrónico. Esos proyectos y otros muchos son un ejemplo de lo que hace en sus ratos libres.

Cuando estudió Bachillerato era la única chica de la especialidad tecnológica, y esto le hizo darse cuenta del gran problema que existe en el sector de las tecnologías de la información y comunicación (TIC). Este es un mundo en el que predomina claramente la presencia masculina, lo que ha creado estereotipos e ideas preconcebidas que no hacen ningún favor a las mujeres que lo estudian. Por esto, cuando entró en la ETSIIT, se involucró en la delegación de estudiantes. En concreto forma parte de la Comisión de Igualdad para luchar por esta y otras muchas causas que lo merecen.

Eso unido a la pasión que tiene por la tecnología, fue lo que le llevó al lugar donde está ahora. Estudiando ingeniería informática y trabajando en la Oficina de Software Libre. Pero aquí donde la veis, ¡Mari tiene grandes planes para su futuro!. Y es que, gracias al trabajo en la OSL y las campañas de reciclaje de equipos informáticos que realiza, ha descubierto que le encanta cacharrear con los componentes de los PC y montar ordenadores como si de crear un nuevo Frankenstein se tratara. Reciclando componentes de otros PC que ya no funcionaban correctamente.

Dada la especialidad que ha elegido en la carrera de ingeniería, la ingeniería del software, nos cuenta que le encanta todo lo que es el diseño de interfaces y experiencia de usuarios y en un futuro próximo piensa continuar su formación en este campo para dedicar su carrera a esto.

Aún nos quedan algunas integrantes más del equipo de monitoras de Seré Ingeniera de Granada que iremos desvelando en los siguientes post en las próximas semanas. Si todavía no te has apuntado al campus, estás a tiempo de hacerlo porque ya está abierta la preinscripción. Te dejo aquí el enlace al formulario de la sede de Granada y el de la sede de Ceuta y si quieres saber que cosas hacemos en el campus, te invito a que visites la sección de ¿Quieres participar?

Las monitoras de Seré Ingeniera 2022 (I)

Como ya os adelantamos hace unos días por redes sociales, ya tenemos completo el equipo de monitoras que estarán con vosotras durante la IX edición del campus Seré Ingeniera 2022. Cada semana iremos descubriendo los nombres y las inquietudes que tienen para que vayáis conociéndolas. En este post queremos presentaros a la primera de ellas.

Ángela

Ángela, 3º año como monitora del campus tecnológico para chicas: Seré Ingeniera

Este año cumple 25 años y es graduada en Ingeniería Informática por la Universidad de Granada y además tiene el máster de profesorado en la especialidad de informática.

Ángela comenta que, lo que más le motiva de su formación es poder crear proyectos electrónicos con aplicaciones informáticas. Ha realizado proyectos como: un comedero automático para sus gatos controlado por un App, una aplicación para hacer el sorteo del amigo invisible de forma automática por email, una página web privada en la que puede ver cómo está su casa cuando se va de viaje…

Aunque le gusta mucho la programación, también le entusiasman otros valores sociales y por eso trabaja como profesora. Imparte todas las asignaturas relativas a las TIC (informática, robótica, tecnología) en secundaria, bachillerato y FP.

Una de sus pasiones es estar siempre actualizada en las nuevas tecnologías y, al mismo tiempo, también le preocupa el sesgo de género en el uso y profesión de las nuevas tecnologías. Por este motivo, Ángela colabora en varios proyectos que tienen el objetivo de hacer el software más accesible haciendo hincapié en la paridad de género.

Ángela junto a un grupo de chicas de Seré Ingeniera en la Noche Europea de l@s investigador@s

Algunos de estos proyectos son los que organiza la Oficina de Software Libre, como los campus “Seré Ingeniera” o “Infantil de Software Libre”; los talleres que organiza la Unidad de CulturaCientífica, por ejemplo la Feria de las Ingenierías, las charlas de la Mujer y la Niña en la Ciencia o la Noche Europea de l@s Investigador@s; o la diputación de Granada con los talleres sobre robótica, aplicaciones e impresión 3D para las nuevas generaciones. 

También participa en conferencias y talleres organizados por el Parque de las Ciencias de Granada para dar formación al profesorado en las TIC y por último aporta su ayuda en la dirección y desarrollo de actividades formativas del Club de Robótica de Granada.

12 de julio (Día 7): Apagafuegos

Quienes nos dedicamos al desarrollo de proyectos electrónicos con aplicaciones informáticas sabemos que nuestras creaciones siempre tienen pánico escénico. Esto ocurre cuando el proyecto funciona correctamente pero cuando se lo enseñas a alguien, al proyecto le entra una mezcla de miedo y vergüenza que hace que no funcione correctamente delante del público.

Por este motivo, siempre dejamos este último día para arreglar esos fallos de última hora que han surgido una vez nuestro proyecto se ha terminado y se lo hemos enseñado a nuestros amigos.  Hoy vamos a reparar lo que nos quede y prepararnos para la exposición que tendrá lugar…¡¡Mañana!!

8 de julio (Día 5): El mando infrarrojos

¡Buenos días! Empecemos con las soluciones a los mini-retos!! El archivo .ino donde se encuentra este código está en la sección Trabajo de Clase, en el apartado DÍA 4: Integración de componentes. Esta solución sería diseñando todos los miniretos en el mismo archivo, si los tenéis un poco diferentes, ¡no pasa nada! Es normal que vayamos haciendo ya los códigos diferentes.


void minireto_uno(){
  analogWrite(red, 255);
  analogWrite(green, 255);
  analogWrite(blue, 0);  
  delay(2000);

  analogWrite(red, 127);
  analogWrite(green, 0);
  analogWrite(blue, 255);  
  delay(3000);  

  analogWrite(red, 0);
  analogWrite(green, 0);
  analogWrite(blue, 0);  

}

void minireto_dos(){
  pantalla.borrar();
  pantalla.escribirBits(corazon);
  delay(2000);
  pantalla.borrar();
}

void minireto_tres(){
  pantalla.borrar();
  pantalla.escribirBits(corazon);  
  pantalla.escribirBits(FLECHA_DER, 8);
  pantalla.escribirBits(cruz, 16);
  pantalla.escribirBits(cuadricula, 24);  
  delay(2000);
  pantalla.borrar();
}

void minireto_cuatro(){
    pantalla.borrar();
    pantalla.escribirFrase("Hola");   //Posición por defecto 0
   
    for (int i = 0; i < nTonos; i++) {
      tone(pinBuzzer, tonos[i]);
      //realizamos una espera mientras suena el tono del tiempo determinado en la tabla tiempos para la posición i
      delay(tiempos[i]);    //Duranción del tono
      noTone(pinBuzzer);    //Apaga sonido
      delay(50);      //Pausa entre tonos
  }
 
    pantalla.borrar();
}

void minireto_cinco(){
    analogWrite(red,0);
    analogWrite(green,255);
    analogWrite(blue,0);
    delay(775);

    analogWrite(red, 255);
    analogWrite(green,255);
    analogWrite(blue,0);
    delay(775);    

    analogWrite(red, 255);
    analogWrite(green,0);
    analogWrite(blue,0);
    delay(775);  
   
    analogWrite(red, 0);
    analogWrite(green, 0);
    analogWrite(blue, 0);
}

void minireto_seis(){
    pantalla.borrar();
    pantalla.escribirFraseScroll("Mi nombre");
    delay(2000);
    pantalla.borrar();

}

void minireto_siete(){
    pantalla.borrar();
    pantalla.escribirFrase("Azul",4);
   
    analogWrite(red, 0);
    analogWrite(green,0);
    analogWrite(blue,255);
    delay(2000);
   
    analogWrite(red, 0);
    analogWrite(green, 0);
    analogWrite(blue, 0);
   
    pantalla.borrar();
}

void minireto_ocho(){    
  for (int i = 0; i < 5; i++) {
    digitalWrite(LED_BUILTIN, HIGH);  
    delay(500);                      
    digitalWrite(LED_BUILTIN, LOW);  
    delay(500);  
  }
    analogWrite(red, 152);
    analogWrite(green,223);
    analogWrite(blue,221);
   
    tone(pinBuzzer, 100);
    delay(1000);
    noTone(pinBuzzer);
    delay(1500);

    analogWrite(red, 0);
    analogWrite(green, 0);
    analogWrite(blue, 0);
}

void minireto_nueve(){
  String dia,mes;
  dia = '0' + String(7);
  mes = '0' + String(7);
  pantalla.borrar();
  pantalla.escribirFrase(dia+mes);

  for (int i = 0; i <= 7; i++) {
    // Se debe indicar: nMatriz, Fila y Columna. Utiliza la tabla proporcionada para entenderlo!
    pantalla.setLed(1,i, 0);

  }
  delay(2000);
  pantalla.borrar();
}

void minireto_diez(){
  pantalla.borrar();
  pantalla.escribirBits(sonrisa);
  delay(3000);
  pantalla.borrar();
}

void minireto_once(){
  pantalla.borrar();
  pantalla.escribirFrase("Rojo");
  analogWrite(red, 255);
  analogWrite(green,0);
  analogWrite(blue,0);
  delay(1500);
 
  pantalla.borrar();
  pantalla.escribirFraseCompacta("Verde");
  analogWrite(red, 0);
  analogWrite(green,255);
  analogWrite(blue,0);
  delay(1500);
 
  pantalla.borrar();
  pantalla.escribirFrase("Azul");
  analogWrite(red, 0);
  analogWrite(green,0);
  analogWrite(blue,255);
  delay(1500);

  analogWrite(red, 0);
  analogWrite(green, 0);
  analogWrite(blue, 0);
}

void minireto_doce(){
  String contador;
  pantalla.borrar();
  for (int i = 0; i < 6; i++) {
    contador = String(i);
    pantalla.escribirFrase(contador);
   
    digitalWrite(LED_BUILTIN, HIGH);  
    delay(500);                      
    digitalWrite(LED_BUILTIN, LOW);  
    delay(500);  


  }

  tone(pinBuzzer, 100);
  delay(1000);
  noTone(pinBuzzer);
  delay(1500);
}

Y ahora… ¡a conocer el último componente que nos queda! Vamos a usar un mando emisor de luz infrarroja y un sensor de luz infrarroja, a este conjunto también se le conoce como IR (infrared).

 ¿Cuántas cosas podéis nombrar que usen este tipo de señal? ¡En nuestro día a día usamos este tipo de comunicación varias veces! Esto nos va a permitir controlar nuestro proyecto a distancia. Hay que tener en cuenta que cada mando emite unos códigos diferentes según el dispositivo al que está dirigido. Pensad qué pasaría si queriendo encender la televisión se abre la puerta del garaje. Incluso no todos los mandos sirven para todas las teles. Por eso, cada mando emite unos valores que sólo su respectivo sensor conoce.

Lo primero que tenemos que hacer es conectar nuestro sensor y comprobar cuales son los valores que emite nuestro mando. 

Para eso usaremos el siguiente código, el cual podéis encontrar en el apartado Código base de la sección DÍA 5: Mando y sensor IR:

Al igual que pasaba con la matriz de leds, el sensor infrarrojos necesita una librería para comunicarnos fácilmente con estos componentes. Para descargar la librería IRremote.h tenéis que seguir los siguientes pasos en la aplicación de Arduino:

Pestaña programa->incluir librería->administrar bibliotecas->buscar el nombre

El código es muy simple: primero indicamos el pin de Arduino al que vamos a conectar el sensor infrarrojos (y al que apuntaremos con el mando); en void setup() se indica el comando necesario para establecer comunicación con el sensor; por último en void loop() tenemos líneas que mostrarán información en el monitor serie. Cada vez que se pulse un botón, aparecerá el código asociado a él. ¡Que no se os olvide abrir el Monitor Serie!

Una forma simple de esquematizar los valores obtenidos es rellenar la siguiente tabla cambiando los valores que obtengáis, los nuestros son:


const int KEY_UP = 24;
const int KEY_LEFT = 8;
const int KEY_OK = 28;
const int KEY_RIGHT = 90;
const int KEY_DOWN = 82;
const int KEY_1 = 69;
const int KEY_2 = 70;
const int KEY_3 = 71;
const int KEY_4 = 68;
const int KEY_5 = 64;
const int KEY_6 = 67;
const int KEY_7 = 7;
const int KEY_8 = 21;
const int KEY_9 = 9;
const int KEY_0 = 25;
const int KEY_ASTERISK = 22;
const int KEY_POUND = 13;

Vamos a ver a continuación un ejemplo de programa para ver cómo funciona el mando IR con su sensor. Tras la imagen comentaremos qué hace este código.

Al principio definimos todas las variables asociadas a los pines y códigos que están asociados al sensor IR. En void setup() simplemente activamos la comunicación con Arduino y con el sensor. El código en void loop() se puede ordenar de la siguiente forma:

1.       Se detecta si se ha emitido una señal desde el mando, y si ésta se ha entendido. En caso afirmativo su valor se guarda en la variable teclaPulsada.

2.       Para seleccionar una u otra acción en función del botón pulsado del mando vamos a usar la función switch(). Esta función permite dar una serie de opciones (“case”), y para cada una de dichas opciones se le asignará una tarea. Por tanto, únicamente se ejecutarán las líneas de código asociadas al botón escogido. Cuando puede que ninguna de las opciones se cumpla (o si quieres una acción por defecto), se usa en vez de “case”, “default”.

3.       Por último, reiniciamos el sensor IR para poder mandarle información nueva.

Y ahora… ¡a por los retos!

RETOS DIARIOS

Los retos para hoy son los siguientes:

Reto 1:

En este primer reto vamos a comprobar qué ocurre si apuntamos con otro mando, por ejemplo el de la televisión, al sensor IR que hemos empleado. Para ello, podéis usar el mismo código que hemos empleado para conocer los códigos que necesitábamos con el mando del proyecto. En este reto se entregaría la codificación que habéis obtenido con los dispositivos que tengáis por casa (captura del Monitor Serie, una tabla con los valores, ¡lo que veáis más cómodo!)

Reto 2:

Antes hemos hecho un código teniendo en cuenta qué ocurría si pulsábamos la tecla de “arriba” y “abajo”. Os proponemos que ampliéis esa idea al resto de teclas, ¿qué ocurre si pulso el número 1? En cada una de las teclas debéis añadir una funcionalidad. 

Nota: podéis usar las 12 funciones generadas en el reto del día anterior para ello.

9 de julio (Día 6): ¡Juntemos todo!

Hoy es un día muy importante, ¡vamos a acabar nuestro proyecto!

Pero antes vamos a resolver los retos. Tenéis la solución del segundo reto en Classroom, colocada en la sección DÍA 5: Mando y sensor IR.

RETO 1

La solución de esta reto no es ninguna concreta, a cada una os saldrán unos códigos diferentes. Preferimos ver qué resultados os han salido para ver que cosas más diferentes podemos obtener. ¿Nos los enseñáis?

RETO 2

Para este código, tened en cuenta que cada una habréis puesto funciones diferentes en teclas del mando diferentes. Tenedlo sólo como ejemplo y seguid usando vuestra configuración. Tampoco os lo adjuntamos completo, si no con unas cuantas teclas más, ¡para que os hagáis una idea!

Ya no te queda nada nuevo por conocer, simplemente vas a ver que eres capaz de crear un súper proyecto con todo el material que tienes.

El material básico que proponemos para el proyecto final consta de los siguientes componentes: Arduino uno, su cable de conexión, cables, un pulsador, el buzzer, la matriz de leds y los elementos IR. También puedes personalizarlo añadiendo el led RGB y el otro pulsador restante. El ejemplo que os vamos a poner es empleando todos los componentes salvo el segundo pulsador. Su función (activar la alarma) ahora la realizará la tecla “OK” del mando.

O si lo queremos con el led RGB

Para juntar TOOOOODOS los conocimientos que tenéis de estos días, hemos pensado que podéis unir las ideas del temporizador con las ideas que hemos hecho con el mando. La idea principal es ajustar el tiempo del temporizador mediante el mando, y una vez activada la alarma, que se muestre el contador disminuyendo en pantalla hasta que haga ¡BOOM!

  • Respecto al temporizador, hasta ahora sabemos como mostrarlo en pantalla y ver cómo disminuye. Nos falta saber escoger el tiempo mediante el mando IR
  • Por tanto, si la alarma la vamos a activar mediante el mando, ya sólo necesitamos un botón para desactivar la alarma. En caso de que no podamos o no nos apetezca usar el mando SÍ se puede usar el otro botón para activar el temporizador
  • Como complemento, no sólo nos vamos a centrar en el temporizador, sino que todos los botones los podéis a asociar a las teclas, tal y como hemos ido viendo en los retos. Esto puede hacer que se os ocurran cosas muy chulas para el proyecto final

NOTA IMPORTANTE: El proyecto final puede ser LO QUE QUERÁIS. Si no os apetece hacer el temporizador, con vuestras propias funciones pueden surgir cosas chulísimas. ¡Lo importante es la creatividad!

Nosotras, en esta clase vamos a explicar cómo unificar todo para añadir el temporizador, pero repetimos…¡Podéis hacer otras cosas!

¡Aquí va el vídeo de nuestra propuesta! Y el código lo tenéis en la sección DÍA 6: PROYECTAZO del Classroom (Trabajo de clase).

La idea sobre la que gira el código en void loop() es la misma que hemos ido viendo: comprobar si la alarma debe o no sonar en cada momento en función del temporizador y del pulsador, y al hacerlo que suene la secuencia de tonos prediseñada por nosotros. Con el mando vamos a incluir que si se pulsa la flecha de arriba o la de abajo se amplíe/disminuya el tiempo restante para la activación de la alarma (siempre y cuando esta esté desactivada). Si le damos a OK, la alarma se activará de la misma forma que cuando le dábamos con el pulsador.

La parte de definición de variables y el void setup() vais a ver que es una unión de todo lo que ya hemos visto. ¡Que no se os olvide incluir las librerías!

Las dos únicas líneas desconocidas son escribirIcono() y esperarYBorrar(). La primera de estas funciones se mostrará una flecha que va pasando por todos los leds, y posteriormente aparecerá un “Hola”. Con la segunda se borra esto último. Es decir, hemos pasado a formato función las acciones que ya hacíamos en códigos anteriores.


void escribirIcono(){
  // Escribir un icono como una secuencia de bits y diciédole al método qué icono y en qué columna situarlo
  pantalla.escribirBits(FLECHA_DER);  
  pantalla.escribirBits(FLECHA_DER, 8);
  pantalla.escribirBits(FLECHA_DER, 16);
  pantalla.escribirBits(FLECHA_DER, 24);
}
 
void esperarYBorrar(){
  delay(1000);
  pantalla.borrar();
}

Ahora veamos nuestra propuesta de void loop(). Primero comprobamos si la alarma está o no activada. En función de eso se activará el temporizador y todas sus consecuencias (sonido del buzzer, mensaje en pantalla…). El mando nosotras lo vamos a usar para incrementar/decrementar el tiempo que queremos esperar para la activación de la alarma mediante las flechas superior e inferior. Si le damos a OK, la alarma se activará de la misma forma que cuando le dábamos con el pulsador.

El código para mostrar los segundos (mostrarMinutosSegundos()) es el mismo que ya vimos. Tened en cuenta que las variables min y seg se han inicializado a valor 0 para que las configuréis con el mando.

Con respecto al led RGB, este no realiza una labor esencial, pero se puede dejar conectado, por ejemplo, con la idea de un semáforo en mente, se puede añadir al temporizador y que se ilumine en función del tiempo que quede para finalizar la cuenta atrás:


void semaforoColor(){
    if (segundos<3){
      analogWrite(red,255);
      analogWrite(green,0);
      analogWrite(blue,0);
      delay(775);
     }
    else if((segundos>=3)&&(segundos<=5)){
      analogWrite(red, 0);
      analogWrite(green,0);
      analogWrite(blue,255);
      delay(775);    
    }
    else if(segundos>5){
      analogWrite(red, 0);
      analogWrite(green,255);
      analogWrite(blue,0);
      delay(775);      
    }
}
 
//Cuando borremos la pantalla, también podemos apagar el led RGB con la función:
void apagarLeds(){
    analogWrite(red,0);
    analogWrite(green,0);
    analogWrite(blue,0);
}
 
//La función asociada al semáforo se puede usar dentro del temporizador:
void lanzarTemporizador(){
  while(minutos>0 || segundos>0){
    mostrarMinutosSegundos();
    if(segundos>0){
      segundos--;
    }else if(minutos>0){
      segundos=59;
      minutos--;
    }
    semaforoColor();
  }
}

¡IDEA!

Habéis diseñado 12 funciones que se pueden asociar a 12 teclas, más las tres que necesitas (flecha arriba, flecha abajo, Ok) para ajustar el temporizador… ¿No sobran teclas? ¡Sí! Dos más. Os proponemos que si queréis uséis las teclas asociadas a las flechas laterales (-> y <-) para incrementar/disminuir minutos. Es la misma idea que la funcionalidad de las flecha de arriba y de abajo para ajustar los segundos, pero para minutos.

¡Y esto sería todo! Habéis conseguido implementar un temporizador que puede ser ajustado a distancia. ¡Enhorabuena! Ahora si queréis podéis personalizar el proyecto añadiendo más funcionalidades y, por supuesto, visualmente. ¿Qué diseño y/o uso quieres darle a tu proyecto? ¡¡Estamos deseando ver vuestros proyectos!!

Podéis aprovechar el día para resolver todos los problemas que se hayan podido producir en los últimos días respecto a la integración de componentes. Por otro lado, si alguien ya tiene todos los componentes funcionando proponemos GUARDAR la versión que funciona (¡sacad fotos!) y hacer una copia en la que probaremos a diseñar algún minijuego. 

7 de Julio (Día 4): Diseñemos y mostremos el temporizador

¡Buenos días! Resolvamos los retos de ayer, los podéis encontrar en el apartado DÍA 3: Pantalla de leds dentro de Classroom en Trabajo de Clase (Solución retos 1, 2 y 3 matrices de leds).

Reto 1: Encontrar las figuras ocultas

La figura que resultaba de rellenar las casillas de la matriz es la siguiente:

Reto 2: ¡Diseña tu propio dibujo de leds!

Para este reto, al ser totalmente personalizable, nuestra solución no tiene mucho sentido. No obstante, os adjuntamos cómo podría quedar el código si se usan funciones:

  //RETO 2 : Diseñar un icono propio 

mostrarDibujo();

Si tenéis dudas o queréis mostrar vuestros iconos en clase, ¡podemos echarle un vistazo!

Reto 3: Icono que se desplaza

Reto 4 (opcional)

Hoy vamos a seguir con la idea de la clase anterior, unificando los conocimientos aprendidos y usando la mayoría de los componentes que hemos usado hasta ahora. Tened a mano los dos pulsadores, el buzzer y la matriz de leds.

La idea es seguir complementando el temporizador. En este caso se va a mostrar la cuenta atrás de activación de la alarma mediante la pantalla diseñada con matrices leds. Cuando termine la cuenta atrás, el buzzer comenzará a sonar. Para pararlo, tendremos que pulsar el primer botón. Si queremos que vuelva a comenzar la cuenta atrás, se deberá pulsar el otro botón restante, y así tantas veces queramos.

Para ello, antes del bucle asociado a que el buzzer emita sonidos, añadiremos una función asociada a generar un temporizador-contador que muestre el tiempo que queda en pantalla para que la alarma suene.  Ese tiempo será 10 segundos. Cuando pase dicho tiempo, se mostrará “BOOM” en pantalla y comenzará a sonar la alarma. La configuración del circuito es la siguiente:

Poco a poco vamos a diseñar el código. El primer paso es ir viendo qué variables son necesarias para inicializar los componentes (definición de pines y de variables que conozcamos):

Como veis, es unir las variables del código que ya tenemos hecho del buzzer, del pulsador y de las matriz de leds. Con respecto al void setup(), esta vez va a ser un poco más completo:

Al comenzar el programa, además de configurar los pines, se van a mostrar varias frases en la pantalla. Además, las dos funciones que hay asociadas a las interrupciones de los botones son las siguientes:

La función pararAlarma() como su nombre indica, la usaremos para controlar si queremos que la alarma continúe o no. Como cuando pulsamos el despertador por la mañana para que deje de sonar. La función activarAlarma() vendría a ser como el interruptor de la alarma, que dejamos por la noche activado para que por la mañana suene la alarma. Cuando pulsemos el botón asociado al pin pinActivarAlarma, según la interrupción la alarma se activará, y comenzará a funcionar el temporizador (que ahora después lo veremos).

Ahora vamos a analizar el void loop():


void loop() {
 
  //Si la alarma no está OFF, es decir, la alarma está activa, lanzamos el temporizador
  if (alarmaOFF == false) {
 
    lanzarTemporizador();
    pantalla.escribirFrase("BOOM");
    while (alarmaOFF == false) {  //Más eficiente si ponemos while(!alarmaOFF){...}
      sonarNota(nTonoActual);
      nTonoActual = (nTonoActual + 1) % 10;
    }
  }
}

¡Qué pocas líneas! Eso es porque cada vez sabemos programar de forma más eficiente y compacta. Veamos qué significan:

1.       Primero se comprueba si la alarma está activada o no. Se comprueba el valor de la variable alarmaOFF, que inicialmente la habíamos colocado como false. Ese valor cambiará cuando pulsemos el botón y se ejecute activarAlarma(). En el primer ciclo, directamente saltará la alarma sin pulsar ningún botón, al haber inicializado la variable con ese mismo valor

2.       Cuando ya se haya pulsado, se cumplirá la condición y pasará a ejecutarse la siguiente línea: lanzarTemporizador(). El código asociado a esta función lo vamos a ir construyendo poco a poco (¡podéis considerarlo como un reto!), es más a priori os lo vamos a dar como plantilla para que lo rellenéis:

La idea es intentar mostrar en la pantalla una cuenta atrás del número de segundos de la alarma. Es decir, que si la alarma se pone en 10 segundos en nuestra pantalla aparezca 00:10 -> 00:09 -> 00:08 -> 00:07 -> 00:06 -> 00:05 … 00:00.

Para representar estos minutos y segundos os hemos proporcionado dos funciones mostrarMinutosSegundos() y separadorDosPuntos() que se explicaron brevemente ayer (están copiadas de nuevo aquí abajo).

  • La función mostrarMinutosSegundos() utiliza las dos variables declaradas (minutos y segundos) para representar sus valores en la pantalla. Es una función especial porque si los valores de minutos o segundos son más pequeños que dos cifras, los muestra siempre con dos cifras. Por ejemplo, si el número de minutos es 0 y de segundos es 7, le pone un 0 delante a ambas variables para poder mostrar 00 y 07.
  • La función separadorDosPuntos() dibuja » : » sobre la matriz 1 (minutos) para visualmente separar los dígitos de los minutos de los segundos.

Para resolver este reto os proponemos tres pasos:

a) Estableciendo la variable minutos a 0. Controlar los valores que tiene la variable segundos (siempre entre 59 y 0) desde la función que hace la cuenta atrás llamada lanzarTemporizador(). Es decir, en cada vuelta debes decrementar la variable segundos y llamar a la función mostrarMinutosSegundos. Por otro lado, como la pantalla funciona un poco lenta, el tiempo de espera no es 1000 ms sino algo menos porque la pantalla tarda en representar los números. Nosotras estamos utilizando 775ms, ¡pero podéis cronometrarlo para que sea más exacto! Puedes hacerlo con el bucle for de la función cuentaAtrasEnSegundos() o bien, lo que te recomendamos, hacerlo con el bucle while() que se muestra en la plantilla, que es la estructura para resolver la siguiente parte de este reto….

b) ¿Qué ocurre si ponemos más de 59 segundos? Por ejemplo 1 minuto 30 segundos. La secuencia sería algo como 01:30 -> … -> 01:01 -> 01:00 -> 00:59 -> 00:58 . ¡Fíjate qué ocurre cuando los segundos llegan a 0! Es necesario decrementar el número de minutos y entonces poner a 59 los segundos… ¡Intenta programar cómo controlarías los minutos cuando los segundos llegan a 0!

¡IDEAS!

Idea: Cuando finalice la cuenta atrás, antes de la melodía puedes mostrar por pantalla algún mensaje de alarma o explosión.

Idea 2: Alrededor del delay() puedes encender y apagar el led RGB del color que más te guste.

En nuestro ejemplo (y para hacer pruebas), el temporizador está planteado para durar 10 segundos. Dicho tiempo va a ir disminuyendo hasta que llegue el contador a 0. Como la idea es que se muestre en la pantalla el tiempo, podéis ver que usa la función “String()”, que permite que la pantalla entienda los números.

¡Sigamos con el código principal!

3.       En nuestro diseño, cuando el temporizador finalice, en la pantalla aparecerá el mensaje: «BOOM»

4.       Por último, se comprueba si hemos pulsado el botón para que pare la alarma o no. En caso de que no, el buzzer comenzará a sonar mediante la función sonarNota(), y los tonos se irán cambiando. Esto ya lo tenemos diseñado de días previos.

Un resumen de todo lo que hemos visto lo tenéis en el siguiente vídeo.

Y ahora…¡a por los retos! Aunque antes un pequeño recordatorio:

GRABAD Y SACAD FOTOS de todo lo que queráis mostrar en el vídeo final. ¡¡Ya tenemos casi el proyecto y hoy pueden salir cosas muy chulas!!

RETOS DIARIOS

Hoy tenemos un reto bastante completo. En vez de sólo una misión, ¡vamos a tener 12! Van a ser mini-retos que vais a implementar como funciones propias. Así os haréis una idea de cómo se pueden integrar los componentes que vamos viendo. La lista de mini-retos en la siguiente:

  1. Encender el led durante 2 segundos de color amarillo y otros 3 segundos de color morado
  2. Mostrar un corazón en la matriz de leds
  3. Mostrar cuatro iconos diferentes cualesquiera en las matrices de leds, uno en cada matriz
  4. Mostrar en la matriz led el mensaje: “Hola” mientras suena una melodía de cuatro frecuencias diferentes, durando cada una 500 ms
  5. Diseñar un semáforo con el led RGB, mostrando primero el color verde, luego el amarillo y por último el rojo
  6. Mostrar vuestro nombre por la matriz de leds
  7. Mostrar en la matriz led la palabra “Azul” mientras el led está iluminado en color azul
  8. Hacer que el led del Arduino parpadee 5 veces, después que el led RGB se ilumine de vuestro color favorito mientras se emite un sonido constante por el buzzer
  9. Mostrar en la matriz de leds la fecha (XX/YY), siendo XX el día e YY el mes. Incluid ceros donde haga falta, así como una raya vertical | para separar ambas
  10. Dibujar una cara sonriente en la matriz de leds y que se borre pasados 3 segundos
  11. Iluminar el led de forma secuencial de color rojo, verde y azul, y a la misma vez que aparezca el nombre del color en la matriz de leds
  12. Generar un contador que empiece en cero y vaya hasta 5, de forma que cada incremento ocurra cuando parpadee el led interno de Arduino, y el número por el que vaya se muestre en pantalla. Finalmente, al llegar a 5 comience a sonar el buzzer con el sonido que queráis.

¡Ánimo! Son muchos pero son cosas que ya hemos visto con vosotras. Manda sobre estos retos el vídeo que quieras por telegram a @F3l1c13n74 para publicarlo en redes sociales. Si tienes twitter o instagram añádenos tu usuario junto con el vídeo en el mensaje de telegram para que te mencionemos en la cuenta de SereIngeniera y de la OSLUGR. ¡Recuerda subir todas las tareas al Classroom!