ARDUINO

combinacion de programacion y electronica con arduino Hadware y arduino Software basado en el sistema operativo libre UBUNTU

martes, 22 de diciembre de 2015

Avance1 Scratch

Objetivo:
Desarrollar el primer avance de la multimedia teniendo en cuenta el diseño y la introdución del mismo

En este primer avance se utiliza una sensores mensajes y sincronizacion de dialogos para haci tener una interaccion con el  niño o usuario.

1er Avance

Podcast Cuarta Entrega

jueves, 17 de diciembre de 2015

Cuarta Entrega




Objetivo:
Implementar el receptor IR como componente de mando para el prototipo y así codificar instrucciones de control para el mismo .


Receptor IR
Un sensor de infrarrojos (IR) está compuesto básicamente por un LED que emite pulsos de luz infrarroja siguiendo un patrón determinado que permite al dispositivo conocer la función a realizar.
Para poder controlar nuestro Arduino mediante un mando a distancia y un sensor IR, deberemos conocer el protocolo interno de comunicación del mando.

Logros y Dificultades : 
La implementación  de el receptor IR tuvo una dificultad al momento de la sincronizacion con los demas dispositivos  ya  que no se ejecutaba al momento realizar mandos desde el control remoto.
Se pudo realizar  la sincronización  aplicando metodos dentro de el void loop haciendo que el mismo se ejecute en primer plano.



CODIGO:

#include 

#include 

#define IRPIN 8   // pin al que conectamos el receptor de IR

static int aux = 1;

NECIRrcv ir(IRPIN) ;

void setup()

{

  Serial.begin(9600) ;

  Serial.println("NEC IR codigo recepcion") ;

  ir.begin() ;

}

void loop()

