martes, 7 de octubre de 2014

Introducción




Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
El arduino uno, que fue el usado para este proyecto posee 13 pines digitales que pueden ser programados como salidas o entradas, 2 de estos se pueden usar para la comunicación serial. Posee también 6 pines análogos usados como entradas con las que se puede medir un voltaje de 1 a 5 voltios, además de pines que emiten un voltaje determinado (3.3, 5) y pines conectados a la tierra.
Los pines digitales pueden tener 2 valores: bajo o alto (LOW, HIGH), estos valores se pueden medir o se pueden emitir depende de la configuración que se le dé al pin. Las entradas análogas sirven para medir el voltaje que este entrando por estas, solo son capaces de detectar los cambios de voltaje entre los 0 y los 5 voltios.
Con estos distintos tipos de pines, es posible realizar complejos circuitos electrónicos y también es posible relacionarlos con distintos programas en el computador.
Para nosotros fue importante realizar este proyecto, ya que adquiriendo conocimientos de este tipo acerca del arduino se nos facilitara mucho realizar proyectos multimediales en un futuro, ya que con este es posible relacionar o manipular aspectos físicos/electrónicos con aspectos digitales y así poder controlar cualquier elemento en cualquiera de estos dos medios.

En este proyecto también trabajamos con informacion utilizando una comunicación serial el cual funciona enviando información en por ejemplo desde un dispositivo con bluethooth o un módulo bluethooth la cual llega en forma de bit pero van llegando de manera secuencial así formando información mas grande.

Programación

La programación de este proyecto consiste básicamente en 3 partes que son, la declaración de varibles junto con el setup y el loop, la declaracion de variables seriales para utilizar las señales del bluethooth, el cambio de velocidad con potenciómetro y las secuencias, a continuación se las explicaremos mas detalladamente:

La primera parte y la mas importante consiste en primero la declaración de variables, esos "int led1=13;" sin variables en este caso int que son enteros, y char que es caracter donde declaramos los distintos leds con sus pines, y un caracter que luego nos va a servir para guardar los valores que recibimos del bluethooth; está tambien el void setup que es donde se declara la modalidad de los pines, si son de entrada o salida, tambien está el serial begin que es la inicialización de la transferencia de datos de modalidad serial, el cual usa el bluethooth y otro tipo de implementos, ahí declaramos los 8 pines en salida que es donde van los leds.
También está el loop, el cual significa un ciclo que se repite d emanera infinita y a una velocidad instantanea, aquí colocamos condicionales utilizando la función if donde se condiciona que si la entrada serial es 1 entonces se coloca la secuencia numero 1, y asi con la 2, la 3 y hasta llegar a la 7; en medio de cada condicional colocamos una funcion construida por nosotros donde

int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int led5 = 9;
int led6 = 8;
int led7 = 7;
int led8 = 6;
int val;
int x=0;
char letra;


void setup(){
 
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
}

void loop(){
 

cambiodesecuencia();
if(letra=='1'){secuencia1();}
cambiodesecuencia();
if(letra=='2'){secuencia2();}
cambiodesecuencia();
if(letra=='3'){secuencia3();}
cambiodesecuencia();
if(letra=='4'){secuencia4();}
cambiodesecuencia();
if(letra=='5'){secuencia5();}
cambiodesecuencia();
if(letra=='6'){secuencia6();}
cambiodesecuencia();
if(letra=='7'){secuencia7();}

}

Esta es una de las secuencuas y la mas simple que hicimos, en la secuencia se declara con digitalWrite el modo de los leds en el cual quiere que esté en una instancia, el tiempo de pausa y luego el otro estado de los leds.

Tambien declaramos cada que pasa un estado de leds (el estado de leds es el modo en el que estan todos los leds de una secuencia en un instante) una variable para la entrada análoga del potenciometro el cual inmerso en una expresión matemática hace que al aumentar el voltaje recibido sea menor el tiempo de espera, o sea que estan inversmente relacionados, esto se debe declarar despues de cada estado de leds con una variable distinta.

void secuencia2(){
  digitalWrite(led1,HIGH);
  digitalWrite(led2,LOW);
  digitalWrite(led3,HIGH);
  digitalWrite(led4,LOW);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,LOW);
  digitalWrite(led7,HIGH);
  digitalWrite(led8,LOW);
    int valorSensor18= analogRead(A0);

  delay(1000/((valorSensor18/50)+1));
 
  digitalWrite(led1,LOW);
  digitalWrite(led2,HIGH);
  digitalWrite(led3,LOW);
  digitalWrite(led4,HIGH);
  digitalWrite(led5,LOW);
  digitalWrite(led6,HIGH);
  digitalWrite(led7,LOW);
  digitalWrite(led8,HIGH);
    int valorSensor19= analogRead(A0);

  delay(1000/((valorSensor19/50)+1));
}

Esta parte va dedicada solamente al bluethooth ya que es una condicional que hace que si al puerto serial le llega alguna información entonces esta información esté almacenada en una variable llamada letra, aparte esta variable se imprime en el monitor serial con la finción print line (Serial.println), esta variable es la que utilizamos mas arriba en los condicionales para colocar las secuencias.

void cambiodesecuencia() {
 if (Serial.available() > 0) {
        letra = Serial.read();
        Serial.print(letra);
}
}

lunes, 6 de octubre de 2014

Software (Arduino)

Este es el software que utilizamos para programar el arduino, es el software oficial de Arduino.




Este es el link de descarga gratuita del software  http://arduino.cc/en/Main/Software