jueves, 31 de marzo de 2016

Laboratorio 3

Descripción.

 Controlar 8 LEDs desde el Arduino, un LED encendido que se mueve en forma continua de izquierda a derecha, vía una interfaz gráfica en Processing/ControlP5 para controlar el tiempo de encendido y el tiempo de apagado.

 Materiales
  1. Computador con el IDE de Arduino Y Processing
  2. Tarjeta Arduino
  3. Cable USB; COM5
  4. Protoboard
  5. 8 LEDs + Resistencias 220Ω
  6. Cables macho-macho


 Diagrama del Montaje en la Protoboard.


 Diagrama Esquemático del Circuito.


Diagrama PCB equivalente.



Proceso del Montaje paso a paso (Fotos).

Paso 1: Conectamos los leds y las resistencias
Paso 2: Se procede hacer las conexiones con los pines digitales del arduino, sin olvidar la tierra.




Código Fuente en Arduino (con comentarios).

/********** Proyecto **********
 * Universidad Santiago de cali
 * Angelica maria campo Mancilla
 * Laboratorio 03: 8 LEDs en linea controlados por una Interface (Processing)
 * Descripcion:
 * Mover un LED encendido de Izquierda a Derecha y viceversa
 * con tiempos controlados por una Interface (Processing)
 
 * Conexiones:
 * 8 LEDs + resistencias
 
/********** Librerias **********/
 // ninguna
 /********** Constantes **********/
 #define TOTLED   8 // Total LEDs
 /********** Objetos **********/
 // ninguno
 /********** Variables **********/
 int led[TOTLED] = { 2, 3, 4, 5, 6, 7, 8, 9};
 
// Valores recibidos por el puerto serial
int t_encendido = 200;
int t_apagado = 200;
 
// Se guarda el valor que recibimos vía serial
int valor = 0;
 
/********** Configuracion **********/
void setup() {
 
// La comunicacion serial sera a 9600
  Serial.begin(9600);
   int pos = 0;
 
  // El pos sera el pin de salida
  while (pos < TOTLED) {
    pinMode(led[pos], OUTPUT);
    pos = pos + 1;
  }
 }
 
/********** Ciclo Principal **********/
 // Ciclo infinito de ejecución //
   
    void loop() {
 
   for (int pos = 0; pos < TOTLED; pos++) {
    leer();
    on(led[pos], t_encendido);
    off(led[pos], t_apagado);
  }
 
  for (int pos = TOTLED - 2; pos > 0; pos--) {
    leer();
    on(led[pos], t_encendido);
    off(led[pos], t_apagado);
  }
  Serial.begin(9600);
 
}
/********** Funciones **********/
//Lee constantemente los valores de la interfaz
void leer() {
 
 /*********Acciones******* /
// Si hay datos disponibles en el puerto serial, cambia la intensidad de iluminación del led
 
  if (Serial.available() > 0) {
 
// Leer el valor, para ajustar el encendido del led
 
    t_encendido = Serial.read();
    // Leer el valor, para ajustar el apagado del led
    t_apagado = Serial.read();
   
  }}
 
/********** Funciones **********/
 
//   Pone en +5V el pin indicado, durante tantos milisegundos
 
      void on(int pin, int ms) {
      digitalWrite(pin, HIGH);
 
//Hace una pausa en el programa para la cantidad de tiempo (en milisegundos)
    delay(ms);
   
} // end on()
 
// Pone en GND el pin indicado, durante tantos milisegundos
 
  void off(int pin, int ms) {
  digitalWrite(pin, LOW);
 
} // end off()
 
/********** Fin ***********/
Código Fuente en Processing (con comentarios).

// Proyecto Laboratorio 03: 8 LEDs en linea controlados por (Processing)
// Universidad santiago de cali
// Angelica maria Campo Mancilla

// Importamos las librerías de ControlP5 y Serial
import controlP5.*;

import processing.serial.*;

// se crean las variables para ControlP5, el Slider y El puerto serial
 
ControlP5 cp5;
 
Slider slider;
Slider slider_encender;
Slider slider_apagar;
 
int valor_encender;
int valor_apagar;
 
Serial serial;
 
// Solo se ejecuta una vez, al iniciar el Sketch
 
void setup() {
  // Tamaño de la Ventana
  size(450, 220);
  // Creamos el objeto de ControlP5
  cp5 = new ControlP5(this);
 
   // Creamos el objeto Slider, para el control del encendido
  slider_apagar = cp5.addSlider("Encendido", 1, 200, 150, 70, 40, 300, 40);
  // Creamos el objeto Slider, para el control del apagado
  slider_encender = cp5.addSlider("Apagado", 1, 200, 150, 70, 120, 300, 40);
 
 
  // Creamos el objeto del puerto Serial
  serial = new Serial(this, Serial.list()[0], 9600);
}
 
// Se ejecuta N frames por segundo
void draw() {
  // En este caso no debe dibujar nada
}
 
// Cuando ocurra un evento, aquí lo procesamos
 
void controlEvent(ControlEvent evento) {
// Obtenemos el nombre y el valor del evento
  String nombre = evento.getController().getName();
 
  if (nombre == "Encendido") {
    valor_encender = int(evento.getController().getValue());
  } else {
    valor_apagar = int(evento.getController().getValue());
  }
  // Enviamos el valor al Arduino a través del Serial
 
  serial.write(valor_encender);
  serial.write(valor_apagar);
 
  // Imprimimos en la consola, para ver que todo va Ok
 
  println(nombre + ":" + valor_encender + " / " +nombre + ":" + valor_apagar);
}
 
/********** Fin ***********/
Video del Funcionamiento.

No hay comentarios.:

Publicar un comentario