Virtual Color Mixer

Este ejemplo muestra cómo enviar múltiples valores de la placa Arduino al ordenador. Las lecturas de los tres potenciómetros se usan para fijar los componentes rojo, verde y azul del color de fondo de un programa de Procesing o parche Max / MSP.

Hardware requerido

1 Placa Arduino o Genuino
3 Sensores analógicos (3 potenciómetros, fotocélula, FSR, etc.)
3 resistencias de 10K ohmios
Cable de interconexion
1 Protoboard

Software necesario
 

Circuito  
Conectar los sensores analógicos a los pines de entradas analógicas 0, 1, y 2.
Este circuito utiliza tres sub-circuitos divisores de tensión para generar tensiones analógicas sensores de fuerza resistivos. Un divisor de tensión tiene dos resistencias en serie, dividiendo la tensión proporcional a sus valores.



Esquema

Código

Los valores de los sensores se envían desde el Arduino al ordenador como números decimales codificados en ASCII. Esto significa que cada número se envía utilizando los caracteres ASCII "0" a "9". Para el valor "234", se envían por ejemplo, tres bytes: ASCII "2" (valor binario 50), ASCII "3" (valor binario 51), y ASCII "4" (valor binario 52).

/*
  
Este ejemplo lee tres sensores analógicos (potenciómetros es más fácil) y envía sus valores al puerto serie. Los programas Procesing y  Max / MSP en la parte de abajo toman esos tres valores y los utilizan para cambiar el color de fondo de la pantalla. 

Circuito: 
* 3 Potenciómetros conectados a las entradas analógicas 0, 1 y 2 

http://www.arduino.cc/en/Tutorial/VirtualColorMixer 

Creado 2 Diciciembre de 2006 
por David A. Mellis 
modificado 30 de Agosto de 2011 
por Tom Igoe y Scott Fitzgerald 

Este código es de dominio público. 
* /
const int redPin = A0;      // sensor para control del color rojo
const int greenPin = A1;    // 
sensor para control del color verde
const int bluePin = A2;     // 
sensor para control del color azul

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(analogRead(redPin));
  Serial.print(",");
  Serial.print(analogRead(greenPin));
  Serial.print(",");
  Serial.println(analogRead(bluePin));
}

/* Codigo de Processing para este ejemplo

//  Este codigo es de dominio publico

import processing.serial.*;

float redValue = 0;        // valor rojo
float greenValue = 0;      // valor verde
float blueValue = 0;       // valor azul

Serial myPort;

void setup() {
  size(200, 200);

  // Lista todos los puertos serie disponible
  // si se usa Processing 2.1 o posterior, use Serial.printArray()
  println(Serial.list());

  //Sé que el primer puerto en la lista de serie en mi mac
  // es siempre my  Arduino,asi que abro Serial.list()[0].
  // Abrir cualquier puerto este se está utilizando.
  myPort = new Serial(this, Serial.list()[0], 9600);
  // no generan un serialEvent () a menos que obtenga un carácter de nueva línea:
  myPort.bufferUntil('\n');
}

void draw() {
  // establece el color de fondo con los valores de color:
  background(redValue, greenValue, blueValue);
}

void serialEvent(Serial myPort) {
  // obtiene una cadena ASCII :
  String inString = myPort.readStringUntil('\n');

  if (inString != null) {
    // Se quitan los espacios en blanco:
    inString = trim(inString);
    //dividir la cadena en las comas y convertir el
    // resultado en sub cadenas en una matriz de enteros:
    float[] colors = float(split(inString, ","));
    // si la matriz tiene por lo menos tres elementos, usted sabe
    // que tiene todahecho. Poner los números en 
    // las variables de color:
    if (colors.length >=3) {
      // mapear estas de 0-255:
      redValue = map(colors[0], 0, 1023, 0, 255);
      greenValue = map(colors[1], 0, 1023, 0, 255);
      blueValue = map(colors[2], 0, 1023, 0, 255);
    }
  }
}

 */


