miércoles, 18 de noviembre de 2015

LABORATORIO # 9

DESCRIPCIÓN DEL LABORATORIO:

En este laboratorio controlaremos desde el arduino una matriz Led 8*8 a través de un IC MAX7219, para mostrar un número del 0 al 9, dependiendo de la posición del potenciómetro.


MATERIALES:

- 1 Módulo 8 Leds RGB
- Arduino
- Protoboard
- Cables


DIAGRAMAS:

En fritzing:




ESQUEMÁTICO:







FOTOS MONTAJE:










VIDEO:

CODIGO:

ARDUINO

#define TOTAL 8
#define MAX 8

//Declaracion de pines y de arreglos
// Conectamos el LED a los pines,9,10,11 que es PWM

// salida pwm  para el color rojo
int pin_r = 9;
// salida pwm  para el color verde
int pin_g = 10;
// salida pwm  para el color rojo
int pin_b = 11;

// Indica los pines en el que debe estar conectado el modulo

int led[TOTAL] = {2, 3, 4, 5, 6, 7, 8, 12};

// Se inicializan los datos de cada variable de color

int R[TOTAL]={0,0,0,0,0,0,0,0};
int G[TOTAL]={0,0,0,0,0,0,0,0};
int B[TOTAL]={0,0,0,0,0,0,0,0};

// Variables de cada componenten Inicializadas

int pos = 0;
int color = 0;
int estado = 0;
String str = "";

 /********** Configuracion **********/
void setup() {

 //comunicacion serial sera a 9600 baudios y pines inicializados con sus estados
 
  Serial.begin(9600);
  for (int i = 0; i < TOTAL; i++) {
  pinMode(led[i], OUTPUT);
  digitalWrite(led[i], HIGH);
  }
 
  // se configuran las salidas PWM usadas
    // pin de salida, color rojo

  pinMode(pin_r, OUTPUT);
  digitalWrite(pin_r, HIGH);
 
  // pin de salida, color verde
  pinMode(pin_g, OUTPUT);
  digitalWrite(pin_g, HIGH);
 
  // pin de salida, color azul
  pinMode(pin_b, OUTPUT);
  digitalWrite(pin_b, HIGH);
}
  /********** Ciclo Principal **********/
 // Solo se ejecuta una vez, al iniciar o resetear el Arduino
// Ciclo infinito de ejecucion

void loop() {
  leerSerial();
  for (int i=0; i<TOTAL; i++) {
    encender(led[i], R[i], G[i], B[i]);
  }
}
    // aqui se condiciona si el valor enviado  para
    // la intensidad del pin R, G o B del modulo
   
//metodo necesario para leer la informacion serial

void leerSerial() {
  if (Serial.available() > 0) {
    str = Serial.readString();
    pos = int(str[1] - '0');
    estado = int(str[2] - '0');
    switch (str[0]) {
      case 'r': R[pos] = estado; break;;
      case 'g': G[pos] = estado; break;;
      case 'b': B[pos] = estado; break;; }}}
     
//metodo para encender cada led deacuardo al pin usado
void encender (int pin_led, int r, int g, int b)
{
  digitalWrite(pin_led, LOW);
  digitalWrite(pin_r, r == 0 ? HIGH : LOW);
  digitalWrite(pin_g, g == 0 ? HIGH : LOW);
  digitalWrite(pin_b, b == 0 ? HIGH : LOW);
 
  delay(2);
 
  digitalWrite(pin_led, HIGH);
  digitalWrite(pin_r, HIGH);
  digitalWrite(pin_g, HIGH);
  digitalWrite(pin_b, HIGH);
}



PROCESSING:


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

// Se Definen las variables necesarias

ControlP5 cp5;
Serial serial;

// define las variables del texto, tipo Textlabel

Textlabel texto1, texto2;
Textlabel texto5, texto6;

//****** Objetos ********//

// Areglos para las variables de cada color: rojo, verde, azul.

int[] r = new int[] {0, 0, 0, 0, 0, 0, 0, 0};
int[] g= new int[] {0, 0, 0, 0, 0, 0, 0, 0};
int[] b= new int[] {0, 0, 0, 0, 0, 0, 0, 0};

//**** variables*****//

int colorDeFondo = color (200,100,100);

//***********configuracion*********************//

// Solo se ejecuta una vez, al iniciar el Sketch//

void setup() {

  size(600, 300); // tamaño de la ventana

   // crear el objeto ControlP5
  cp5 = new ControlP5(this);
 
  // crear un botón para encender/apagar cada LED
  // para el color rojo
 
  for (int i=0; i<r.length; i++)
    cp5.addToggle("r"+i, 35+i*70, 60, 50, 40);
 
  // para el color verde

  for (int j=0; j<g.length; j++)
    cp5.addToggle("g"+j, 35+j*70, 130, 50, 40);
 
   // para el color azul

  for (int k=0; k<b.length; k++)
    cp5.addToggle("b"+k, 35+k*70, 200, 50, 40);
 
  // Creamos el objeto del puerto Serial
   serial = new Serial(this, Serial.list()[0], 9600);
 
   // Se crea el texto principal
 
texto1 = cp5.addTextlabel("label")


                    .setText("CONTROLES DE ENCENDIDO Y APAGADO")
                    .setPosition(100,10)
                    .setColorValue(0xfffffFFF)
                    .setFont(createFont("Arial",20))
                    ;

// crea texto indicativo

texto2 = cp5.addTextlabel("label1")

                    .setText("COLOR ROJO VERDE Y AZUL")
                    .setPosition(180,30)
                    .setColorValue(0xffffffFF)
                    .setFont(createFont("Comic Sans MS",15))
                    ;            

}

// se dibujar cada frame y se asigna el color de fondo

void draw()
{
 {background(colorDeFondo);}
}

// actua cuando ocurra un evento con los botones

void controlEvent(ControlEvent theEvent)
{
  // guardar el nombre y valor del evento
  String nombre = theEvent.getController().getName();
  int valor = int(theEvent.getController().getValue());

  println("evento: " + nombre + " / valor: "+valor);
  //serial.write(nombre+valor);
  println(nombre+valor);
  serial.write(nombre+valor);
 

}


No hay comentarios:

Publicar un comentario