Mostrando entradas con la etiqueta arduino. Mostrar todas las entradas
Mostrando entradas con la etiqueta arduino. Mostrar todas las entradas

lunes, 24 de febrero de 2014

Video final - "antis" en el CCRecoleta

Luego de unos meses de pasada la muestra, finalmente concreté la selección del material de video para la edición final. Implicó bastante trabajo, y aquí está el resultado:


Editando el material y viendo todos mis registros pude comprobar que sin haberlo buscado tan directamente pude llegar a aquellos espectadores que me interesan para mis obras en general: los niños. Por su frescura, dinamismo y capacidad nata de descartar sin vueltas ni rodeos aquello que les causa desagrado.

Obra y Edición con software libre:
Robótica: "arduino IDE" y "Fritzing"
Gráfica: "Inkscape" 
Créditos y títulos: "Gimp" 
Edición de video no lineal: "Kdenlive"
Resolución final: HD 720px 16:9, 30fps
Sistema operativo: "Linux Mint, Nadia 14"

martes, 29 de octubre de 2013

131029 - la matrix detrás de antis

Realicé varias pruebas con electrónica analógica utilizando temporizadores monostables 555 y un puente h L293D pero no hubo caso, no lograba hacer que funcionara correctamente, así que, siguiendo el consejo de Lucio Vega opté por utilizar la placa arduino y he aquí el resultado:

conectando por USB a la computadora

alimentando todo con el transformador 9VCC y un conversor de voltaje 7805



Código Arduino:
/*
Presionando el botonA gira durante 10 seg en un sentido y, presionando
el botonB gira durante 10 seg en sentido opuesto.
Si en algun momento antes de que termine el plazo de uno u otro boton
se presiona el otro, se interrumpe la accion por el nuevo comando que durara
10 seg salvo que se presione el otro boton, luego de transcurrido el tiempo
el motor se apaga hasta una nueva orden
*/



int MotorPinA = 2;
int MotorPinB = 3;
int BotonA = 4;
int BotonB = 5;
int VarBotonA;
int VarBotonB;

//Temporizador
unsigned long actual;
unsigned long previo;
int eventoTiempo;

void setup(){
  pinMode(MotorPinA,OUTPUT);
  pinMode(MotorPinB,OUTPUT);
  pinMode(BotonA,INPUT);
  pinMode(BotonB,INPUT);
 
  //Temporizador
  previo = 0;
  eventoTiempo = 0;
 
}
void loop(){
  actual = millis();
 
  if (actual - previo > 10000){
    previo = actual;
    eventoTiempo = 1; 
  }
 
  VarBotonA = digitalRead(BotonA);
    if (VarBotonA == HIGH){
      digitalWrite(MotorPinA,HIGH);
      digitalWrite(MotorPinB,LOW);
    }
     if(eventoTiempo == 1){
        digitalWrite(MotorPinA,LOW);
        digitalWrite(MotorPinB,LOW);
        eventoTiempo = 0;
     }
     
   VarBotonB = digitalRead(BotonB);
     if (VarBotonB == HIGH){
       digitalWrite(MotorPinA,LOW);
       digitalWrite(MotorPinB,HIGH);
     }
      if(eventoTiempo == 1){
        digitalWrite(MotorPinA,LOW);
        digitalWrite(MotorPinB,LOW);
        eventoTiempo = 0;
      }
}

lunes, 12 de agosto de 2013

probando arduino y processing

ya modifiqué el código en arduino para controlarlo desde processing y aun nada... sólo errores en la compilación que no entiendo qué significan. Más tarde seguiré probando a ver si lo logro.

Ahora si... "lento pero seguro"... bueno y, no tan seguro también!

Con comunicación serial a 9600 bps anda lento y a 115200 bps (o intermedias) anda igual de lento... porqué será???

domingo, 9 de junio de 2013

serruchoDinamo - 1° dispositivo {sonoluz III}

Luego de varias horas probando cosas finalmente nace el primer "robot" de iluminación mínima.

Armado sobre el carro de los cartuchos de una impresora a chorro de tinta posee dos motores:
1 motor de corriente contínua común que es controlado digitalmente por Arduino.

1 motor paso a paso que actúa de dínamo y alimenta los Leds pues el eje del rotor está colocado de forma tal que ejerce fricción sobre la correa original de la impresora y al girar transforma la energía cinética en eléctrica.


Código de programación:


 
/*
 Motor_PWM_Pote - Original de Miguel Grassi con Modificaciones.

 Hace girar un motor de CC mediante un Puenta H conectado a los pines digitales
 7 y 8 controlando la velocidad por PWM sobre el pin Enable del puente H en base
 a la lectura de un potenciometro conectado al pin analogico 5

 Dos leds, uno rojo y otro amarillo indican el sentido de giro del motor y con ello,
 el de desplazamiento del carro que contiene los Leds.
  */

int ledRed =  13; // LED conectado al pin digital 13
int ledYellow = 12; // LED conectado al pin digital 12

int M1_A = 7; // Motor 1 entrada A
int M1_B = 8; // Motor 1 entrada B
int M1_Enable = 9; // Motor 1 Enable
int Pote = 5;      // Lectura del Potenciometro

void setup(){
// Inicializa los pines de salida digital y entrada analogica para el pote
  pinMode(ledRed, OUTPUT);
  pinMode(ledYellow, OUTPUT); 
  pinMode( M1_A, OUTPUT);    
  pinMode( M1_B, OUTPUT);    
  pinMode(M1_Enable, OUTPUT);    
  pinMode(Pote, INPUT);    
}

void loop(){
  digitalWrite(ledRed, HIGH);    // enciende el led Rojo
  digitalWrite( M1_A, HIGH);     // Valores ON en A y OFF en B simultaneamente
  digitalWrite( M1_B, LOW);      // hacen girar el motor desplazando el carro al tope contrario
  int valorPote = analogRead(Pote); // Lee el valor del potenciometro
  int valorVeloc =  map(valorPote, 0, 1023, 0, 255); //Convierte un valor entre 0 y 1023 (10 bits) al rango 0-255 (8 bits)
  analogWrite(M1_Enable,valorVeloc);    // y establece la velocidad del motor con ese valor
 
  delay(750);  // 750 milisegundos en los que esta encendido el motor
  digitalWrite(ledRed, LOW);  //apaga el led Rojo
  digitalWrite(M1_Enable,LOW);  //apaga el motor
   
  delay(200);  // 200 milisegundos de pausa, donde el motor permanece apagado
 
  digitalWrite(ledYellow, HIGH);  //enciende el led amarillo
  digitalWrite(M1_A, LOW);  // Valores OFF en A y ON en B simultaneamente
  digitalWrite(M1_B, HIGH);  // hacen girar el motor desplazando el carro en direccion a el
  analogWrite(M1_Enable, valorVeloc);  //establece la velocidad del motor indicada anteriormente
 
  delay(450);  //450 milisegundos de funcionamiento del motor en esa direccion
  digitalWrite(ledYellow, LOW);  //apaga el led amarillo
  digitalWrite(M1_Enable,LOW);  //detiene el motor
 
  delay(800);  //800 milisegundos de pausa para que arranque otra vez en direccion opuesta
 

}


la única diferencia con la realidad es que utilicé un "puente h - L293D", en lugar del que figura en fritzing