jueves, 26 de marzo de 2015

laboratorio 0


laboratorio 0

en este laboratorio se controla el tiempo de encendido y apagado de un led desde una placa arduino y por medio de un potenciometro se controla este tiempo.

materiales

  1. placa arduino mega o arduino uno + pc con ide arduino+cable de comunicacion 
  2. 1 led 
  3. 1 resistencia de 1kohm 
  4. 1 potenciometro de 10kohm
  5. jumper varios
montaje





esquema en fritzing


montaje en fritzing














codigo arduino


#define LED 2 //led conectado al pin digital 2
#define POT A0 //potenciometro como entrada al A0

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(POT, INPUT);
}

void loop() {
 
  int tiempo = analogRead(POT);//lectura del potenciometro

  digitalWrite(LED, HIGH);//led encendido
  delay(tiempo); //tiempo de encendido
  digitalWrite(LED, LOW); //led apagado
  delay(tiempo); //tiempo de apagado

}

video



miércoles, 25 de marzo de 2015

laboratorio 7

laboratorio 7
consiste en controlar un display de 7 segmentos de catodo común desde arduino por medio de un IC 74HC595 mostrando los números del 0 al 9 dependiendo la posición de un potencio-metro.

materiales

  1. placa arduino mega + cable de comunicacion +pc con ide arduino
  2. display de 7 segmentos catodo comun
  3. 2 resistencias de 1kohm
  4. 1 potenciometro de 10kohm
  5. jumper varios 
  6. protoboard
montaje en protoboard fritzing











esquematico en fritzing
















montaje del circuito














codigo arduino
/ Se definen la cantidad de pines que vamos a usar como PIN
// y la entrada analoga A0 como la que se va a usar por el
// potenciómetro
#define PIN 3
#define Pot A0

// Se le dan nombres a los pines (7-9) del arduino
// que van a ser usados por el integrado respectivamente
// además el pin SH_CP osea Clock debe ser PWM(~)
const int Latch = 3;
const int Clock = 4;
const int Data = 2;

int led[PIN] = {
 2,3,4};

// El valor de cada uno de los numeros que voy
// a mostrar en mi Display
int Numeros[10]={63,6,91,79,102,109,125,7,127,111};

// Ciclo para activar los ocho pines como salida
// y el pin A0 como entrada
void setup() {
 for (int i=0; i<PIN; i++){
 pinMode(led[i], OUTPUT);
 }
 pinMode(Pot, INPUT);
}

// Recibe la info de la posición del potenciómetro
void loop()
{
 int Pos = analogRead(Pot);
 Pos = map(Pos, 0, 1023, 0,10);
 Casos(Pos);
}

// Según la posición del potenciómetro escoge un caso
// osea un numero
void Casos(int Valor)
{
 switch(Valor)
 {
 case 0:
 On(Numeros[0]);
 break;
 case 1:
 On(Numeros[1]);
 break;
 case 2:
 On(Numeros[2]);
 break;
 case 3:
 On(Numeros[3]);
 break;
 case 4:
 On(Numeros[4]);
 break;
 case 5:
 On(Numeros[5]);
 break;
 case 6:
 On(Numeros[6]);
 break;
 case 7:
 On(Numeros[7]);
 break;
 case 8:
 On(Numeros[8]);
 break;
 case 9:
 On(Numeros[9]);
 break;
 } 
}

// Función para enviar los datos al Integrado IC 74HC595
void On(int Valor)
{
 digitalWrite(Latch, LOW);
 shiftOut(Data, Clock, MSBFIRST, Valor);
 digitalWrite(Latch, HIGH);
 delay(8);
}

video


laboratorio 6

laboratorio 6
en este laboratorio se controlan 8 LEDs desde arduino atraves de un IC 74Hc595 definiendo mínimo 8 patrones de movimiento que son controlados desde una interfaz gráfica en processing/controlIp5.

materiales
  1. placa arduino +cable de comunicacion +pc con ide arduino y processing
  2. 8 LEDs + 8 resistencias 1kohm + protoboard
  3. jumper varios
  4. 1 Ic 74HC595
diagrama en protoboard











diagrama en fritzing
























montaje de componentes















codigo arduino

// pin que envia los datos al 74HC595
int data_pin = 9;
// pin que conecta el latch
int latch_pin = 10;
// pin que conecta el reloj
int clock_pin = 11;

// Guardamos el valor lo que recibimos via serial
int valor, val;
char letr;

//primera secuencia : arreglo de dos en dos.
int ledS1[4] = {3, 12, 48, 192};

//segunda secuencia : arreglo de uno en uno
int ledS2[8] = {1, 2, 4, 8, 16, 32, 64, 128};

//segunda secuencia : arreglo de uno en uno
int ledS3[8] = {1, 4, 2, 8, 16, 64, 32, 128};

//segunda secuencia : arreglo de uno en uno
int ledS4[2] = {255, 0};

//segunda secuencia : arreglo de un leds de los extremos al medio
int ledS5[12] = {1,128,2,64,4,32,8,16,4,32,2,64};

//tercera secuencia
int ledS6[22] = {1,4,2,8,4,16,8,32,16,64,32,128,32,64,16,32,8,16,4,8,2,4};

//cuarta secuencia
int ledS7[12] = {1,16,2,32,4,64,8,128,4,64,2,32};

//cuarta secuencia
int ledS8[14] = {1,2,4,8,16,32,64,128,64,32,16,8,4,2};


void setup() {

  // La comunicacion serial sera a 9600 baudios
  Serial.begin(9600);

  // establecer pines a la salida para que pueda controlar el 74HC595
  pinMode(data_pin, OUTPUT);
  pinMode(latch_pin, OUTPUT);
  pinMode(clock_pin, OUTPUT);

}

void loop() {

  // send data only when you receive data:
  if (Serial.available() > 0) {

    letr = Serial.read();
    val = Serial.parseInt();
    Serial.print(letr);
    Serial.println(val);


  }


  // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
  // se envian los datos (en bits).
  digitalWrite(latch_pin, LOW);
  // cambiar los bits ej. 0000 0001 0002 0003...
  shiftOut(data_pin, clock_pin, MSBFIRST, val);
  //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
  digitalWrite(latch_pin, HIGH);
  // se hace una pausa antes del siguiente valor
  //delay(500);

  if (val == 1) { //Si es 1 inicie funcion de secuencia1
    secuencia1();
  }
  if (val == 2) { //Si es 2 inicie funcion de secuencia2
    secuencia2();
  }
  if (val == 3) { //Si es 3 inicie funcion de secuencia3
    secuencia3();
  }
  if (val == 4) { //Si es 4 inicie funcion de secuencia4
    secuencia4();
  }
  if (val == 5) { //Si es 5 inicie funcion de secuencia5
    secuencia5();
  }
  if (val == 6) { //Si es 6 inicie funcion de secuencia7
    secuencia6();
  }
  if (val == 7) { //Si es 7 inicie funcion de secuencia7
    secuencia7();
  }
  if (val == 8) { //Si es 4 inicie funcion de secuencia8
    secuencia8();
  }

}

void secuencia1() {

  //recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 4; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS1[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }


}

