miércoles, 18 de noviembre de 2015

Arduino 7 Segment LED Display and Counter

Arduino 7 Segment LED Display and Counter


This is a simple 0 to 9 counter circuit constructed using Arduino! Here, a common cathode 7-segment LED display is connected to Arduino for displaying the digits.
The whole circuit can be powered from a standard 9V PP3/6F22 battery, or from any suitable Arduino power adaptor.



The seven segment display is infact a very simple device. It is a combination of 8 LEDs (the decimal point -DP- is the 8th), which can be arranged so that different combinations can be used to make numerical digits.
Details of a common cathode type 7 segment LED display is shown here. Note that pins 3 and 8 of the display is the cathode terminals.


Just follow the schematic circuit diagram to make the entire project.
Arduino pins 2, 3, 4, 5, 6, 7 and 8 should go to Display pins 7, 6, 4, 2, 1, 9 and 10 in correct order. In case of any doubt refer this table.

arduino to display pins

Connecting the display pins directly to Arduino I/O pins is not a good practice. For testing purpose only one 330 Ohm resistor (R2) is added between ground rail (0V) and the common cathode pins (3 & 8). It is better to directly connect pins 3 & 8 of the display to ground rail. Next add a 330 Ohm resistor between each of the other connections to the Arduino.

Programming

int pausa=1000; 

void setup()
{
  pinMode(2, OUTPUT);  
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}

void display (int a, int b, int c, int d, int e, int f, intg)
{
  digitalWrite (2,a);   
  digitalWrite (3,b);   
  digitalWrite (4,c);
  digitalWrite (5,d);
  digitalWrite (6,e);
  digitalWrite (7,f);
  digitalWrite (8,g);
}

void loop() 
{
  display (1,1,1,1,1,1,0); //write 0
  delay(pausa);
  display (0,1,1,0,0,0,0); //write 1
  delay(pausa);
  display (1,1,0,1,1,0,1); //write 2
  delay(pausa);
  display (1,1,1,1,0,0,1); //write 3
  delay(pausa);
  display (0,1,1,0,0,1,1); //write 4
  delay(pausa);
  display (1,0,1,1,0,1,1); //write 5
  delay(pausa);
  display (1,0,1,1,1,1,1); //write 6
  delay(pausa);
  display (1,1,1,0,0,0,0); //write 7
  delay(pausa);
  display (1,1,1,1,1,1,1); //write 8
  delay(pausa);
  display (1,1,1,0,0,1,1); //write 9
  delay(pausa);
}

Frank.

martes, 17 de noviembre de 2015

Control de 2 relés a través de web.

Control de 2 relés por página web

Vamos a realizar una practica para el control de 2 reles conectandonos por una tablet, móvil o pc.
Para realizar dicha páctica vamos a utilizar lo siguiente:
      - Placa Arduino uno.
      - Placa Ethernet.
      - Placa de 2 reles.
      - Cables para las conexiones.

Para la instalación, montamos la placa Ethernet en la placa Arduino y cableamos con la de reles de la siguiente forma:



A continuación cargamos en nuestro Arduino el siguiente programa:

/*
    Arduino Ethernet Shield
Control Remoto de 2 Reles by Frank  
*/

#include <SPI.h>
#include <Ethernet.h>

byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip(192,168,1,9);
EthernetServer servidor(80);

int PIN_LED1=5;
String readString1=String(30);
String state1=String(3);
int PIN_LED2=6;
String state2=String(3);

void setup()
{
 Ethernet.begin(mac, ip);
 servidor.begin();

 pinMode(PIN_LED1,OUTPUT);
 digitalWrite(PIN_LED1,LOW);
 state1="OFF";
 digitalWrite(PIN_LED2,LOW);
 pinMode(PIN_LED2,OUTPUT);
 state2="OFF";

}

