lunes, 11 de enero de 2016

Bluetooth con Arduino y Processing

En estre proyecto estaremos utilizando :


1- ARDUINO UNO
2- BLUETOOTH
3- PROCESSING (Software)  https://processing.org

Circuito de coneccion electrica:


Arduino Sketsh:

_______________________________________________________________

char val; // variable to receive data from the serial port

int ledpin = 13; // LED connected to pin 13 (on-board LED)

void setup() {
  pinMode(ledpin, OUTPUT);  // pin 13 (on-board LED) as OUTPUT
  Serial.begin(9600);       // start serial communication at 9600bps
}

void loop() {
  if( Serial.available() )       // if data is available to read
  {
    val = Serial.read();         // read it and store it in 'val'
  }
  if( val == 'H' )               // if 'H' was received
  {
    digitalWrite(ledpin, HIGH);  // turn ON the LED
  } else { 
    digitalWrite(ledpin, LOW);   // otherwise turn it OFF
  }
  delay(100);                    // wait 100ms for next reading
}

______________________________________________________


PROCESSING

__________________________________________________


//import class to set up serial connection with wiring board
import processing.serial.*;
Serial port;
//button setup
color currentcolor;
RectButton rect1, rect2;
boolean locked = false;
void setup() {
  //set up window
  size(200, 200);
  color baseColor = color(#D8D6D6);
  currentcolor = baseColor;
  // Lista todos los puertos serie disponibles en el panel de salida.
   // Usted tendrá que elegir el puerto que la tarjeta
   // Conectado a partir de esta lista. El primer puerto en la lista es
   // Puerto # 0 y el tercer puerto en la lista es el puerto # 2. 
  println(Serial.list()); 
 // Abrir el puerto que la tarjeta Wiring está conectado a (en este caso 1
   // Que es el segundo puerto abierto en la matriz)
   // Asegúrese de abrir el puerto al mismo cableado de velocidad está utilizando (9600bps)
  port = new Serial(this, Serial.list()[2], 9600);
  // Definir y crear botón rectángulo # 1
  int x = 30;
  int y = 75;
  int size = 50;
  color buttoncolor = color(#14C949);
  color highlight = color(102, 51, 51); 
  rect1 = new RectButton(x, y, size, buttoncolor, highlight);
  // Definir y crear botón rectángulo # 2
  x = 120;
  y = 75; 
  size = 50;
  buttoncolor = color(#FF030B);
  highlight = color(102, 102, 102); 
  rect2 = new RectButton(x, y, size, buttoncolor, highlight);
}
void draw() {
  background(currentcolor);
  stroke(255);
  update(mouseX, mouseY);
  rect1.display();
  rect2.display();
}
void update(int x, int y) {
  if(locked == false) {
    rect1.update();
    rect2.update();
  } else {
    locked = false;
  }
  // LED encendido y apagado si los botones presionados donde
   // H = en (alta) y L = apagado (bajo)
  if(mousePressed) {
    if(rect1.pressed()) {            //ON button
      currentcolor = rect1.basecolor;
      port.write('H');
    } else if(rect2.pressed()) {    //OFF button
      currentcolor = rect2.basecolor;
      port.write('L');
    }
  }
}
class Button {
  int x, y;
  int size;
  color basecolor, highlightcolor;
  color currentcolor;
  boolean over = false;
  boolean pressed = false;   
  void update() 
  {
    if(over()) {
      currentcolor = highlightcolor;
    } else {
      currentcolor = basecolor;
    }
  }
  boolean pressed() 
  {
    if(over) {
      locked = true;
      return true;
    } else {
      locked = false;
      return false;
    }    
  }
  boolean over() 
  { 
    return true; 
  }
  void display() 
  { 
  }
}
class RectButton extends Button {
  RectButton(int ix, int iy, int isize, color icolor, color ihighlight) 
  {
    x = ix;
    y = iy;
    size = isize;
    basecolor = icolor;
    highlightcolor = ihighlight;
    currentcolor = basecolor;
  }
  boolean over() 
  {
    if( overRect(x, y, size, size) ) {
      over = true;
      return true;
    } else {
      over = false;
      return false;
    }
  }
  void display() 
  {
    stroke(255);
    fill(currentcolor);
    rect(x, y, size, size);
  }
}
boolean overRect(int x, int y, int width, int height) {
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
    return true;
  } else {
    return false;
  }
}

________________________________________________________

Informacion Relacionada:      http://playground.arduino.cc/Learning/Tutorial01

Hasta la proxima.


domingo, 3 de enero de 2016

Arduino ADXL335 - acelerómetro analógico

ADXL335


 Acelerómetro - un dispositivo para medir la aceleración. Es un acelerómetro de tres ejes analógicos.

Lo mejor de todos los efectos de las lecturas del sensor de aceleración estática se muestran en la especificación del sensor. En esta imagen se encuentra el secreto principal de la aceleración estática.


En primer lugar vamos a tratar con la parte derecha de la imagen, que cambia su valor Zout. De acuerdo con esta imagen, si ponemos nuestros contactos del sensor hacia abajo, el valor del eje Z es igual a uno (o más precisamente, uno g). Como ya he dicho - este valor no es más que una proyección de aceleración estática sobre el eje de nuestro sensor. Dado que en este caso el vector coincide con el eje Z, y la aceleración de la gravedad g es igual, tenemos un valor Zout = 1g. 
Si invertimos los contactos del sensor hacia arriba, el valor Zout se invierte. 
Vale la pena señalar que todo el resto de la aceleración igual a cero, esto es debido a la coincidencia vector ya se ha mencionado aceleración estática con el eje Z, y también el estado de reposo de todos los sensores. 

También es importante entender que la longitud del vector en el resto del sensor siempre será igual a la unidad. Vector no siempre coincide con ninguno de los ejes - en lugar de la opción de una excepción a la regla. En la mayoría de los casos, el vector se distribuirá en los tres ejes simultáneamente.

ADXL335 - Sensor triaxial. De hecho, esto tres acelerómetros diferentes en un solo paquete, cada uno de los cuales es responsable de su propio eje X, Y o Z. misma 









------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------



Arduino Sketsh
------------------------------------------------------------------------------------------------------------

/*
Arduino ADXL335 - acelerómetro analógico

 Conecciones para el circuito:

 analog pin 0: ground (tierra)
 analog pin 1: z-axis
 analog pin 2: y-axis
 analog pin 3: x-axis
 analog pin 4: voltage



// Se utilizaran los pines analogos 0=14 y 4=18 como fuente de energia.

const int voltagepin = 18;              // analogo pin 4 -- voltage
const int groundpin = 14;             // analogo pin 0 -- ground (tierra)

// La lectura pa tendremos en los pines 1,2,3 en modo analogo.

const int x-pin = A3;                  // x-axis
const int y-pin = A2;                  // y-axis
const int z-pin = A1;                  // z-axis


void setup() {
  // inicializar la comunicacion serial.
  Serial.begin(9600);

  // Recuerde que el voltage de salida es de 5 voltios.
  pinMode(voltagepin, OUTPUT);
  pinMode(powerpin, OUTPUT);
  digitalWrite(voltagepin, LOW);
  digitalWrite(powerpin, HIGH);
}

void loop() {
  // imprime el valor del sensor X:
  Serial.print(analogRead(x-pin));
  
  // imprime el valor del sensor Y:
  Serial.print("\t");
  Serial.print(analogRead(y-pin));
  
  // imprime el valor del sensor Z:
  Serial.print("\t");  
  Serial.print(analogRead(z-pin));
  Serial.println();
  
  // tiempo de espera antes de la proxima lectura:
  delay(100);
}

--------------------------------------------------------------------------------------------------------------------------------------------------------





Bueno los dejo con este simple proyecto para practica o para probar el sensor ADXL335. 
Gracias por visitar el blog.

.