martes, 7 de octubre de 2014

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);
}
}

No hay comentarios:

Publicar un comentario