void loop()
{
 EthernetClient cliente= servidor.available();

 if(cliente)
 {
   boolean lineaenblanco=true;
   while(cliente.connected())
   {
     if(cliente.available())
     {
       char c=cliente.read();
       if(readString1.length()<30)
       {
         readString1.concat(c);
       
       }
       if(c=='\n' && lineaenblanco)
       {
         int LED1 = readString1.indexOf("LED1=");
         int LED2 = readString1.indexOf("LED2=");
         
         if(readString1.substring(LED1,LED1+6)=="LED1=T")
         {
           digitalWrite(PIN_LED1,HIGH);
           state1="ON";
         } else if (readString1.substring(LED1,LED1+6)=="LED1=F")
         {
           digitalWrite(PIN_LED1,LOW);
           state1="OFF";
         }
         if(readString1.substring(LED2,LED2+6)=="LED2=T")
         {
           digitalWrite(PIN_LED2,HIGH);
           state2="ON";
         } else if (readString1.substring(LED2,LED2+6)=="LED2=F")
         {
           digitalWrite(PIN_LED2,LOW);
           state2="OFF";
  }
     
         } 
         //Cabecera HTTP estándar
         cliente.println("HTTP/1.1 200 OK");
         cliente.println("Content-Type: text/html");
         cliente.println();        
         //Página Web en HTML
         cliente.println("<html>");
         cliente.println("<head>");
         cliente.println("<title>Control 2 Reles</title>");
         cliente.println("<h2><font color='#2076CD'>Control Remoto de Reles v1.0</font color></div></h2>");
         cliente.print("<body bgcolor='#149195'>");
         cliente.println("</head>");
         cliente.println("<h3>RELE 1</h3>");
         cliente.println("<input type=submit value=OFF style=width:50px;height:25px onClick=location.href='./?LED1=T\'>");
         cliente.println("<input type=submit value=ON style=width:50px;height:25px onClick=location.href='./?LED1=F\'>");
         cliente.print("Estado: ");
         cliente.print(state1);
         cliente.println("<h3>RELE 2</h3>");
         cliente.println("<input type=submit value=OFF style=width:50px;height:25px onClick=location.href='./?LED2=T\'>");
         cliente.println("<input type=submit value=ON style=width:50px;height:25px onClick=location.href='./?LED2=F\'>");
         cliente.print("Estado: ");
         cliente.print(state2);
         cliente.println("</body>");
         cliente.println("</html>");
         cliente.stop();
         readString1="";
       }
     }
   }
  }
 }


Conectamos la toma Ethernet del Arduino al Router y desde el móvil, tablet o Pc conectado a la wifi o red de dicho router abrimos un navegador y marcamos la ip 192.168.1.9 y le damos al enter.

Vemos que nos aparece la siguiente pantalla:



Interactuando sobre los botones de ON y OFF conseguimos apagar y encender los reles, los cuales se pueden utilizar para conectar una luz, un motor, etc.

Display de 7 segmentos

Display de 7 segmentos (1 dígito)

Introducción teórica

Un display de segmentos (o visualizador) es un componente electrónico que se utiliza para representar números. Como su propio nombre indica y, como se puede observar en la imagen siguiente, el display está compuesto por 7 segmentos, los cuales se encenderán y/o apagarán en función del número a representar. De forma interna, se asemeja a siete LEDs conectados estratégicamente formando el número 8, aunque externamente dicha semejanza no se observa, de ahí su simplicidad.



Cada uno de los segmentos que componen este display se denominan a, b, c, d, e, f y g, tal y como se muestra a continuación.


Para mostrar el número 0, tendremos que encender a, b, c, d, e y f.
Para el número 2, tendríamos a, b, g, e y d.
Y de la misma forma para cualquier otro número.
El simboliza el punto decimal.

En cuanto a la clasificación, existen de dos tipos:
1. Display de segmentos de cátodo común, en la que todos los cátodos de los LEDs están internamente unidos a una patilla común, la cual está conectada al potencial negativo de la placa.
2. Display de segmentos de ánodo común, en la que todos los ánodos se encuentran al positivo.

