Bluetooth-Display

En la primera parte de hoy de Blogs de varias partes construimos a nosotros Bluetooth libremente configurable el LCD display. Sobre Bluetooth en serie el perfil ponemos a la disposición al cliente Bluetooth-un menú ASCII sobre el cual el LCD display es completamente controlable. A continuación ampliaremos sobre Blogteile fuera el menú y montamos nuevas (comodidades) funciones. En la primera parte de la fila construimos el menú de selección, e implementamos directo En serie al display la solicitud que distribuye las letras escritas a máquina al signo para el signo directamente evidentemente en nuestro display. Con esto usamos el signo de impuesto „Enter“ al cambio de las líneas de display (1-4) y para el fin de la consecuencia de entrada, sino también el signo de impuesto „Backspace“ a la extinción de solicitudes equivocadas precedentes. Llamaremos la función en el menú „Direct Print“. Bluetooth el adaptador en el PC puede ser utilizado, por un lado, a la construcción de Bluetooth la relación en la relación con un programa de terminal como „Putty“, sino también un móvil compatible el APARTAMIENTO que apoya Bluetooth en serie el perfil. Al transferencia de la interface en serie en Bluetooth el estándar usamos Bluetooth famoso el módulo el HC 05.

Miramos la lista parcial de nuestro proyecto:

1x Bluetooth HC-05 el módulo

1x Display HD44780 LCD 4x20

1x cortabordes el potenciómetro Max la resistencia 10kΩ1

1x 130 Ω la resistencia la tolerancia ±5%

1x Uno R3 Board el tipo ONU R3 ATmega328P

No muchas partes son necesitadas para este proyecto, también el Beschaltung de los componentes particulares se mantiene en fronteras.

Cargamos ONU el código siguiente en lo alto en nuestro Arduino:

 

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

#define MaxInputBufferSize 20 //como máximo 255 signos adaptan en vlcdr
#define rLcdChr 20
#define LcdRows 4
#define interval 1000

SoftwareSerial mySerial(7, 6); //RX, TX
LiquidCrystal lcd(8, 13, 12, 11, 10, 9);

//variable

//Serial el input Handling
char TBuffer;
char Cbuffer[MaxInputBufferSize+1];       //Código USB el input el tope
Bramante Sbuffer = "";                      //Bramante USB el input el tope
int value;                                //Input USB Nummeric el tope
int  MnuState = 0;
byte Ccount = 0;                          //Number received Chars
byte Inptype = 0;
boolean StrInput = false;
boolean NumberInput = false;
boolean DataInput = false;
boolean EnterInput = false;
byte MenueSelection = 0;
//Give Debug Informations over serial la interfaz
boolean DebugMode = false;
boolean Moda de eco = true;
//Display el management
boolean Directprint = false;
byte DirectprintROW = 0;
byte DirectprintLine = 0;

boolean RefreshDisplay = false;

void Setup()    {    lcd.begin(rLcdChr, LcdRows);   lcd.clear();   lcd.cursor de juego(0, 0);   lcd.print("Bluetooth");   lcd.cursor de juego(0, 1);   lcd.print("Display");   mySerial.begin(9600);   lcd.cursor de juego(0, 0);   mySerial.flush();
}

void SerialcommandProcessor()
{
int a;
Inptype = 0;
Inptype = SerInputHandler();
//0 ninguna devolución 
//1 número 
//2 bramantes 
//3 Data
if ((Inptype > 0) & (!Directprint))               {    MenueSelection = 0;    if ((MnuState < 2) && (Inptype == 2)) {Sbuffer.toUpperCase(); } //For Easy el anillo de pato Commands    if ((Sbuffer == "D") && (MnuState == 0) && (Inptype == 2))       { MenueSelection = 15;}    switch (MenueSelection)      {        case 15:        {        //Direct pPrint to el display        Directprint = true;        mySerial.println ("Directprint ON.");        if (Directprint)        {        DirectprintROW = 0;        DirectprintLine = 0;        lcd.clear();        lcd.cursor();        lcd.fulgura();        }        value = 0;             Sbuffer = "";        MnuState = 0;        break;         }        default:        {          mySerial.println("-------Smart Bluetooth el display 1.0------");          mySerial.println("D - Direct Print");          mySerial.println("----------------------------------------");          mySerial.println("Type Cmd y aprieta Enter");          mySerial.flush();          MnuState = 0;          value = 0;          Sbuffer = "";        }           }      } //Solicitud reconocido
//Tope de entrada
}

boolean CheckforserialEvent()
{   while (mySerial.available()) {      //get the new el byte:      TBuffer = mySerial.read();       if (TBuffer > 9 && TBuffer < 14)        {         Cbuffer[Ccount] = 0;         TBuffer =0;         if (Moda de eco)           {            mySerial.print(char(13));            mySerial.flush();          }            if (Directprint)           {           mySerial.println("");           DirectprintLine = 0;           DirectprintROW = DirectprintROW + 1;           if ( DirectprintROW > 3)            {                     Directprint = false;                    lcd.noCursor();                    lcd.noBlink();                    Sbuffer = "";                    value = 0;                                 } else            {           lcd.cursor();           lcd.fulgura();           lcd.cursor de juego(0,DirectprintROW);           }           }          EnterInput = true;           return true;      } else if (TBuffer > 47 && TBuffer <58 )       {        if ( Ccount < MaxInputBufferSize)           {             Cbuffer[Ccount] = TBuffer;               Ccount++;             if ((Directprint))               {                  lcd.print(char(TBuffer));                  DirectprintLine = DirectprintLine + 1;                  if ( Ccount > MaxInputBufferSize -1)                   {                    lcd.noCursor();                    lcd.noBlink();                    } else {                    lcd.cursor();                    lcd.fulgura();                    }                                 }                      if (Moda de eco) {              mySerial.print(char(TBuffer));              mySerial.flush();             }            } else {mySerial.print("#"); }            //Number el input detected       NumberInput = true;       }        else if (TBuffer > 64 && TBuffer < 123 )       {        if ( Ccount < MaxInputBufferSize)           {             Cbuffer[Ccount] = TBuffer;               Ccount++;             if ((Directprint))               {                  lcd.print(char(TBuffer));                                 DirectprintLine = DirectprintLine + 1;                  if ( Ccount > MaxInputBufferSize -1)                   {                    lcd.noCursor();                    lcd.noBlink();                    } else {                    lcd.cursor();                    lcd.fulgura();                    }                       }                if (Moda de eco) {              mySerial.print(char(TBuffer));              mySerial.flush();             }            } else {mySerial.print("#"); }       //Character Char el input detected       StrInput = true;      }     else if ( (TBuffer == 127 )  |  (TBuffer == 8 ) )          {                       if ( DirectprintLine > 0 )                  {                  DirectprintLine = DirectprintLine - 1;                  lcd.cursor de juego(DirectprintLine, DirectprintROW);                   lcd.print(" ");                  lcd.cursor de juego(DirectprintLine, DirectprintROW);                   }                                                       if (( DirectprintLine == 0 ) & ( DirectprintROW > 0 ))                  {                  DirectprintROW = DirectprintROW - 1;                   DirectprintLine = rLcdChr -1;                  lcd.cursor de juego(DirectprintLine, DirectprintROW);                   }          if ( Ccount > 0)           {             Ccount--;             Cbuffer[Ccount] = 0;             if ((Directprint))               {                  if ( Ccount > MaxInputBufferSize -1)                   {                    lcd.noCursor();                    lcd.noBlink();                    } else {                    lcd.cursor();                    lcd.fulgura();                    }                       }                      if (Moda de eco) {              mySerial.print("-");              mySerial.flush();             }            }        }          else         {                      if ( Ccount < MaxInputBufferSize)           {             Cbuffer[Ccount] = TBuffer;               Ccount++;              if ((Directprint))               {                  DirectprintLine = DirectprintLine + 1;                  if (TBuffer < 128) {lcd.print(char(TBuffer)); } else  {lcd.print(Bramante(TBuffer)); }                  if ( Ccount > MaxInputBufferSize -1)                   {                    lcd.noCursor();                    lcd.noBlink();                    } else {                    lcd.cursor();                    lcd.fulgura();                    }                       }                if (Moda de eco) {              mySerial.print(char(TBuffer));              mySerial.flush();             }            } else {mySerial.print("#"); }       //Data el input detected       DataInput = true;       }      return false;      }     return false;   }    void ClearCBuffer ()

{
 for (byte a= 0; MaxInputBufferSize -1;a++)   Cbuffer[a] = 0;
}    byte SerInputHandler()
{
byte result = 0;
int c;
int d;
int a;
int b;
result = 0;
if (CheckforserialEvent())     {       if ((NumberInput) y necesidad (DataInput)y necesidad (StrInput))     //Numbers only        {        Sbuffer = "";        value = 0;        StrInput = false;        NumberInput = false;        DataInput = false;        EnterInput = false;         a = 0;        b = 0;        c = 0;        d = 0;        Sbuffer = Cbuffer; //¡El número se hace TAMBIÉN! en SBUFFER �bernommen, en caso de que ben�tigt.        if (Ccount == 1) { value  = Cbuffer[0]- 48 ; }        if (Ccount == 2) {           a = Cbuffer[0] - 48 ;           a = a * 10;          b = Cbuffer[1] - 48 ;          value = a + b;          }        if (Ccount == 3) {           a = Cbuffer[0] - 48 ;           a = a * 100;          b = Cbuffer[1] - 48 ;          b = b * 10;          c = Cbuffer[2] - 48 ;          value = a + b + c;          }        if (Ccount == 4) {           a = Cbuffer[0] - 48 ;           a = a * 1000;          b = Cbuffer[1] - 48 ;          b = b * 100;          c = Cbuffer[2] - 48 ;          c = c * 10;          d = Cbuffer[3] - 48 ;          value = a + b + c + d;          }        if (Ccount >= 5)            {            Sbuffer = "";            value = 0;            Sbuffer = Cbuffer;            ClearCBuffer;            result = 2;             } else           {            ClearCBuffer;            Ccount = 0;            result = 1;                                                //Number Returncode            NumberInput = false;            StrInput = false;            DataInput = false;            EnterInput = false;             Ccount = 0;            return result;            }        }      if ((StrInput) y necesidad (DataInput))                          //Bramante el input only        {        Sbuffer = "";        Sbuffer = Cbuffer;        value = 0;        StrInput = false;        NumberInput = false;        DataInput = false;        EnterInput = false;         Ccount = 0;        ClearCBuffer;        result = 2;                                                 //Number Returncode        }       if (DataInput) {        Sbuffer = "";        Sbuffer = Cbuffer;        value = 0;        StrInput = false;        NumberInput = false;        DataInput = false;        EnterInput = false;         Ccount = 0;        ClearCBuffer;        result = 3;                                               //Number Returncode        }        if ((EnterInput) y necesidad (StrInput) y necesidad (NumberInput) y necesidad (DataInput))        {        Sbuffer = "";        value = 0;        Ccount = 0;        ClearCBuffer;        result = 4;                                               //Number Returncode        }             NumberInput = false;    StrInput = false;    DataInput = false;    EnterInput = false;     Ccount = 0;    return result;     } 
return result;          //End CheckforSerialEvent
}


// ###################################################################################################### //

void loop() 

{
SerialcommandProcessor();
}

// ###################################################################################################### //

Después que tenemos el código hochgeladen, ahora nos combinamos sobre Bluetooth el módulo y con Bluetooth en serie el perfil en nuestro Arduino. Recibimos el menú siguiente después de la actividad de la tecla „Enter“:

Ahora escribimos a máquina la letra „D“ y apretamos después „Enter“:

Sigue una afirmación „Directprint“ era conectado. Ahora todo que tecleamos, somos indicados directamente y sin aplazamiento no sólo en el display LCD, sino también somos dados recibo en la interface en serie. "Miramos" en el terminal que escribimos y errores de maquina con „Backspace“ pueden también corregir.

Una indicación importante: Para esta función descrita en esta parte del display el código puede aparecer bien complejo. La función pura debía también ser llevada a cabo con el código más fácil. También algunas partes del código están optimizadas ya ya para partes siguientes de la fila y respectivamente puesto de modo preparado.

Las secciones particulares del código se explican u.u. sólo en las partes siguientes

 

Ahora os deseo mucha diversión copiando y hasta la vez cercana.

MuestraPara arduinoProyectos para principiantes

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas