BETA Weblog cumple 13 años

¡Trece años! ¡Un montón de tiempo!

Y en estos trece años pasaron muchas cosas.

Hoy el entusiasmo que siempre tuve por la informática educativa y por la educación como herramienta transformadora, está herido de gravedad por las noticias que circulan sobre la profesión docente.

Los medios masivos que hoy nos gobiernan instalaron la idea de que los docentes mentimos y “hacemos política”, cuando hablamos hace unos meses del caso de Santiago Maldonado. Lo que yo pienso: “hacer política” es muy bueno. Es analizar la realidad, pensar sobre lo que ocurre.

Una vez que la gente piensa muy mal de todos nosotros, se acepta que nos bajen la jubilación, ya que tenemos una “jubilación de privilegio”. Lo que yo pienso: Todas las jubilaciones deberían ser altas.

También consultan de manera engañosa y fraudulenta sobre si “estarías de acuerdo con crear una universidad docente”…  Esta consulta instala en la población la idea de que cualquiera puede opinar sobre formación docente, sin necesidad de haberse formado en el tema. También brinda una falsa sensación de jerarquización, utilizando la palabra “universidad”. Lo que yo pienso: para jerarquizar a los docentes hay que mejorarles sus condiciones de trabajo primero y después dar alternativas de formación diferentes.

Por otra parte, nuestro presidente dice que las Universidades públicas van a tener que hacer un sacrificio… También se preguntó para qué hay “universidades por todos lados?”. Lo que yo pienso: acercar las universidades a la gente favorece la inclusión de muchísima genta para la que antes era imposible continuar los estudios luego del secundario.

En definitiva, quienes nos dedicamos a la educación estamos siendo atacados sistemáticamente por un conjunto de políticas y por una serie de conceptos repetidos por los medios de comunicación y por la opinión pública.

Nos queda la lucha, nos queda la unión. Ojalá logremos no caer tan bajo… Ojalá podamos frenar el retroceso.

Programemos un juego con Arduino

Hoy armé este pequeño ejemplo como base para un jueguito.

La idea del juego final es que haya una fila de leds y otra fila de botones. Como si se tratara de uno de esos juegos donde el cocodrilo abre la boca y hay que pegarle, cada vez que se enciende una luz, hay que pulsar el botón que le corresponde.

Aquí el código para un solo led y un solo botón. Hay que modificarlo para agregarle luces y botones:

  int nroalazar = 1000;

  int puntaje;

  int pulsado = 0;

  int antespulsado = 0;

  int var;

  const int boton = 12;

 


void setup() {

  // creamos variables para el juego

  pinMode(13, OUTPUT);

  pinMode(12, INPUT);

  Serial.begin(9600);

}

 


void loop() {

  // generamos un número al azar

  nroalazar = int(random(1000));

  digitalWrite(13, HIGH);

  if (digitalRead(boton) == HIGH) { pulsado = 1; }

  else { pulsado = -1; }

  puntaje = puntaje + pulsado;

  Serial.print("Puntaje? ");

  Serial.println(pulsado);

  Serial.print("Puntaje acumulado: ");

  Serial.println(puntaje);

  delay(nroalazar);

  digitalWrite(13, LOW);

  delay(1000);

}
Para ver el puntaje en la pantalla de la computadora, debemos activar el “Monitor serial”.

Un theremin rústico hecho con Arduino

Si hay un instrumento musical fascinante para mí, es el theremin.

Se trata de un instrumento que se ejecuta sin contacto físico. Aquí puede verse un video de cómo suena:Theremin en youtubeAsí que yo quise realizar una aproximación a la programación de un instrumento sin contacto, utilizando un sensor de distancia (ultrasónico) y un buzzer. Este fue el resultado:

Theremin de tres notas con Arduino

Tenemos el buzzer conectado al pin 9 (y a gnd), y el sensor ultrasónico HC-SR04 conectado así:

  • VCC – a 5v
  • TRIG – al pin 12
  • ECHO – al pin 13
  • GND – a gnd