Para nuestro caso, disponemos de uno de tipo cátodo común, el LMS5161AS (luz roja, tamaño de dígito 0.56'').


Conexiones



En lo que se refiere a las conexiones, tenemos que tener en cuenta cada segmento a qué pin lo vamos a conectar, para poder efectuar una llamada a los pines correcta. En nuestro caso, hemos hecho las siguientes conexiones (puede variar la designación según convenga):

Segmento a - pin 7
Segmento b - pin 8
Segmento c - pin 9
Segmento d - pin 10
Segmento e - pin 11
Segmento f - pin 12
Segmento g - pin 13


Práctica de ejemplo


Vamos a realizar un ejemplo en el cual nuestro display irá mostrando de forma ascendente todos los números con un intervalo de separación de 1 segundo.
Aquí tenemos el sketch:


int pausa=1000; // Variable que define el intervalo
                // de tiempo entre cada digito

void setup()
{
  pinMode(7, OUTPUT);  // Asignación de las salidas digitales
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void display (int a, int b, int c, int d, int e, int f, int g)
// Función del display
{
  digitalWrite (7,a);   //Se reciben 7 variables y se asignan
  digitalWrite (8,b);   //a cada una de las salidas
  digitalWrite (9,c);
  digitalWrite (10,d);
  digitalWrite (11,e);
  digitalWrite (12,f);
  digitalWrite (13,g);
}

void loop() //Función principal
// Dependiendo de cada dígito, se envía a la función display
// Los estados (0 y 1) a cada uno de los segmentos
{
  display (1,1,1,1,1,1,0); //escribe 0
  delay(pausa);
  display (0,1,1,0,0,0,0); //escribe 1
  delay(pausa);
  display (1,1,0,1,1,0,1); //escribe 2
  delay(pausa);
  display (1,1,1,1,0,0,1); //escribe 3
  delay(pausa);
  display (0,1,1,0,0,1,1); //escribe 4
  delay(pausa);
  display (1,0,1,1,0,1,1); //escribe 5
  delay(pausa);
  display (1,0,1,1,1,1,1); //escribe 6
  delay(pausa);
  display (1,1,1,0,0,0,0); //escribe 7
  delay(pausa);
  display (1,1,1,1,1,1,1); //escribe 8
  delay(pausa);
  display (1,1,1,0,0,1,1); //escribe 9
  delay(pausa);
}

                                                                                                                                                           Frank.

lunes, 4 de mayo de 2015

Sensor detector de gases.

Sensor detector de gases

          Este módulo es capaz de medir la calidad de el aire en edificios y casas. Puede detectar la presencia de: NH3, NOx, alcohol, benceno, humo, CO2, etc.



Características
  • Voltaje de operación 5 V CD.
  • Interfase de 4 pins: +, -, salida analógica y salida nivel TTL.

                                                                                                                                          Frank.

Sensor de reflexión de infrarojos, detector de obstaculos.

Sensor de reflexión de infrarrojos, detector de obstaculos

          El sensor evasor de obstáculos utiliza un transmisor y un receptor infrarrojo, el emisor emite una señal a cierta frecuencia que es recibida por el receptor cuando se refleja ante la presencia de un obstáculo, un indicador verde se enciende cuando se detecta la presencia de un obstáculo. El rango de detección puede ser ajustado mediante u potenciómetro. Este sensor puede usarse en robots evasores de obstáculos, seguidores de línea y otras aplicaciones.

Especificaciones:

·        Voltaje: 3.3 ~ 5 VDC
·        Rango de detección: 2 ~ 30 cm
·        Angulo de detección: 35°
·        Salida digital: 0 o 5 VDC
·        Dimensiones: 32 x 14 mm

                                                                                                           Frank.