{

  unsigned long ircode ;

  while (ir.available()) {

    ircode = ir.read() ; 

    Serial.println(ircode) ;

  }


jueves, 10 de diciembre de 2015

Tercera Entrega Podcast

Sensores y sincronizacion

Tercera Entrega

Implementación de sensores y sincronizacion de componentes
En esta tercera entrega se realizara la implementación de un segundo sensor ultrasonico  que nos permitirá captar objetos a una altura de 5 a 8 cm
En esta segunda entrega  el objetivo sera la sincronizacion de componentes en si el principal captar obstáculos en una altura de 2 cm  a + de 10 cm y su distancia para evadir los obstáculos es de 50 cm. 

La conexión de este dispositivo se realiza  de la siguiente manera  y su codificación la dejaremos en la parte de abajo 
Codificación y sincronizacion de componentes 

#include 

#include 


#define MOTOR_1_FORWARD 5

#define MOTOR_1_BACK 6

#define MOTOR_2_FORWARD 3

#define MOTOR_2_BACK 4


#define TRIG 12

#define ECHO 11


#define TRIG2 8

#define ECHO2 9

#define OBSTRACLE_DISTANCE2 50.0

#define TURN_DELAY2 200


#define HEAD_SERVO 2


#define OBSTRACLE_DISTANCE 50.0

#define TURN_DELAY 200



#define LOG false


Ultrasonic ultrasonic(TRIG, ECHO);


Ultrasonic ultrasonic2(TRIG2, ECHO2);


Servo headServo;


int servoAngle = 90;

int angleStep = 30;


float distance = 0;

float distance2 = 0;

void setup()

{

  pinMode(MOTOR_1_FORWARD, OUTPUT);

  pinMode(MOTOR_1_BACK,    OUTPUT);

  pinMode(MOTOR_2_FORWARD, OUTPUT);

  pinMode(MOTOR_2_BACK,    OUTPUT);

 

  stopMove();

 

  headServo.attach(HEAD_SERVO);

 

  if(LOG) Serial.begin( 9600 );

}


void loop()

{

 

 updateHeadAngle();

 

  checkDistance();

 checkDistance2();

 moove();

 moove2();

 

  delay(10);

}


void checkDistance()

{

  distance = ultrasonic.Ranging(CM);

  if(LOG) Serial.println(distance);

}


void checkDistance2()

{

  distance2 = ultrasonic2.Ranging(CM);

  if(LOG) Serial.println(distance2);

}

void moove()

{

  if( distance > OBSTRACLE_DISTANCE )

  {

    if(LOG) Serial.println("FORWARD");

   

    goForward();

    delay(TURN_DELAY);

  }

  else

  {

    stopMove();

   

    checkObstracle();

  }

}


void moove2()

{

  if( distance2 > OBSTRACLE_DISTANCE2 )

  {

    if(LOG) Serial.println("FORWARD");

   

    goForward();

    delay(TURN_DELAY);

  }

  else

  {

    stopMove();

   

    checkObstracle2();

  }

}


void checkObstracle()

{

  int obsLeft  = 0;

  int obsRight = 0;

 

  // Count the obstacles from left and right side

  for(servoAngle = 0; servoAngle <= 180; servoAngle += 10)

  {

    headServo.write(servoAngle);

    delay(10);

   

    checkDistance();

    if(distance < OBSTRACLE_DISTANCE && servoAngle < 90) obsLeft++;

    else if(distance < OBSTRACLE_DISTANCE) obsRight++;

  }

 

  if(LOG) Serial.print("TURN");

   

  if(obsLeft && obsRight)

  {

    goBack();

   

    delay(TURN_DELAY * 2);

   

    if(obsLeft < obsRight) goLeft();

    else goRight();

   

    delay(TURN_DELAY);

  }

  else if(obsRight)

  {

    goLeft();

   

    delay(TURN_DELAY);

  }

  else if(obsLeft)

  {

    goRight();

   

    delay(TURN_DELAY);

  }

  else

  {

    goForward();

   

    delay(TURN_DELAY);

  }

}


void checkObstracle2()

{

  int obsLeft  = 0;

  int obsRight = 0;

 

 

 

   

    checkDistance2();

    if(distance2 < OBSTRACLE_DISTANCE2 ) obsLeft++;

    else if(distance2 < OBSTRACLE_DISTANCE2) obsRight++;

 

 

  if(LOG) Serial.print("TURN");

   

  if(obsLeft && obsRight)

  {

    stopMove();

    goBack();

   

   

    delay(1000);

   

    if(obsLeft < obsRight) goLeft();

    else

    stopMove();

    goRight();

   

    delay(1000);

  }

  else if(obsRight)

  {

    stopMove();

    goLeft();

   

    delay(1000);

  }

  else if(obsLeft)

  {

    stopMove();

    goRight();

   

    delay(1000);

  }

  else

  {

    stopMove();

    goForward();

   

    delay(1000);

  }

}


void updateHeadAngle()

{

  headServo.write(servoAngle);

 

  servoAngle += angleStep;

 

  if(servoAngle >= 150)

  {

    servoAngle = 150;

   

    angleStep *= -1;

  }

 

  if(servoAngle <= 30)

  {

    servoAngle = 30;

   

    angleStep *= -1;

  }

}


void goForward()

{

  digitalWrite(MOTOR_1_FORWARD, HIGH);

  digitalWrite(MOTOR_1_BACK,    LOW);

  digitalWrite(MOTOR_2_FORWARD, HIGH);

  digitalWrite(MOTOR_2_BACK,    LOW);

}


void goBack()

{

  digitalWrite(MOTOR_1_FORWARD, LOW);

  digitalWrite(MOTOR_1_BACK,    HIGH);

  digitalWrite(MOTOR_2_FORWARD, LOW);

  digitalWrite(MOTOR_2_BACK,    HIGH);

}


void goLeft()

{

  digitalWrite(MOTOR_1_FORWARD, LOW);

  digitalWrite(MOTOR_1_BACK,    HIGH);

  digitalWrite(MOTOR_2_FORWARD, LOW);

  digitalWrite(MOTOR_2_BACK,    LOW);

}


void goRight()

{

  digitalWrite(MOTOR_1_FORWARD, LOW);

  digitalWrite(MOTOR_1_BACK,    LOW);

  digitalWrite(MOTOR_2_FORWARD, LOW);

  digitalWrite(MOTOR_2_BACK,    HIGH);

}


void stopMove()

{

  digitalWrite(MOTOR_1_FORWARD, LOW);

  digitalWrite(MOTOR_1_BACK,    LOW);

  digitalWrite(MOTOR_2_FORWARD, LOW);

  digitalWrite(MOTOR_2_BACK,    LOW);

}

Sensores y Operadores

En la tercera clase de multimedia se estudia sobre sensores y operadores básicos y la combinación de los mismos así como la comunicación de usuarios con la aplicación.
Objetivo:
Desarrollar e implementar los componentes antes mencionados de tal forma que se pueda explicar de una manera detallada lo que hace cada componente utilizado en los siguientes ejercicios.
Sensores


Este sensor permite establecer una condición como por ejemplo si toca el borde , si toca con el mouse o también si un objeto toca a otro objeto 
En cambio este tipo de sensores permiten interactuar con el usuario es decir permite ingresar texto por teclado y hacer uso del texto dentro de la aplicación 

Operadores
En esta clase utilizamos el operador unir para realizar una concatenar un texto y el sensor respuesta 

Controles
En este ejercicio también cabe recalcar el uso del controlador si entonces mas el sensor tocando que nos permite realizar una condición al momento de trabajar con objetos 
 Eventos
Este tipo de eventos son utilizados para crear comunicación entre objetos como vamos a ver en los siguientes ejercicios estos eventos harán una comunicación sincronizada 



Ejercicios




Dialogo Sobre el Cotopaxi


jueves, 3 de diciembre de 2015

Segunda entrega del prototipo


MATERIALES:
5 servos
2 Sensores ultrasonicos
Material reciclable
Paletas 
Fomix
Cinta


OBJETIVO


Desarrollar y diseñar la segunda entrega de el prototipo basándonos en el trabajo de servos y sensores ultrasonicos que serán la parte fundamental de la segunda entrega

1)Servos : Los servos son sin duda uno de los dispositivos mas útiles para cualquier aficionado a la robótica, ya que nos permiten crear toda clase movimientos de una forma controlada y en arduino hacemos uso de los mismos ya que podemos programarlos de una manera sencilla y acorde a lo que se requiera 