Y este es el código:

#define PIN_TRIG 12
#define PIN_ECO 13
int buzzer = 9;
int numTones = 10;

int tones[ ] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440,466, 494};
                //DO, DO#, RE, RE#, MI, FA, FA#, SOL, SOL#, A, A#, B

void setup() {
  Serial.begin (9600);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECO, INPUT);
  pinMode(buzzer, OUTPUT);
}

void loop() {
//Este fragmento de código es para tomar la información del sensor ultrasónico HC-SR04
long duracion, distancia;
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

duracion=pulseIn(PIN_ECO, HIGH);
distancia=(duracion/2)/29;
//Aquí hacemos que la distancia se muestre en el "Monitor Serial"
Serial.println(distancia);

//En esta parte indicamos qué nota tocar de acuerdo a la distancia
switch (distancia) {
      case 0 ... 10:
        tone(buzzer, tones[1]);
        delay(500);
        break;
      case 11 ... 20:
        tone(buzzer, tones[5]);
        delay(500);
        break;
      case 21 ... 30:
        tone(buzzer, tones[8]);
        delay(500);
        break;
      default: 
        noTone(buzzer);      
        delay(500);
}
}

 

Utilización de un pulsador en Arduino

Para poder utilizar un pulsador con Arduino, empecé leyendo este posteo de luisllamas.es

En él se explica que hay dos maneras de conectar un pulsador:

  • En la primera, cuando el pulsador está libre se lee “high” y cuando está pulsado se lee “low”. Esta forma de conectar es llamada resistencia pull-down
  • En la segunda, cuando el pulsador no está presionado se lee “low”, y al presionarlo se lee “high”. Se llama resistencia pull-up

Como quiero utilizar el pulsador para encender un led, opté por la segunda opción.

pulsadorEntonces,

  • Conecto una pata del pulsador directamente a 5v.
  • La otra pata, va conectada a una resistencia y en la misma serie al pin 8.
  • Por otra parte, la resistencia se conecta a GND.

Y el código es:

int valor = 0;


void setup() {

  Serial.begin(9600);

  pinMode(8, INPUT);

  pinMode(13, OUTPUT);

  }

  

  void loop() {

    valor=digitalRead(8);

    if (valor == HIGH) {

      digitalWrite(13, HIGH);}

    else {

      digitalWrite(13, LOW);

    }

    delay (500);

    }

 

Piano de frutas sólo con Arduino

Siempre se ve el clásico ejemplo del piano de bananas. Cuando decidí probar hacer mi propio piano de frutas, encontré que todos los caminos me conducían a Makey Makey.

Sin embargo, buscando un poco más encontré en este posteo del blog untitled.es, la manera de hacer un piano de frutas sin utilizar Makey Makey.

Pagando con un twitt se pueden descargar el plano y el código para realizar un piano de frutas.

El código descargado comienza con esta hermosa leyenda:

/*
Realizado por http://Untitled.es 
Descubre nuevos tutoriales todas las semanas.

Puedes utilizar este ejemplo para lo que te apetezca: 
- Modificarlo 
- Venderlo 
- Leerlo en forma de cuento antes de dormir

Incluso, si decides añadirlo a tu proyecto, puedes compartir la fuente.
*/

Y después de varios intentos, cambiar esto y aquello, desconectar todo y empezar por una sola fruta, descubrí que mi primer piano de frutas no sonaba porque le había puesto una resistencia demasiado grande.

Finalmente, mi código de dos notas (y un led “testigo” en el pin 13) quedó así:

int nota1 = 261;

int nota2 = 1046; 

int zumbador = 8;

void setup() {

  Serial.begin(9600);

  pinMode(zumbador, OUTPUT);  

}

void loop() {

  Serial.print("Analog 1: ");

  Serial.println(analogRead(0));

  if (analogRead(0)<=1020) {

    digitalWrite(13, HIGH); 

    tone(zumbador, nota1);

    delay(100);

    noTone(zumbador);

    digitalWrite(13, LOW);

    }

  if (analogRead(1)<=1020) {

   tone(zumbador, nota2);

    delay(100);

    noTone(zumbador);

    }

    }

Cómo descargar una página web desde Linux

Como a todos/as quienes trabajamos en informática, me ocurre (ya van varias veces) que nos piden continuidad de un viejo trabajo pero resulta que el último administrador se fue dando un portazo y no hay manera de tener accesos como corresponde…

Entonces, debemos recurrir a nuestros mails, nuestra memoria… y finalmente, a alguna herramienta de descarga de una página web, para poder empezar con esa base.

Gracias a este post de GenBeta donde explican tres maneras de almacenar una página web para ver offline, pude retomar unos viejos interactivos.

Simplemente abriendo una terminal (en Debian) y poniendo:

wget --recursive --level=50 -p --convert-links http://lapaginaquequeresbajar.bla.bla

Esto descargará en forma “recursiva” todo el sitio hasta el nivel 50, convirtiendo los enlaces en locales.

En el mismo post se explica que si se quiere bajar todo el sitio se utiliza “inf” en lugar de un número, y se le agrega que espere 30 segundos entre una descarga y otra, para no sobrecargar el servidor:

--level=inf --wait=30

 

Actualizando mi versión de Linux

Bueno, tenía un Huayra viejito instalado por Euge Núñez hace unos cuatro años, y ya no daba para más.
Así que empecé por comprar una notebook con Windows y tuve que hacer allí la copia de seguridad. Luego, descargar un Debian y crear el pendrive instalable.
Aquí relato mis desventuras…
1) Siempre que intenté crear una red en casa fracasé. Esta vez me lo tomé en serio y seguí estos pasos: Configurar servidor Samba para transferir archivos entre Linux y windows

2) Las carpetas se veían y podía copiar un archivo. De todas formas me tiraba muchos errores de permisos hasta que empecé a editar los permisos de las carpetas en Linux, con el botón derecho, permisos, y le di todos los permisos a todos los usuarios y allí tuve éxito de verdad.

3) Luego busqué instrucciones para instalar linux. Según leí no era bueno actualizar por terminal porque lo que yo quería era cambiar de versión. Así que me descargué un Debian. Primero tuve que averiguar si mi computadora era de 32 o de 64 bits. Para ello utilicé el comando lscpu.

alumno@huayra:~$ lscpu
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian

4) No logré entender las instrucciones para  “Network Instal from a Minimal CD” (recomendada cuando uno tiene una buena conexión a Internet y va a realizar la instalación en una sola computadora), así que al final me bajé la versión live de 64 bits y luego de ejecutar Debian desde un pendrive elegí la opción “Instalar”. Todo anduvo de maravillas.

5) No funcionaba el sonido después de la instalación, y después de probar algunas cosas con los drivers, me di cuenta de que tenía desenchufados los parlantes… ja!

Un amigo, cuando le comenté lo del sonido me indicó cómo empezar con el tema. Estos comandos pueden ayudarte a detectar componentes:
lshw (hay que instalarlo)
lspci
lsusb

Estoy re contenta con mi computadora con Debian!

 

Otra de mis pasiones: la fotografía

Como si me faltaran pocos intereses, he aquí una disciplina que cada vez me gusta más: la fotografía.

Mi primer cámara fue una pocket rosa y violeta (“de nena”), como esta:

Fuente: Pinterest

Después siempre busqué la manera de tener una cámara, recuerdo especialmente la que tenía flash en cubo descartable:

Cámara de fotos de los años 80Fuente: video de Youtube

Hace un par de años me compré una Nikon Coolpix L340. Muy rápidamente me quedó chica, porque es completamente automática y no tiene visor! (no se ve nada cuando uno está al sol, por ejemplo). Es excelente, saca unas fotos maravillosas, pero pronto quise tener otra.

Nikon Coolpix

Fuente: Nikon Coolpix

Hasta aquí, las mejores fotos que saqué con cámaras y con celulares pueden verse en mi galería de Wikimedia Commons.

Esta es mi foto favorita tomada con la Nikon Coolpix, en el Tigre, en febrero de 2017:

Libélula

Clic aquí para ver la fotografía “libélula 1” en su mayor resolución.

Y esta otra no se queda muy atrás, tomada en Tandil (un saltamontes con otro insecto en el lomo):

Saltamontes con otro insecto en el lomo

Clic aquí para ver la fotografía del saltamontes con otro insecto en su mayor resolución

Bueno, como dije, esa cámara me quedaba chica, necesitaba visor y un manejo manual. Así que esta semana llegó a mis manos mi nueva Nikon D3400. ¡Qué emocionante! Todavía no aprendí casi nada de ella, pero la presento en público de esta manera:

Paquete de Mercado Libre

Caja de la cámara

Caja de la cámara - abierta

Cámara Nikon d3400Fuente de la imagen: Nikon

Servo motor 9g Tower Pro

Este es el esquema de conexiones del Micro servo 9g Tower pro

  • cable anaranjado – va a un pin de tipo PWD (los de la tilde de la eñe)
  • cable color marrón – GND (tierra)
  • cable color rojo – +5v

Con este código se lo puede hacer funcionar:

#include <Servo.h>

Servo servo1;

void setup() {
Serial.begin(9600);
servo1.attach(9);

}

void loop() {
servo1.write(0);
delay(1000);
servo1.write(90);
delay(1000);
servo1.write(180);
delay(1000);
}

Un semáforo para invidentes en Arduino

El próximo sábado se realizará el primer encuentro(*) del taller de Arduino en el Centro Cultural Tierra Violeta.

Además de ver un marco teórico acerca de qué es la robótica, la idea es hacer un semáforo con sonido, similar a los semáforos para invidentes que se instalaron ya en algunas ciudades.

[Ver video 1 en youtube] [Ver video 2 en youtube]

Ejercicio de Arduino: semáforo para invidentes

Para ello vamos a usar tres leds, uno verde, otro amarillo y uno rojo. Los tres con sus respectivas resistencias y su conexión a un pin digital en el Arduino.

Comparto aquí el código:

//Les ponemos nombre a los numeros a traves de variables
int verde = 13;
int amarillo = 8;
int rojo=12;
int buzzer=9;
// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(verde, OUTPUT);
  pinMode(amarillo, OUTPUT);
  pinMode(rojo, OUTPUT);
  pinMode(buzzer, OUTPUT); // Set buzzer – pin 9 as an output
}
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(verde, HIGH);   // encender verde
  digitalWrite(amarillo, LOW); // apagar amarillo
  digitalWrite(rojo, LOW); // apagar rojo
  for (int i = 0; i < 10; i++) {
       tone(buzzer, 500); // encencer sonido
       delay(200);               // esperar 200 milisegundos
       noTone(buzzer); // apagar sonido
       delay(100); // esperar 100 milisegundos
  }
  digitalWrite(verde, LOW);    // apagar verde
  digitalWrite(amarillo, HIGH); // encender amarillo
  digitalWrite(rojo, LOW); // apagar rojo
  delay(500);               // esperar medio segundo
  digitalWrite(verde, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(amarillo, LOW);
  digitalWrite(rojo, HIGH);
  delay(2000);               // esperar dos segundos
  digitalWrite(verde, LOW);    // // apagar verde
  digitalWrite(amarillo, HIGH); // encender amarillo
  digitalWrite(rojo, LOW); // apagar rojo
  delay(500);               // esperar medio segundo
}

(*) El sábado pasado realizamos un primer encuentro pero como coincidió la fecha con otros eventos tuvimos pocas asistentes. Decidimos repetir el encuentro número 1, y hacer otro día el encuentro 2.