Crear funciones externos

Lo miraré...

Al final me salió pasarlo de C# a C++.

C++:
#include <iostream>
#include <string>
#include <windows.h> // Para mostrar texto en el título de la ventana.
#include <stdio.h>   // Cambio color de fondo y letras.

using namespace std;

int main()
{
    // Variables.
    string guardarNombre = ""; // Guardar nombre escrito.
    static int coordenadaX = 0; // Coordenada X del setCursorPisition.
    //static ConsoleKey tecla; // Guarda cualquier tecla pulsada.
    static int index = 0; // Índice.

    // Caracteres de este array.
    static char const ALFANUMERICO[] =
    {
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
        'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
        'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', '-', '_', ':', ';',
        '¿', '?', '(', ')', '[', ']', '{', '}', '=', '$', '&', '"', ' '
    };

    // Dirección del carácter del array. El 80 presenta al espacio ' ' del array roALFANUMERICO.
    static int const INDICE_ARRAY[] =
    {
        80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
    };

    // Palabras del array para imprimir en pantalla.
    static string const TEXTO[] = { "ATRÁS", "GUARDAR" };

    // Mostrar caracteres correctamente en pantalla y título de la ventana.
    SetConsoleOutputCP(65001);
    wchar_t titulo[128];
    MultiByteToWideChar(CP_UTF8, 0, "Título de la ventana. Win32 C++ 2019.", -1, titulo, 128);
    SetConsoleTitle(titulo);

    // Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
    SMALL_RECT r = { 0, 0, 49, 9 }; // X = 49, Y = 9.
    SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);

    // Cambio color de 8 (gris), color letras 0 (negro).
    system("color 80");

    // mostrar contenido de las variables.
    cout << guardarNombre << endl;
    cout << coordenadaX << endl;
    cout << index << endl;

    for (int i = 0; i < sizeof(ALFANUMERICO) / sizeof(ALFANUMERICO[0]); i++)
    {
        cout << ALFANUMERICO[i] << endl;
    }

    for (int i = 0; i < sizeof(INDICE_ARRAY) / sizeof(INDICE_ARRAY[0]); i++)
    {
        cout << INDICE_ARRAY[i] << endl;
    }

    for (int i = 0; i < sizeof(TEXTO) / sizeof(TEXTO[0]); i++)
    {
        cout << TEXTO[i] << endl;
    }

    // Esperando pulsar Enter para salir.
    cin.get();
    //getchar();
    return 0;
}

Ahora me toca hurgar en Arduino como se hace.

Saludos.
 
Lo he intentado con Arduino, compila pero da resultado 0 uno tras otro.
C:
#include <LiquidCrystal.h>

// Inicializa la librería con sus pines indicados.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);

// Pin 10 para saber que es luz de fondo del LCD.
//int LuzFondo = 10;


// Variables.
byte i = 0;
byte j = 0;
byte k = 0;
String guardarNombre = ""; // Guardar nombre escrito.
static int coordenadaX = 0; // Coordenada X del setCursorPisition.
static int index = 0; // Índice.
// Caracteres de este array.
static char const ALFANUMERICO[] =
{
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
  'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
  'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
  'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', '-', '_', ':', ';',
  '¿', '?', '(', ')', '[', ']', '{', '}', '=', '$', '&', '"', ' '
};

// Dirección del carácter del array. El 80 presenta al espacio ' ' del array roALFANUMERICO.
static int const INDICE_ARRAY[] =
{
  80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
};

// Palabras del array para imprimir en pantalla.
static String const TEXTO[] = { "ATRÁS", "GUARDAR" };

void setup()
{
  // La pantalla es de 16 caracteres y 2 filas.
  lcd.begin(16, 2);
  lcd.print("  Probando...");

  // Baudios del puerto serie.
  Serial.begin(115200);

  // Indicar luz de fondo como salida.
  // pinMode(LuzFondo, OUTPUT);

    Serial.println(guardarNombre);
  Serial.println(coordenadaX);
  Serial.println(index);

  for (i = 0; i < 80; i++);
  {
    Serial.println(ALFANUMERICO[i]);
  }

  for (j = 0; j < 16; j++);
  {
    Serial.println(INDICE_ARRAY[j]);
  }

  for (k = 0; k < 2; k++);
  {
    Serial.println(TEXTO[k]);
  }
}

void loop()
{
  //return 0;
}

El Sketch usa 4402 bytes (13%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.
Las variables Globales usan 283 bytes (13%) de la memoria dinámica, dejando 1765 bytes para las variables locales. El máximo es 2048 bytes.
 
Arriba