Pestañas

jueves, 22 de abril de 2021

Proyecto P.C. Puerta automática

En este ejemplo la puerta comienza cerrándose esté donde esté de su recorrido. Cuando esta cerrada se pone a la espera de pulsar el botón de inicio. Una vez pulsado comienza a abrirse. Cuando llega al final del recorrido se para durante 5 segundos y se comienza a cerrar. Cuando llega al final se para hasta que se vuelva a pulsar el botón. Se han añadido LEDs que indican cada movimiento que realiza:

  • LEDrojo: cerrada
  • LED verde: abierta
  • LED ambar con flecha izquierda: cerrando
  • LED ambar con flecha derecha: abriendo

Hemos utilizado Arduino NANO y puente H de motores L298N




Conexiones


Código Arduino

//conexiones de los LEDs:
int rojo = 7;
int LEDabriendo = 10;
int LEDcerrando = 6;
int verde = 12;
//conexiones motor: a los pines 2 y 3
//pulsador inicio al pin 5
int inicio = 5;
//finales de carrera
int FCcerrado = 9;
int FCabierto = 8;
//
bool activo = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(rojo, OUTPUT);
  pinMode(LEDabriendo, OUTPUT);
  pinMode(LEDcerrando, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(inicio, INPUT);
  pinMode(FCcerrado, INPUT);
  pinMode(FCabierto, INPUT);
  //Llevamos la puerta a cerrar para iniciar con la puerta cerrada
  cerrando();
}

void loop()
{
  //cuando pulsamos el botón de inicio se abre la puerta
  //hasta que se pulsa el final de carrera de abierto
  //espara 5 segundos y se cierra


  if (digitalRead(inicio)) {
    Serial.println("inicio pulsado");
    abriendo();
    delay(5000);
    cerrando();
  }
}

void cerrado() {
  Serial.println("cerrado");
  digitalWrite(rojo, HIGH);
  digitalWrite(LEDabriendo, LOW);
  digitalWrite(LEDcerrando, LOW);
  digitalWrite(verde, LOW);
  //motor parado
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
}

void abierto() {
  Serial.println("Abierto");
  digitalWrite(rojo, LOW);
  digitalWrite(LEDabriendo, LOW);
  digitalWrite(LEDcerrando, LOW);
  digitalWrite(verde, HIGH);
  //motor parado
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
}

void abriendo() {
  Serial.println("abriendo");
  while (digitalRead(FCabierto) == 0) {
    digitalWrite(rojo, LOW);
    digitalWrite(LEDabriendo, HIGH);
    digitalWrite(LEDcerrando, LOW);
    digitalWrite(verde, LOW);
    // motor abriendo
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
  }
  abierto();
}

void cerrando() {
  Serial.println("cerrando");
  while (digitalRead(FCcerrado) == 0) {
    digitalWrite(rojo, LOW);
    digitalWrite(LEDabriendo, LOW);
    digitalWrite(LEDcerrando, HIGH);
    digitalWrite(verde, LOW);
    // motor cerrando
    digitalWrite(2, LOW);
    digitalWrite(3, HIGH);
  }
  cerrado();
}

miércoles, 21 de abril de 2021

Proyecto P.C. "Código golpe"

Basada en este vídeo del El Hormiguero" de Antena 3, realizamos un programa que captura una secuencia de golpes que programemos y la utiliza para abrir una puerta



Conexiones



programa para arduino

Dada la complejidad del programa se realizará en Arduinoblocks

Iniciamos creando una matriz patron donde almacenaremos la secuencia para abrir la puerta y otra golpes donde se irán almacenando la secuencia que se realice cuando se quiera abrir la puerta. Se compararán las dos matrices y si coinciden la puerta se abrirá.

La función grabar secuencia va almacenando la secuencia que queremos que sea nuestro patrón. Previamente borramos con clear patron el anterior e iniciamos la grabación con inicio patron. El patrón es una secuencia de 10 "golpes/no golpes" distanciados 200 ms cada uno. Una vez que se comienza a golpear cada 200 ms se carga un golpe o un silencio.


Las funciones inicio e inicio patron nos sirven para que el programa espere a que comencemos la secuencia de golpeo, que siempre debe iniciarse con el primer golpe.


La función loop (bucle) comienza una vez que hemos iniciado la secuencia de golpes para abrir la puerta. Cuando se ha completado la secuencia de 10 golpes/silencios cada 200 ms, La compara con el patrón. Si es correcta hacemos sonar un zumbador, abrimos una puerta, ... Si no es correcta no hace nada y vuelve a esperar otra secuencia de golpes.
Y borramos la matriz de golpes para que se vuelva a comenzar.



Las siguientes funciones sirven para borrar la matriz golpes (clear golpes) y la matriz patron (clear patron)
Para que podamos visualizar el patrón y tener un mayor control hemos creado la función imprimir, que imprime la secuencia de golpes que estamos haciendo y la función imprimir secuencia que imprime el patrón que hemos creado.

Por último la función comparar compara las dos matrices y si son iguales nos devuelve la variable abrir, que será 0 si no son iguales y 1 si son iguales.



martes, 20 de abril de 2021

Pensamiento Computacional: ¿Qué debemos saber del Bloque 3?

Esto es lo que debemos controlar del Bloque 3

  • Entradas analógicas (potenciómetro): Si el valor del potenciómetro es mayor de un determinado umbral un LED se enciende y si es menor, se apaga.
  • Entradas y salidas analógicas: Controlamos la luminosidad de un LED utilizando un poteciómetro, A medida que variamos el potenciómetro va variando la intesidad luminosa del LED.
  • Cambiar el LED por un piezo y hacer variar la frecuencia del sonido con el poteciómetro
  • Hacer que un LED vaya aumentando su brillo (utilizando un bucle FOR) y cuando llega al máximo ir decrementando hasta cero y repetir el proceso.
  • Utilizamos un sensor de luz. Dependiendo de la luz que le llegue al sensor hacemos lucir un LED o no.
  • Cambiamos el LED por un piezo y a medida que le llega más o menos luz el piezo varia su frecuencia. (Theremin)
  • Utilizar el puerto serie. Imprimir en el puerto serie la frase "Hola mundo"
  • Imprimir en el puerto serie el valor de lectura de un sensor de luz
  • Hacer que se encienda un LED cuando ponemos H en el puerto serie y se apaga con L

domingo, 18 de abril de 2021

Bloque 4: Robots

Una vez que hayas realizado los apartados de la plataforma del bloque 4, Realiza estos ejercicios:

  • Simulamos una barrera, puerta, etc controlada por un sensor de luz. Controla la puesta en marcha de un motor dependiendo de la luz ambiental (de modo que abra una barrera, puerta, etc en un proyecto futuro)
  • Utiliza dos bototes para que la puerta se vaya abriendo a medida que pulsemos un botón y se cierre con otro.
  • Con dos motores de 180º simula un robot con dos articulaciones. Mira este video

puedes controlarlo primero programando los movimientos que tu quieras y después puedes utilizar dos botones para decirle que gire en sentido horario o antihorario a cada motor
  • Con dos motores de movimiento continuo simula un coche que se mueve hacia adelante cuatro segundos, hacia atrás otros cuatro, que gira a la derecha 4 segundos y y otros 4 a la izquierda. Pon cada tipo de movimiento en una función distinta: 
                           void adelante(){
                                    }
                           void atrás(){
                                    }
                           void izquierda(){
                                    }
                           void derecha(){
                                    }

jueves, 15 de abril de 2021

Práctica en GIMP: fotomontaje

Después de aprender a manejar las distintas herramientas y opciones que nos ofrece GIMP vamos a realizar una práctica un poco más complicada.
Quiero que hagáis un fotomontaje utilizando fotos tomadas por vosotros o de internet. Recordad que para determinados efectos o retoques la calidad de la imagen es muy importante. Procurad que, si utilizáis varias fotos en el mismo fotomontaje, su calidad sea semejante.

Os pongo un ejemplo :

Ranaranja
Algunos de alumnos de otros años




Algunos más sacados de internet




JACK OLIENHOEK


ALEXANDRO DIDDI: