miércoles, 27 de enero de 2016

Transmisión Bluetooth Con Micro Controladores

En el siguiente vídeo se  explica como realizar transmisiones remotas desde nuestro teléfono o tablet  hacia un micro controlador mediante el uso de Bluetooth. Para ello debemos descargar la aplicaciòn gratuita RC Bluetooth desde Google Play o Amazon.




Para observar como debemos programar nuestro micro controlador debemos visualizar el siguiente vídeo


Diseño de Generador de Funciones con Micro Controlador

En este tutorial aprenderemos a diseñar un Generado de Funciones mediante el uso de un  micro controlador. El micro controlador a utilizar será el Arduino pero puede ser usado cualquier micro controlador.  Las aplicaciones que se requieren para el proyecto la pueden descargar gratuitamente desde Google Play y Amazon.

Para controlar remotamente el generador de funciones desde nuestro teléfono o tablet  debemos descargar la  aplicación RC Bluetooth Control la cual descargamos desde Google Play:


  La podemos descargar desde Amazon:


Para visualizar las señales generadas podemos usar un osciloscopio, sino lo tenemos podemos convertir nuestra tablet o teléfono en un osciloscopio . Para ello debemos descargar de manera gratuita la aplicación Osciloscopio  desde Google Play:


La podemos descargar desde Amazon:


Una vez que hemos descargado las aplicaciones  e instaladas en nuestros teléfonos y Tablet, podemos visualizar el siguiente vídeo, donde se explica detalladamente el diseño del Generador de Funciones:


El programa para ser cargado en nuestro arduino es el siguiente:

// include the library code:
#include <LiquidCrystal.h>
#include <TinyGPS.h>
//String mensaje,mensaje3;
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 12); // RX, TX
char inChar;
int sw=0;
int sine[255];


void setup() {

  
  //Serial.begin(9600);

     pinMode(0, OUTPUT); 
     pinMode(1, OUTPUT); 
     pinMode(2, OUTPUT); 
     pinMode(3, OUTPUT); 
     pinMode(4, OUTPUT);
     pinMode(5, OUTPUT);
     pinMode(6, OUTPUT); 
     pinMode(7, OUTPUT);
     float x; 
     float y; 
     for(int i=0;i<255;i++)
     {
          x=(float)i;
          y=sin((x/255)*2*PI);
          sine[i]=int(y*128)+128;
     }
  mySerial.begin(9600);

}

void loop() { 
  
    while (mySerial.available() > 0)
    {
       inChar =mySerial.read();
       //Serial.println(inChar);
       switch (inChar)
       {
        //Onda Tiangular
        case 'U' :sw=1;
        break;
        //Onda Rampa Poitiva
        case 'E' :sw=2;
        break;
        //Onda Negativa
        case 'R': sw=3;
        break; 
        // OndaSeno
        case 'C': sw=4;
        break;       
       }
       //Serial.println(sw);       
     }

     switch (sw)
     {
       case 1:for (int i=0;i<255;i++) 
     { 
          PORTD=i;
     } 
     for (int i=255;i>0;i--) 
     { 
          PORTD=i;
     }
       break;
       case 2:for (int i=0;i<255;i++) 
     { 
          PORTD=i;
     } 
       break; 
       case 3: for (int i=255;i>0;i--) 
     { 
          PORTD=i;
     }
       break;
        case 4:for (int i=0;i<255;i++) 
     { 
          PORTD=sine[i]; 
          delayMicroseconds(10); 
     }
       break;
       
      
     
     }

}