martes, 24 de marzo de 2015

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










domingo, 15 de marzo de 2015

laboratorio 1
controlar 8 LEDs desde Arduino  un LED que se mueve en forma continua de izquierda a derecha y de derecha a izquierda.
Para este primer laboratorio se utilizan ocho salidas digitales de la placa Arduino mega en donde el tiempo que demora el encendido y apagado de los leds se puede definir desde el software.

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
  6. Cables de conexion macho macho


Diagrama en la protoboard


 Esquemático en fritzing



PCB en fritzing




Procedimiento de el montaje


Se hace el montaje de las resistencias y los leds según el diagrama esquemático





Así quedara el montaje











Aca se carga el codigo desde el ide arduino
codigo fuente de arduino


void setup()
{
  for (int p=2; p<=9 ; p++) //se declaran los pines a usar
    pinMode(p,OUTPUT); // se declaran los pines como salidas 
}
    void loop()
{    
  for (int p=2; p<=9; p++)
  { 
   prender(p,20);
   apagar(p,20);
  }
  for (int p=8; p>=3; p--)
{
   prender(p,20);
   apagar(p,20);
}
}
    void prender (int p,int t)
    {
      digitalWrite(p, HIGH);
      delay(t);
    }
    void apagar(int p, int t)
    {
      digitalWrite(p,LOW);
      delay(t);
    }

Video de funcionamiento