lunes, 4 de noviembre de 2013

Arduino y Bluetooth

Conexion de un modulo Bluetooth a Arduino con un display 7 segmentos.



Buenas!,

Como comente anteriormente, me llego un modulo bluetooth que pedi por ebay, y ya pude hacer las primeras pruebas,, destaco que es super sencillo utilizarlo, asi que en esta ocasión la idea era que los numeros que escribiera en el computador, se vean reflejados en un display 7-segmentos de un dígito con conexión serial via Bluetooth.








Pueden ver como funciona aca:








Y finalmente el codigo:

char val; 
int ledpin = 13; 

int G = 8;
int F = 7;
int A = 2;
int B = 3;
int E = 6;
int D = 5;
int C = 4;
int dp = 9;

void setup()

{
  
  pinMode(ledpin, OUTPUT);  
  Serial.begin(9600);       
  
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(dp, OUTPUT);
  
}

void np() {
  digitalWrite(dp, HIGH);
}

void n1() {
  
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  
}

void n2() {
  digitalWrite(A, HIGH);
  digitalWrite(G, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(E, HIGH);
}


void n3() {
  digitalWrite(A, HIGH);
  digitalWrite(G, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}
  
  
  void n4() {
    digitalWrite(F, HIGH);
    digitalWrite(G, HIGH);
    digitalWrite(B, HIGH);
    digitalWrite(C, HIGH);
  }
  
  
  void n5() {
    
  digitalWrite(A, HIGH);
  digitalWrite(G, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(C, HIGH);
  }
    
    void n6()
    {
 
  digitalWrite(G, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(A, HIGH);
  digitalWrite(E, HIGH);
  
    }
  
  void n7() {
     digitalWrite(C, HIGH);
     digitalWrite(B, HIGH);
  digitalWrite(A, HIGH);
  
  }
  
  void n8() {
  digitalWrite(G, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(A, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(B, HIGH);   
  }
  
  void n9() {
    digitalWrite(G, HIGH);
  
  digitalWrite(F, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(A, HIGH);
  
  digitalWrite(B, HIGH); 
  
  }
    void n0() {
      
       digitalWrite(F, HIGH);
  digitalWrite(C, HIGH);
   digitalWrite(E, HIGH);
  digitalWrite(B, HIGH); 
  digitalWrite(A, HIGH);
  digitalWrite(D, HIGH);
  
  
      
    }
void loop() {
  
  
  
  digitalWrite(F, LOW);
  digitalWrite(C, LOW);
  digitalWrite(E, LOW);
  digitalWrite(B, LOW); 
  digitalWrite(A, LOW);
  digitalWrite(D, LOW);
  digitalWrite(G, LOW);
  digitalWrite(dp, LOW);
  
  if( Serial.available() )       // if data is available to read
  {
    val = Serial.read();         // read it and store it in 'val'
  }
  
  if( val == '1')
  {
n1();
  
  
  }
  
  if( val == '2')
 {
 n2();
  
  
 } 
 
 
 if( val == '3'){
   n3();
  
 }
 
 if( val == '4'){
      n4();
    
 }

if( val == '5'){
 n5();
  
}

if( val == '6'){
  n6();
  
  
}

if( val == '7'){
    n7();
  
  
  }
  
  if( val == '8'){
n8();

}
  
  if( val == '9'){
  n9();
  
  }
  
  
  if( val == '0'){
    n0();
  
  }
    
  if( val =='.') {
    np();
  }
 
}


domingo, 3 de noviembre de 2013

Display 7 segmentos

Conexion display 7 seg. con Arduino uno




Estuve probando la conexión de un display 7 seg. al Arduino uno, y para empezar encontre un codigo muy bueno,


Primero vamos a ver de que se trata el display de 7 seg.

Basicamente tenemos dos tipos, Anodo comun y Catodo comun, en mi caso use uno de Catodo común, con lo cual, la masa es compartida entre todos los segmentos, 
Luego tenemos otra seria de segmentos, (a, b, c, d, e, f, g, dp) que a medida que lo vamos alimentando van prendiendo, 

Vean la figura:








El circuito de conexion es el siguiente:








Y el codigo, cortesia de: http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html


/*
*** esto es para Anado Comun ****

byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 },  // = 0
                                 { 1,0,0,1,1,1,1 },  // = 1
                                 { 0,0,1,0,0,1,0 },  // = 2
                                 { 0,0,0,0,1,1,0 },  // = 3
                                 { 1,0,0,1,1,0,0 },  // = 4
                                 { 0,1,0,0,1,0,0 },  // = 5
                                 { 0,1,0,0,0,0,0 },  // = 6
                                 { 0,0,0,1,1,1,1 },  // = 7
                                 { 0,0,0,0,0,0,0 },  // = 8
                                 { 0,0,0,1,1,0,0 }   // = 9
                               };
                               
                               */
                           
 
 byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                 { 0,1,1,0,0,0,0 },  // = 1
                                 { 1,1,0,1,1,0,1 },  // = 2
                                 { 1,1,1,1,0,0,1 },  // = 3
                                 { 0,1,1,0,0,1,1 },  // = 4
                                 { 1,0,1,1,0,1,1 },  // = 5
                                 { 1,0,1,1,1,1,1 },  // = 6
                                 { 1,1,1,0,0,0,0 },  // = 7
                                 { 1,1,1,1,1,1,1 },  // = 8
                                 { 1,1,1,0,0,1,1 }   // = 9
                               };
 
void setup() {                
  pinMode(2, OUTPUT);   
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  writeDot(0);  // 
}
 
void writeDot(byte dot) {
  digitalWrite(9, dot);
}
 
void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++segCount) {
     digitalWrite(pin, seven_seg_digits[digit][segCount]);
     ++pin;   
   } 
} 
 
void loop() {   
  for (byte count = 10; count > 0; --count) {
    delay(1000);
    sevenSegWrite(count - 1); 
  }
 
  delay(4000);   // Aguarda 4 segundos para volver a empezar
}



Lo que nos quedaria algo así:





Dicho sea de paso, hace dos días me llego el modulo Bluetooth que pedí, el cual pueden ver en el video conectado entre el arduino y el 7 seg.,  así que en unos días voy a estar subiendo las primeras pruebas con dicho modulo :)

Si tienen alguna consulta o idea, no duden en comentarla



Saludos!