¿Que te parecio mi blog?

martes, 25 de julio de 2017

Controlando el movimiento del LED con Joystick

Lo que necesitamos para realizar la práctica fue un joystick, con él se produjeron conexiones con la matriz y el Arduino. Primero se coordinó que los leds se mueva en las direcciones que daba el joystick, es decir que se mueva un espacio cada vez que se movía el joystick y el led de la matriz iba en la dirección que este lo indicara. Con la  Matriz 8x8 conectado al Arduino Mega y el uso del Joystick, se modificó el código base para que el movimiento del Led sea automática de tal manera que parta de un led específico y se mueva a la derecha solo y cuando mueva el control arriba, abajo, derecha o izquierda cambie de dirección. Cabe mencionar que si va a la derecha y el control lo posiciono a la derecha no deberá pasar nada y continuar.
 Para eso se necesitó la siguiente programación:
int ladoy = A0;
int ladox = A1;

int valor1;
int valor2;

int posX = 5;
int posY = 13;

void setup() {
  Serial.begin(9600);
  //PINES DEL 2 AL 19 COMO SALIDA  
  for (int j = 2; j <= 17; j++)
    pinMode(j, OUTPUT);

  //APAGO LOS PINES LOS POSITIVOS LES MANDO LOW Y LOS NEGATIVOS LES MANDO HIGH
  for (int j = 2; j <= 9; j++)
    digitalWrite(j, LOW);

  for (int j = 10; j <= 17; j++)
    digitalWrite(j, HIGH);

  digitalWrite(posX, HIGH);
  digitalWrite(posY, LOW);
}

void loop() {
  valor1 = analogRead(ladox);
  valor2 = analogRead(ladoy);
  Serial.print("X: ");
  Serial.print(valor1);
  Serial.print(" - ");
  Serial.print("Y: ");
  Serial.println(valor2);
  digitalWrite(posX, LOW);
  digitalWrite(posY, HIGH);
  if (valor1 > 700) {
    if (posX == 9)
      posX = 2;
    else
      posX++;//posX = posX + 1;
  } else {
    if (valor1 < 400) {
      if (posX == 2)
        posX = 9;
      else
        posX--;//posX = posX - 1;
    }
  }

  if (valor2 > 700) {
    if (posY == 17)
      posY = 10;
    else
      posY++;
  } else {
    if (valor2 < 400) {
      if (posY == 10)
        posY = 17;
      else
        posY--;
    }
  }
  digitalWrite(posX, HIGH);
  digitalWrite(posY, LOW);
 
  delay(250);
}



jueves, 22 de junio de 2017

BITACORA 2: Programacion del Arduino

 BASICA
La matriz era  positivo comun. Se usaron 8 resistencias y seis cables, protoboard
usando la tabla que nos dejo el mister en la practica uno de la matriz reaalizamos las conexiones con el codigo usado, realizamos la primera forma que era la basica de lineas en filas. Su conexion fue sencila. No fue dificil saber que pin  de arduino se conecta a pin de la matriz de 8x8.





PROGRAMACION
void setup() {
    for (int j=2; j<19; j++)
      pinMode(j, OUTPUT);
}

void loop() {
    for (int j=2; j<10; j++) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 10 ; k<18 ; k++) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(250);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
   }
}


CUADRADO
Modificammos el codigo usanod la funcion Loop y lo hicimos para que se forma un cuadrado prendiendo basicamente las filas y las columnas primeras y ultimas. El loop nos ayudo para que se repita y  continue. En pocas palabras consistia en prender los bordes, led por led formando un cuadrado. Se tenia que poner positivo= High y negativo= low para que de esta  manera se encienda y colocar Negativo=high y positivo=low para que se logre apagar.




PROGRAMACION
void setup() {
    for (int j=2; j<19; j++)
      pinMode(j, OUTPUT);
}

void loop() {
    for (int j=2; j<3; j++) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 10 ; k<18 ; k++) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
   }
   for (int j=3; j<10; j++) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 17 ; k<18 ; k++) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
}
for (int j=9; j<10; j++) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 16 ; k>9 ; k--) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
}
for (int j=8; j>2; j--) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 10 ; k<11 ; k++) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
}
}

CRUZADA
Este el mismo pero en vez son la laterales
Ya no teniamos que prender el de arriba sino que lo modificamos para que se prenda de cada fila el Led de forma diagonal prendiendo de  cada fila y columna un foco de  manera especifica para que salga la X. Lo mas dificil fue la programacion al identificar las filas y columnas y modificar su velocidad
Se comienza een un borde que pasa por en medio, asi mismo se repite por la otra esquina dando forma de un reloj de arena. En este proceso vimos una relacion de inversa ya que los negativas eran mas postivos mas 8.