/* Max/MSP patch for this example

 ----------begin_max5_patcher----------
1512.3oc4Z00aaaCE8YmeED9ktB35xOjrj1aAsXX4g8xZQeYoXfVh1gqRjdT
TsIsn+2K+PJUovVVJ1VMdCAvxThV7bO7b48dIyWtXxzkxaYkSA+J3u.Sl7kK
lLwcK6MlT2dxzB5so4zRW2lJXeRt7elNy+HM6Vs61uDDzbOYkNmo02sg4euS
4BSede8S2P0o2vEq+aEKU66PPP7b3LPHDauPvyCmAvv4v6+M7L2XXF2WfCaF
lURgVPKbCxzKUbZdySDUEbgABN.ia08R9mccGYGn66qGutNir27qWbg8iY+7
HDRx.Hjf+OPHCQgPdpQHoxhBlwB+QF4cbkthlCRk4REnfeKScs3ZwaugWBbj
.PS+.qDPAkZkgPlY5oPS4By2A5aTLFv9pounjsgpnZVF3x27pqtBrRpJnZaa
C3WxTkfUJYA.BzR.BhIy.ehquw7dSoJCsrlATLckR.nhLPNWvVwL+Vp1LHL.
SjMG.tRaG7OxT5R2c8Hx9B8.wLCxVaGI6qnpj45Ug84kL+6YIM8CqUxJyycF
7bqsBRULGvwfWyRMyovElat7NvqoejaLm4f+fkmyKuVTHy3q3ldhB.WtQY6Z
x0BSOeSpTqA+FW+Yy3SyybH3sFy8p0RVCmaMpTyX6HdDZ2JsPbfSogbBMueH
JLd6RMBdfRMzPjZvimuWIK2XgFA.ZmtfKoh0Sm88qc6OF4bDQ3P6kEtF6xej
.OkjD4H5OllyS+.3FlhY0so4xRlWqyrXErQpt+2rsnXgQNZHZgmMVzEofW7T
S4zORQtgIdDbRHrObRzSMNofUVZVcbKbhQZrSOo934TqRHIN2ncr7BF8TKR1
tHDqL.PejLRRPKMR.pKFAkbtDa+UOvsYsIFH0DYsTCjqZ66T1CmGeDILLpSm
myk0SdkOKh5LUr4GbWwRYdW7fm.BvDmzHnSdH3biGpSbxxDNJoGDAD1ChH7L
I0DaloOTBLvkO7zPs5HJnKNoGAXbol5eytUhfyiSfnjE1uAq+Fp0a+wygGwR
q3ZI8.psJpkpJnyPzwmXBj7Sh.+bNvVZxlcKAm0OYHIxcIjzEKdRChgO5UMf
LkMPNN0MfiS7Ev6TYQct.F5IWcCZ4504rGsiVswGWWSYyma01QcZgmL+f+sf
oU18Hn6o6dXkMkFF14TL9rIAWE+6wvGV.p.TPqz3HK5L+VxYxl4UmBKEjr.B
6zinuKI3C+D2Y7azIM6N7QL6t+jQyZxymK1ToAKqVsxjlGyjz2c1kTK3180h
kJEYkacWpv6lyp2VJTjWK47wHA6fyBOWxH9pUf6jUtZkLpNKW.9EeUBH3ymY
XSQlaqGrkQMGzp20adYSmIOGjIABo1xZyAWJtCX9tg6+HMuhMCPyx76ao+Us
UxmzUE79H8d2ZB1m1ztbnOa1mGeAq0awyK8a9UqBUc6pZolpzurTK232e5gp
aInVw8QIIcpaiNSJfY4Z+92Cs+Mc+mgg2cEsvGlLY6V+1kMuioxnB5VM+fsY
9vSu4WI1PMBGXye6KXvNuzmZTh7U9h5j6vvASdngPdgOFxycNL6ia1axUMmT
JIzebXcQCn3SKMf+4QCMmOZung+6xBCPLfwO8ngcEI52YJ1y7mx3CN9xKUYU
bg7Y1yXjlKW6SrZnguQdsSfOSSDItqv2jwJFjavc1vO7OigyBr2+gDYorRk1
HXZpVFfu2FxXkZtfp4RQqNkX5y2sya3YYL2iavWAOaizH+pw.Ibg8f1I9h3Z
2B79sNeOHvBOtfEalWsvyu0KMf015.AaROvZ7vv5AhnndfHLbTgjcCK1KlHv
gOk5B26OqrXjcJ005.QqCHn8fVTxnxfj93SfQiJlv8YV0VT9fVUwOOhSV3uD
eeqCUClbBPa.j3vWDoMZssNTzRNEnE6gYPXazZaMF921syaLWyAeBXvCESA8
ASi6Zyw8.RQi65J8ZsNx3ho93OhGWENtWpowepae4YhCFeLErOLENtXJrOSc
iadi39rf4hwc8xdhHz3gn3dBI7iDRlFe8huAfIZhq
-----------end_max5_patcher-----------

No hay comentarios:

Publicar un comentario