void secuencia2() {
  //recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 8; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS2[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}

void secuencia3() {
  //recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 8; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS3[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}

void secuencia4() {
  //recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 2; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS4[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}

void secuencia5() {

//recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 12; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS5[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }

}


void secuencia6() {
//recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 22; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS6[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}


void secuencia7() {
//recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 12; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS7[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}


void secuencia8() {
  //recorre el arreglo donde se difinio la secuencia
  for (int i = 0; i < 14; i++) {
    // toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
    // se envian los datos (en bits).
    digitalWrite(latch_pin, LOW);
    // cambiar los bits ej. 0000 0001 0002 0003...
    shiftOut(data_pin, clock_pin, MSBFIRST, ledS8[i]);
    //toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
    digitalWrite(latch_pin, HIGH);
    // se hace una pausa antes del siguiente valor
    delay(200);
  }
}

codigo de processing

import controlP5.*;
import processing.serial.*;

ControlP5 cp5;

int colorDeFondo = color (215, 215, 215);
int val; // Data received from the serial port

RadioButton radioButton;

Serial serial;  // definir la variable serial del tipo Serial
int lf = 10;      // ASCII linefeed


void setup() {
  size(400, 300);
  noStroke();

  // Print a list of the serial ports, for debugging purposes:
  println("Puertos usados:");
  printArray(Serial.list());

  cp5 = new ControlP5(this);
  radioButton = cp5.addRadioButton("radioButton")
    .setPosition(20, 50)
      .setSize(40, 20)
        .setColorForeground(color(120))
          .setColorActive(color(255))
            .setColorLabel(color(0))
              .setItemsPerRow(4)
                .setSpacingColumn(50)
                  .setSpacingRow(20)
                    .addItem("Patron 1", 1)
                      .addItem("Patron 2", 2)
                        .addItem("Patron 3", 3)
                          .addItem("Patron 4", 4)
                            .addItem("Patron 5", 5)
                              .addItem("Patron 6", 6)
                                .addItem("Patron 7", 7)
                                  .addItem("Patron 8", 8)
                                    ;

  for (Toggle t : radioButton.getItems ()) {
    //t.captionLabel().setColorBackground(color(255,80));
    t.captionLabel().style().moveMargin(-7, 0, 0, -3);
    t.captionLabel().style().movePadding(7, 0, 0, 3);
    t.captionLabel().style().backgroundWidth = 45;
    t.captionLabel().style().backgroundHeight = 13;
  }

  /*
      cp5.addButton("Enviar")
   .setPosition(100, 320)
   .setSize(80,40)
   ;
   */

  serial = new Serial(this, Serial.list()[0], 9600);
  serial.bufferUntil(lf);
}

void draw() {
  background(colorDeFondo);
}

//Majejando los radioButtons con el teclado
void keyPressed() {
  switch(key) {
    case('0'):
    radioButton.deactivateAll();
    break;
    case('1'):
    radioButton.activate(0);
    break;
    case('2'):
    radioButton.activate(1);
    break;
    case('3'):
    radioButton.activate(2);
    break;
    case('4'):
    radioButton.activate(3);
    break;
    case('5'):
    radioButton.activate(4);
    break;
    case('6'):
    radioButton.activate(5);
    break;
    case('7'):
    radioButton.activate(6);
    break;
    case('8'):
    radioButton.activate(7);
    break;
  }
}


void controlEvent(ControlEvent evento) {

  if (evento.isFrom(radioButton)) {

    int total = 0;

    total = (int)evento.getValue();

    println("\nValor a ser enviado por Serial = " + total);
    //serial.write(total+"");
 
    serial.write("P"+total);
 
  }
  //println(serial.readString());
}

video


martes, 24 de marzo de 2015

laboratorio 5

laboratorio5

el laboratorio 5 se pretende controlar un LED RGB con una placa arduino mega o arduino 1 via pwm
con una interfaz grafica desde processing.

materiales


  1. una placa arduino mega o arduino 1 + cable de comunicación + pc con ide arduino +ide de processing /controlIp5.
  2. cables varios + 3 resistencias de 1kohm.
  3. un led RGB 

diagrama en protoboard con fritzing














esquema en fritzing













montaje del circuito













configuracion del led






interfaz grafica en processing












codigo arduino

#define MAXLED 3 //creamos la variable maxled 3 elementos

int led[MAXLED] = {3,5,6}; //creamos un vector para los pines a utilizar
int valor = 0; //creamos la variable valor de tipo entero
int i = 0; //creamos la variable valor 1 de tipo entero

void setup()
{
 Serial.begin(9600); // la comunicacion serial sera a 9600 baudios
 for(int i = 0; i < MAXLED ; i++)
 {
 pinMode(led[i], OUTPUT); // los pines del 3,5,6 seran de salida
 }
}

void loop()
{
 if(Serial.available() > 0) // si hay datos en el puerto serial entra a la condicion
 {
 valor = Serial.read(); // lee lo que hay en el puerto serial
 if(valor == 'R')
 i = 0;
 if(valor == 'G')
 i = 1;
 if(valor == 'B')
 i = 2;
 valor = Serial.parseInt(); // lee y toma el siguiente valor convirtiandolo en entero
 analogWrite(led[i], valor); // escribe el valor por el pin xx
 }
}

codigo processing

import controlP5.*; // importar libreria controlP5
import processing.serial.*; // importar libreria serial
ControlP5 cp5; // definir la variable cp5 del tipo ControlP5
Knob rojo, verde, azul; // definir la variable rojo,verde y azul del tipo Knob
Textlabel texto1, texto2, texto3, texto4, texto5, texto6; // definir las variables texto del tipo Textlabel
Serial serial; // definir la variable serial del tipo Serial

// configuración inicial
void setup()
{
serial = new Serial(this, Serial.list()[0],9600); // inicializamos el puerto serial a 9600 baudios
String puerto = Serial.list()[0]; //definimos la variable puerto de tipo cadena
size(620,400); // tamaño de la ventana
cp5 = new ControlP5(this); // crear el objeto ControlP5

// crear el knob para la intensidad de color rojo
rojo = cp5.addKnob("R",0,255,0,70,120,120);
rojo.setColor(new CColor(0xFFFFFFFF,0xFFFF0000,0xFF000000,0xFFFFFFFF,0xFFFFFFFF));

// crear el knob para la intensidad de color verde
verde = cp5.addKnob("G",0,255,0,260,120,120);
verde.setColor(new CColor(0xFFFFFFFF,0xFF00FF00,0xFF005F00,0xFFFFFFFF,0xFFFFFFFF));

// crear el knob para la intensidad de color azul
azul = cp5.addKnob("B",0,255,0,450,120,120);
azul.setColor(new CColor(0xFFFFFFFF,0xFF0000FF,0xFF00005f,0xFFFFFFFF,0xFFFFFFFF));

// crear texto
texto1 = cp5.addTextlabel("label")
 .setText("LABORATORIO 5")
 .setPosition(150,30)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",40))
 ;

texto2 = cp5.addTextlabel("label1")
 .setText("ROJO")
 .setPosition(105,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

texto3 = cp5.addTextlabel("label2")
 .setText("VERDE")
 .setPosition(290,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

texto4 = cp5.addTextlabel("label3")
 .setText("AZUL")
 .setPosition(486,250)
 .setColorValue(0xff000000)
 .setFont(createFont("Algerian",15))
 ;

// otra forma de crear texto
texto4 = new Textlabel(cp5,"Viavey Holguin",40,290,600,200);
texto4.setFont(createFont("Andalus",17));
texto4.setColorValue(0xff000000);
texto5 = new Textlabel(cp5,"Bioingenieria",40,305,600,200);
texto5.setFont(createFont("Andalus",17));
texto5.setColorValue(0xff000000);
texto6 = new Textlabel(cp5,"USCACA.VIANEY",40,320,600,200);
texto6.setFont(createFont("Andalus",17));
texto6.setColorValue(0xff000000);
}

void draw()
{
background(255,255,255); // color de fondo de la ventana
 texto4.draw(this); // introduce el texto en la ventana
 texto5.draw(this);
 texto6.draw(this);
}

void controlEvent (ControlEvent evento) // se activa cuando ocurra un evento con los botones
{
String nombre = evento.getController().getName(); // recoje el nombre del slider y lo convierte en cadena
int valor = int(evento.getController().getValue()); // recoje el valor del slider y lo convierte en entero
serial.write(nombre + ":" + valor); // envia por el puerto serial el nombre y el valor
println(nombre + ":" + valor); // imprime por pantalla el nombre y el valor
}



video del laboratorio


Laboratorio#4

En este laboratorio se controla un LED RGB desde la placa de arduino,via PWM con tres potenciometro uno para cada color (ROJO,AZUL,VERDE).

Materiales

  1. placa arduino uno o arduino mega2560 +cable de comunicación +pc con el ide de arduino
  2. 3 potenciometros de 10kohm + 3 resistencias de 1kohm
  3. un led RGB
  4. cables varios + protoboard 
montaje en protoboard fritzing














esquemático en fritzing














montaje de los componentes 
se procede a montar los componentes en la protoboard segun esquematico













esquema de conexion del led






codigo arduino


#define PIN 3 //creamos la variable PIN de 3 elementos
#define Pot A0 //creamos la variable pot con el pin A0

const int Latch = 2; // Este pin sets baja cuando quiero que el 595 se escuche
const int Clock = 3; // Este pin es utilizado por shiftout para alternar
const int Data = 4; // Este pin se utiliza para pasar al siguiente bit

int led[PIN] = {2,3,4}; //creamos un vector para los pines a utilizar

int Serie1[17]={ 0,1,3,7,15,31,63,127,255,127,63,31,15,7,3,1,0 };
int Serie2[7]= { 129,66,36,24,36,66,129 };
int Serie3[11]={ 7,14,28,56,112,224,112,56,28,14,7 };
int Serie4[6]= { 24,129,36,24,129,21 };
int Serie5[8]= { 129,130,132,136,144,160,192,128 };
int Serie6[7]= { 24,20,18,17,18,20,24 };
int Serie7[4]= { 192,48,12,3 };
int Serie8[8]= { 80,10,255,255,0,255,10,80 };

// Solo se ejecuta una vez, al iniciar o resetear el Arduino
void setup() {
 for (int i=0; i<PIN; i++){
 pinMode(led[i], OUTPUT);
 }
 pinMode(Pot, INPUT);
}
// se ejecuta siempre como un ciclo
void loop()
{
 int Pos = analogRead(Pot); // lee el valor del potenciometro
 Pos = map(Pos, 0, 1023, 0,7); // hace un mapeo o conversion
 Casos(Pos); // llama a la funcion casos
}

void Casos(int Valor) //funcion para enceder el led
{
 switch(Valor)
 {
 case 0: //hacer algo cuando sea igual a 0
 for(int j=0;j<17;j++)
 {
 On(Serie1[j]);
 }
 break;
 case 1: //hacer algo cuando sea igual a 1
 for(int j=0;j<7;j++)
 {
 On(Serie2[j]);
 }
 break;
 case 2: //hacer algo cuando sea igual a 2
 for(int j=0;j<11;j++)
 {
 On(Serie3[j]);
 }
 break;
 case 3: //hacer algo cuando sea igual a 3
 for(int j=0;j<6;j++)
 {
 On(Serie4[j]);
 }
 break;
 case 4: //hacer algo cuando sea igual a 4
 for(int j=0;j<8;j++)
 {
 On(Serie5[j]);
 }
 break;
 case 5: //hacer algo cuando sea igual a 5
 for(int j=0;j<7;j++)
 {
 On(Serie6[j]);
 }
 break;
 case 6: //hacer algo cuando sea igual a 6
 for(int j=0;j<4;j++)
 {
 On(Serie7[j]);
 }
 break;
 case 7: //hacer algo cuando sea igual a 7
 for(int j=0;j<8;j++)
 {
 On(Serie8[j]);
 }
 break;
 } 
}
// Uso de la orden interna shiftout función
void On(int Valor)
{
 digitalWrite(Latch, LOW); // señal al 595 para escuchar los datos
 shiftOut(Data, Clock, MSBFIRST, Valor); // Señal de la 595 que esta hecho 
 digitalWrite(Latch, HIGH); // enviar datos serial
 delay(100); //Pausa el programa por un tiempo determinado (en milisegundos) especificado por el parámetro. Hay 1000 milisegundos en un segundo
}


video











laboratorio#3

laboratorio#3
control de 8 LEDs con arduino , el control consiste en encender un LED que se mueva en forma continua de derecha a izquierda y de izquierda a derecha y por medio de una interfaz gráfica en processing con la cual se controlan los tiempos de encendido y apagado.


Materiales


  1. una placa arduino mega o arduino uno con cable de comunicacion + pc con ide arduino y el de processing+libreria controlIp5 
  2. 8 Leds + 8 resistencias de 1khom
  3. cables varios +protoboard

montaje en frritzing














esquemático en fritzing















montaje de componentes
se empieza montando los leds y resistencias











Así quedara el montaje











Codigo arduino

#define maxleds 8 //creamos la variable maxleds de 8 elementos

int t1=0; // creamos una variable t1 entera
int t2=0; // creamos una variable t2 entera
int valor=0; // creamos una variable valor entera

int led[maxleds] = {2,3,4,5,6,7,8,9}; //creamos un vector para los pines a utilizar

int i; //creamos una variable entera i
void setup ()
{
 Serial.begin(9600); // La comunicacion serial sera a 9600 baudios
 for (int i=0;i<maxleds;i++)
 pinMode(led[i],OUTPUT); // El pines del 2 al 9 seran de salida
}

void loop()
{
 for (int i=0;i<=maxleds;i++)
 {
 if (Serial.available()>0) // si hay datos en el puerto serial entra a la condicion
 {
 valor = Serial.read(); // lee el valor que hay en el puerto serial
 if (valor == 'O')
 t1 = Serial.parseInt(); // lee y toma el siguiente valor y lo convierte a entero
 if (valor == 'F')
 t2 = Serial.parseInt(); // lee y toma el siguiente valor y lo convierte a entero
 }
 prender(led[i],t1); //llama a la funcion prender ingresando los parametros
 apagar(led[i],t2); //llama a la funcion apagar ingresando los parametros
 }

 for (int i=maxleds;i>=0;i--)
 {
 if (Serial.available()>0)
 {
 valor = Serial.read();
 if (valor == 'O')
 t1 = Serial.parseInt();
 if (valor == 'F')
 t2 = Serial.parseInt();
 }
 prender(led[i],t1);
 apagar(led[i],t2);
 }
}

void prender(int i, int t) //funcion para enceder el led
{
 digitalWrite(i, HIGH);// led esta encendido
 delay(t); // tiempo encendido
}

void apagar(int i, int t)
{
 digitalWrite(i, LOW);// led esta apagado
 delay(t); // tiempo apagado
}

Codigo prossecing

 import controlP5.*; //importar libreria controlP5
import processing.serial.*; //importar libreria serial

ControlP5 cp5; // definir la variable cp5 del tipo ControlP5
Slider slider1; // definir la variable slider1 del tipo Slider
Slider slider2; // definir la variable slider2 del tipo Slider
Serial serial; // definir la variable serial del tipo Serial
Knob perilla1;
Textlabel texto1, texto2, texto3, texto4; // definir las variables texto del tipo Textlabel
Textlabel texto5, texto6, texto7;

// configuración inicial
void setup()
{
serial = new Serial(this, Serial.list()[0],9600); // inicializamos el puerto serial a 9600 baudios
String puerto = Serial.list()[0]; //definimos la variable puerto de tipo cadena
size(750,330); // tamaño de la ventana
cp5 = new ControlP5(this); // crear el objeto ControlP5

// crear el Slider para el tiempo encendido (Vertical)
slider1 = cp5.addSlider("O",0,1000,500,80,120,30,100);
slider1.setColor(new CColor(0xFFFFFFFF,0xFF555555,0xFFBBBB20,0xFFFFFFFF,0xFFFFFFFF));
slider1.setLabelVisible(false);

// crear el Slider para el tiempo apagado (Horizontal)
slider2 = cp5.addSlider("F",0,1000,500,400,150,255,40);
slider2.setColor(new CColor(0xFFFFFFFF,0xFF555555,0xFFBBBB20,0xFFFFFFFF,0xFFFFFFFF));
slider2.setLabelVisible(false);
//crear una perilla
//perilla1 = cp5.addKnob("q",0,500,150,400,40,100);
//perilla1.setColor(new CColor (0xFF00FF00,0xFF555555,0xFF009F00,0xFFFFFFFF,0xFFFFFFFF));

// crear texto
texto1 = cp5.addTextlabel("label")
 .setText("LABORATORIO 3")
 .setPosition(250,20)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Rod",30))
 ;

// crear texto
texto2 = cp5.addTextlabel("label1")
 .setText("TIEMPO ENCENDIDO (ms)")
 .setPosition(10,220)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Comic Sans MS",15))
 ;

// crear texto
texto3 = cp5.addTextlabel("label2")
 .setText("TIEMPO APAGADO (ms)")
 .setPosition(460,120)
 .setColorValue(0xffffffFF)
 .setFont(createFont("Comic Sans MS",15))
 ;

// texto
texto4 = new Textlabel(cp5,"Laboratorio #3 ",490,230,600,200);
texto4.setFont(createFont("MV Boli",15));
texto5 = new Textlabel(cp5,"Bioingenieria ",490,250,600,200);
texto5.setFont(createFont("MV Boli",15));
texto6 = new Textlabel(cp5,"usaca",490,270,600,200);
texto6.setFont(createFont("MV Boli",15));
texto7 = new Textlabel(cp5,"Vianey holguin ",490,290,600,200);
texto7.setFont(createFont("MV Boli",15));
}

void draw()
{
background(58,0,255); // color de fondo de la ventana
 texto4.draw(this); // introduce el texto en la ventana
 texto5.draw(this);
 texto6.draw(this);
 texto7.draw(this);
}

void controlEvent (ControlEvent evento) // se activa el evento
{
String nombre = evento.getController().getName(); // recoje el nombre del slider y lo convierte en String
int valor = int(evento.getController().getValue()); // recoje el valor del slider y lo convierte en entero
serial.write(nombre + ":" + valor + "vianey"); // envia por el puerto serial el nombre y el valor
println(nombre + ":" + valor + "vianey"); // imprime por pantalla el nombre y el valor
}

video de funcionamiento


miércoles, 18 de marzo de 2015

Laboratorio#2

Para este laboratorio se controlan 8 Leds desde la placa Arduino mega, un led encendido que se mueve de izquierda a derecha y por medio de dos potencio metros controlaremos los tiempos de encendido y apagado

Materiales utilizados
  1. un computador con IDE Arduino 1.0.6
  2. placa Arduino mega 2560
  3. cable de conexión USB
  4. Protoboard
  5. 8 LEDs Rojos + 8 Resistencias de 1kohm + dos potenciometros de 10kohm
  6. Cables de conexion macho macho
Diagrama en la protoboard con fritzing
esquematico con fritzing

montaje del circuito



codigo 

//laboratorio#2

#define POT1    A0  //se define los puertos para los potenciometros
#define POT2    A1
#define TOTLED   8 // Total LEDs


int led[TOTLED] = {    //total de leds a utilizar
  2, 3, 4, 5, 6, 7, 8, 9};


void setup() {
 int pos=0;
  while (pos < TOTLED){
    pinMode(led[pos], OUTPUT);
    pos=pos+1;
  }
  pinMode(POT1, INPUT);
  pinMode(POT2, INPUT);
} // end setup()

void loop() {
  int t_encendido = analogRead(POT1);
  int t_apagado = analogRead(POT2);

  // Acciones
  for (int pos = 0; pos < TOTLED; pos++) {
    on(led[pos], t_encendido);  
    off(led[pos], t_apagado);  
  }
  for (int pos = TOTLED-2; pos > 0; pos--) {
    on(led[pos], t_encendido);  
    off(led[pos], t_apagado);  
  }
}

void on(int pin, int ms){
  digitalWrite(pin, HIGH);  
  delay(ms);  
void off(int pin, int ms){
  digitalWrite(pin, LOW);  
  delay(ms);  

Video