PROGRAMACION
void setup() {
  for (int j = 2; j < 18; j++)
    pinMode(j, OUTPUT);

  for (int j = 2; j < 10; j++) {
    digitalWrite(j, LOW);
  }
  for (int j = 10; j < 18; j++) {
    digitalWrite(j, HIGH);
  }
}
void loop() {
  digitalWrite(2, HIGH);
  for (int k = 17 ; k > 9 ; k--) {
    digitalWrite(k, LOW);
    delay(250);
    digitalWrite(k, HIGH);
  }
  digitalWrite(2, LOW);

  for (int k = 10 ; k < 18  ; k++) {
    digitalWrite(k, LOW);
    digitalWrite(k - 8, HIGH);
    delay(250);
    digitalWrite(k - 8, LOW);
    digitalWrite(k, HIGH);
  }

  digitalWrite(9, HIGH);
  for (int k = 17 ; k > 9 ; k--) {
    digitalWrite(k, LOW);
    delay(250);
    digitalWrite(k, HIGH);
  }
  digitalWrite(9, LOW);

  int a = 1;
  for (int k = 9 ; k >=2  ; k--) {
    digitalWrite(k, HIGH);
    digitalWrite(k + a, LOW);
    delay(250);
    digitalWrite(k, LOW);
    digitalWrite(k + a, HIGH);
    a = a + 2;
  }
}


jueves, 20 de octubre de 2016

USO DEL SERVOMOTOR


El servomotor es un dispositivo pequeño,usamos el servo para usos educativos, posee un eje de rendimiento controlado que puede ser llevado a posiciones angulares al enviar una señal codificada. Son demasiado importante en la parte de robotica. Viene con muchos accesorios y para montarse unos brazos, este puede operar 180 grados.
El cable rojo es positivo y se conecta al pin 5Ven el arduino.
El cable negro es negativo y debe ir conectado al GND en el arduino o tambien puede ser en el protoboard.
El cable amarillo se lo conecta al pin 9 en el arduino o tambien a cualquier pin marcado como PWM. Este servira para que su señal vaya de 0 grados a 180 grados.
El uso del servo motor se lo ve presente en robotica, zoom de una camara de fotos, en puertas automaticas de un ascensor, en las impresoras para el aance y retoceso del papel, robot industriales, coches de radiocontroles,  timones, etc.
FOTOS DE PRACTICA:







PROGRAMACION:
#include <Servo.h>

Servo myservo;  //crea un referencia al servo motor

int pos = 0;    //posición inicial del servo
int positions[] = {0, 45, 90, 135, 180};  //posiciones (en grados) para moverse
int numPositions = 5; //cantidad de posiciones disponibles

void setup() 
{ 
  //control servo motor via pin 9
  myservo.attach(9, 650, 2350);
  Serial.begin(9600);
} 

void loop() 
{ 
  int i = 0;
  //cambia de posiciones
  for(i = 0; i < numPositions; i++) 
  {         
    pos = positions[i];

    //print debug output
    Serial.println("SETTING:");
    Serial.println(pos);

    //cambio de posicion del servo a una nueva
    myservo.write(pos); 

    //espero dos segundos
    delay(2000);
  }
}

sábado, 20 de agosto de 2016

Proyecto Final

  • RESUMEN DE CONSTRUCCIÓN DEL ROBOT MOVIL CONTROLADO POR BLUETOOH.
Se ejecutó la edificación mecánica del carro o auto “Huerto Kart” pero este adquirirá un manejo mediante control remoto vía bluetooth.  Se usó el Puente H para lograr controlar los moto reductores, teniendo ventaja de invertir el giro de los motor reductores. Se lo ensambló con cada uno de los materiales y elementos necesarios para ello (llantas, Motor reductores, Puente H, Batería, Bluetooth y entre otros) Usamos el Arduino ya que es esencial para  nuestro proyecto, es la base para el proceso de elaboración de nuestro auto. Solo falta poderlo a andar. Con todo esto podemos contralar los movimientos que vayamos a realizar, giro o desplazamientos.

- Protoboard

- Llantas

- Cinta

- Motor reductor

- Arduino Uno

- Módulo Bluetooth HC05

- Cables Macho

-Cables Hembra

- Puente H

-Resistencias

- Batería

  • FOTOS Y VIDEO DE LA CONSTRUCCIÓN Y PRUEBAS DEL PROYECTO
    .

sábado, 6 de agosto de 2016

MODULO DE BLUETOOH HC 05

  • DEFINICIÓN DE MODULO BLUETOOH HC 05.
Se denomina a un componente electrónico que nos facilita conectar por medio de bluetooth otro dispositivo eléctrico  y facilita las comunicaciones entre equipos, no hace uso de conectores o cables.
  • PINES DE CONEXIÓN DE HC 05.