Bueno sin mas que decir en esta segunda entrega realizaremos paso a paso la estructura corporal del robot teniendo en cuenta que en la cabeza tendrá un sensor ultrasonico que nos permitirá detectar objetos a una determinada distancia haciendo así que el robot tome otra acción y gire hacia otro lugar y por otra para se realizara la codificación y sincronización de los brazos.  

Paso_1 Construccion  de brazos con servos: como vemos en la imagen la posicion de los servos tiene que estar en 0° y 180° como posicion inicial.
Paso_2 Conexión  de los brazos al sensor ultrasonico : Como podemos observar en la imagen el sensor ultrasonico va a tomar la posición de mando teniendo en cuenta la distancia de los objetos que encuentre en su camino.
Paso_3 Agrupamiento de la primera entrega con lo realizado en la segunda entrega : En este paso hacemos uso de lo ke realizamos en la primera entrega para añadir lo que hacemos en esta semana.
De esta manera finalizamos con la segunda entrega de el prototipo  cabe mencionar que en la parte inferior les dejamos la codificación de lo planeado para esta semana 
CÓDIGO:
#include <Servo.h>

Servo myservo1;  //declaramos al servo 1 
Servo myservo2; //declaramos al servo 2
Servo myservo3;  //declaramos al servo 3
Servo myservo4; //declaramos al servo 4
int pos = 0;    // variable de posicion de servos
void setup() {
  myservo1.attach(9);  // declaramos el servo en el pin 9
  myservo2.attach(10); // declaramos el servo en el pin 10
  myservo3.attach(11); //declaramos el servo en el pin 11
  myservo4.attach(12); // declaramos el servo en el pin 12
}
void loop () {
  for (pos = 30; pos <= 90; pos += 6) { // Los grados del servo-motor
  
    myservo3.write(pos);           
    delay(15);     
    myservo4.write(pos);              
    delay(15);

    myservo1.write(pos);              
    delay(15);     
    myservo2.write(pos);              
    delay(15);
  }
  for (pos = 100; pos >= 0; pos -= 1) { 
    myservo1.write(pos);              
    delay(15);   
    myservo2.write(pos);             
    delay(15);
    myservo3.write(pos);           
    delay(15);   
    myservo4.write(pos);           
    delay(15);
  }
}

PODCAST



miércoles, 2 de diciembre de 2015

Scratch



Scratch

Scratch es un lenguaje de programación visual, que nos permite crear y diseñar de forma dinámica proyectos enfocados a animaciones,multimedias de aprendizaje ,etc en si permite programar sistemáticamente  desde el principio. Permite investigar, introducirse y jugar con la programación de ordenadores utilizando una interfaces gráficas muy sencilla.


Curso multimedia
Clase_1 Introducción a Scratch: En la primera clase se realiza un introducción a scratch teniendo como objetivo principal dar a conocer como scratch se apega a la programación de una forma sencilla y visual.
Dentro de la introducción se realizo el registro online para obtener una cuenta en scratch en la cual se realizo un ejercicio de prueba así mismo se estudio ejemplos que se encontraron en la pagina oficial de scratch.

Clase_2 Herramientas de scratch y su funcionamiento:En la segunda clase se conoce cada una de las herramientas  de scratch en las cuales tenemos:
    1)Movimiento:Nos permite hacer que el objeto realice movimientos dentro del escenario
     2)Apariencia: Sirve para modificar el objeto ya señalado SEÑALADO.
     3)Sonido: Sirve para darle una proyección de ruido al objeto.
     4)Lápiz: Sirve para borrar un objeto dibujado en un tiempo determinado.
     5)Control: Sirve para darle manejo al objeto.
     6)Sensores: Sirve para tocar todo lo que tiene que ver en el objeto.
     7)Operadores: Sirve para darle habla al objeto.
    8)Variables : Sirve para reiniciar un nuevo personaje