Friday, September 26, 2014

Pinguino - Lecturas Digitales y Analogicas

El día de hoy les traigo un vídeo explicativo de algunas funciones básicas para lecturas analógicas y digitales empleando la tarjeta de desarrollo Pinguino, así como también la manipulación de puertos completos de la misma tarjeta a partir de las función PORTX, donde la x son cada uno de los puertos con los que cuentan nuestro hardware cuales pueden ser 'A', 'B', 'C', 'D', etc... dependiendo las especificaciones de su propia tarjeta pinguino.

Ahora bien que es una lectura analógica, para comenzar con la definición hay que definir que es algo analógico y la mas clara definición seria todo aquello que no tiene una magnitud definida o un rango definido es decir que puede tomar una serie infinita de valores dependiendo su unidad, por ejemplo voltajes, corrientes, potencia, intensidad luminosa, etc... ahora bien una lectura analógica consiste en convertir toda esa serie de valores no definidos y definirlos en un rango lógico o digital es decir 0 y 1 claramente usando un sistema binario, decimal, hexadecimal o octadecimal. Ahora bien la mayoría de los microcontroladores cuentan con conversores analógicos - digitales, la diferencia regularmente entre uno y otros es la resolución, ¿Que es la resolución? algo muy simple la capacidad de poder representar esa magnitud analógica en un rango delimitado lógico, ¿Cuales son las resoluciones existentes en microcontroladores? de 8, 10 y 12 bits, los cuales representan para 8 bits 255 valores posibles, para 10 bits 1024 valores posibles y finalmente para 12 bits 4096.

Bueno finalmente eso seria la parte analógica, que sigue a continuación lo digital, lo digital se centra en solo dos estados 0 y 1, Verdadero y Falso, por lo que en ello radica la simplicidad y comodidad de este tipo de sistema, la comunicación entre dispositivos digitales consiste en una secuencia binaria es de decir de 0 y 1, por ejemplo y por asi decir ejemplo consideremos que para cambiar el canal de nuestro televisor nuestro control envía una secuencia binaria o paquete de datos hacia el televisor, como el siguiente 01011000 de 8 bits en el va codificado la instrucción de cambio y la información del canal a mover, esa complejidad de que un solo paquete de datos envíe mucha información es lo que lo hace sumamente atractivo en las telecomunicaciones.

A continuación muestro el sistema empleado en mi Pinguino 4550, como ven es bastante simple y versatil para todas las maravillas que puedo hacer con el.

Esquematico


Concrete


Y por ello aquí los siguiente códigos usados durante el video con mi tarjeta Pinguino.

1.- Encender un puerto por completo (Función PORTB)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i=0;i<8;i++){
       pinMode(i,OUTPUT);
    }
    }

void loop() {
    //run repeatedly:
    PORTB = 255;
    }


2.- Contador Binario en el Puerto B (Funcion PORTB y FOR)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i=0;i<8;i++){
       pinMode(i,OUTPUT);
    }
    }

void loop() {
    //run repeatedly:
    int j;
    for(j=0;j<8;j++){
       PORTB = j;
       delay(1000); 
    }
    }


3.- Lectura Digital y switcheo de un Puerto Entero (Función digitalRead)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    if(digitalRead(13)){

      do{
      PORTB = 255;
      }
      while(digitalRead(13));
      PORTB = 0;
    }
    }


4.- Lectura Digital y ciclo For en Puerto Entero (Función digitalRead y For)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255};
    int j;
    
    if(digitalRead(13)){
       do{
          for(j=0; j<8;j++){
              PORTB = Buffer[j];
              delay(100);
          }
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }


5.- Lectura Digital y condicional if en Puerto Entero (Función digitalRead y If)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255};
    int j;
    
    if(digitalRead(13)){
       do{
          if(j > 0 && j < 8){
              PORTB = Buffer[j];
              delay(100);
          }
          else
              j = 0;
              j ++;
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }


6.- Efecto KID (Función digitalRead y If)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Buffer[] = {1,3,7,15,31,63,127,255,127,63,31,15,7,3,1};
    int j;
    
    if(digitalRead(13)){
       do{
          if(j > 0 && j < 16){
              PORTB = Buffer[j];
              delay(50);
          }
          else
              j = 0;
              j ++;
      }
       while(digitalRead(13));
    PORTB = 0;
    }
    }


7.- Lectura Analógica (Función analogRead)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Dato_Analogico = 0;
    delay(20);
    Dato_Analogico = analogRead(13);
    delay(20);
    PORTB = Dato_Analogico;
    }


7.- Lectura Analógica y parametrización de datos (Función analogRead y map)
/*----------------------------------------------------- 
Author: Jeals Blog --<>
Date: 
Description: - Manipulación de puertos completos -
- Lecturas Digitales y Analógicas -
-----------------------------------------------------*/


void setup() {
    //run once:
    int i;
    for (i = 0; i < 8; i++){
        pinMode(i,OUTPUT);    
        }
    }

void loop() {
    int Dato_Analogico = 0;
    delay(20);
    Dato_Analogico = analogRead(13);
    delay(20);
    Dato_Analogico = map(Dato_Analogico,0,1023,0,255);
    PORTB = Dato_Analogico;
    }


If you like our work in Jeal's Blog just subscribe yourself. Get our posts in your RSS reader or by email.
Written by Jefferson GoVa

Ingeniero en electronica con aficiones a escribir y compartir todo aquello que le llama la atencion o que su curiosidad atrapa..

#Curioseando #Perdiendoeltiempo #sinnadamejorquehacer.

No comments:

Post a Comment