Los HC-05 normalmente tienen dos pines extra , además de estar TX, RX, VCC, GND, estos son marcado como “Key” y “State”. El pin “key” es preciso para ingresar al modo de comandos AT en el módulo HC-05 (pin 34).
  • COMO SE CONECTA EL HC 05 AL ARDUINO.
Como vemos en la imagen, asi se conecta el HC 05 al Arduino:
Bluetooth HC-06 y HC-05 Android – Arduino
  • PROGRAMACIÓN BÁSICA DEL HC 05 EN EL ARDUINO.
Con su Programacion
int state = 0; // Variable lectrura serial

//motor derecho
int IN1D = 4;
int IN2D = 5;
//motor izquierdo
int IN3i = 6;
int IN4i = 7;
 
void setup() {
    Serial.begin(9600);
    pinMode(IN1D, OUTPUT);
    pinMode(IN2D, OUTPUT);
    pinMode(IN3I, OUTPUT);
    pinMode(IN4I, OUTPUT);
}
 
void loop() {
  //si el modulo DE BLUETOOH manda dato, guardarlo en estado.
  if(Serial.available() > 0){
    state = Serial.read();
  } // esta parte del código es para solo 1 Carácter o Unidad. 
 
  // si el estado es F avanza


  if (state == 'F') {
    digitalWrite(IN1D, HIGH);
    digitalWrite(IN2D, LOW);
    digitalWrite(IN3I, HIGH);
    digitalWrite(IN4I, LOW);
    Serial.println("avanza");
  } else {
    //si el estado es B retrocede
    if (state == 'B') {
      digitalWrite(IN1D, LOW);
      digitalWrite(IN2D, HIGH);
      digitalWrite(IN3I, LOW);
      digitalWrite(IN4I, HIGH);
      Serial.println("atras");
    }
  }
}
  • FOTOS DE SU PRÁCTICA CON EL HC 05.

viernes, 22 de julio de 2016

CONEXIÓN DE MOTOR REDUCTOR Y PUENTE H.

  • DEFINICIÓN DE MOTOR REDUCTOR.
Motorreductores son  elementos mecánicos muy adaptados para el accionamiento de todos los tipos de máquinas y aparatos de uso industrial,  con el fin u objetivo reducir su velocidad de una forma eficiente y segura, este tiene un motor acoplado directamente.

  • CUALES SON LOS COMPONENTES DE UN REDUCTOR EN EL MOTOR.

  • COMO SE CONECTA UN MOTOR REDUCTOR.
Para la inversión de giro del motor se emplea el driver de corriente L293D, soporta una corriente de 1ª. Los pines 2 y 3 del arduino se encargan del manejo de la velocidad y sentido de giro del motor, y dependiendo el sentido del giro, se comprueba la intensidad mediante un led, y los pulsadores conectados a los pines 4 y 5.
  • DEFINICIÓN DEL PUENTE H.
Ese denomina puente H, a un circuito electrónico con el objetivo de ceder a un motor eléctrico DC girar en ambos sentidos, adelantar y retroceder. También llamado puente en H.

  • FUNCIONES DEL PUENTE H.
El puente H se usa para invertir el giro de un motor y puede usarse para frenarlo.
  • COMO SE CONECTA UN PUENTE H (L298N) 
Empleando una señal positiva en la entrada AVANCE se hace llevar al transistor Q1. La corriente de Q1 corre por las bases, de Q2 y Q5, creando que el terminal a del motor tome un positivo y el terminal b el negativo (tierra). Si se usa señal en la entrada RETROCESO, se lleva a conducir al transistor Q6, que cierra su corriente por las bases, de Q4 y Q3.
  • 1 placa Arduino UNO R3 con su cable. 
  • 1 moto reductor con su respectiva rueda 
  • 1 protoboard de 830 puntos 
  • 1 servo motor HS-311 
  • 1 puente H L298N motor drive controller 
  • 8 cables jumper macho-macho
  • 2 pulsadores/botoneras
  • Resistencias , entre otros.

jueves, 14 de julio de 2016

Trabajo en parejas: Potenciometro y botoneras

En esta clase, forme grupo con mi compañera  Gabriela Zambrano para hacer trabajo en parejas, utilizando nuevamente una botonera y un potenciometro. La función que le debíamos dar a la botonera era que al ser pulsada realice una secuencia y al soltarlo se enciendan los leds, mientras que el potenciometro se debía encargar de regular la rapidez de los leds. En la primera secuencia los leds debían encenderse en serie continua mientras que una fila iba en dirección de izquierda a derecha, la otra fila de diodos leds se dirigía hacia la dirección opuesta y en la otra secuencia se debían encender la mitad de leds de cada fila mientras la otra mitad se encontraban apagadosy despues al reves todo esto con la ayuda del potenciometro.