#include <MD_Parola.h>
#include <MD_MAX72xx.h>
MD_Parola P = MD_Parola( MD_MAX72XX::PAROLA_HW, 12, 4 );
struct Substitute
{
char const * const utf8;
uint8_t const sub;
};
Substitute substitutes[] =
{
{ "Å", 0xC5 },
{ "Ä", 0xC4 },
{ "Ö", 0xD6 },
{ "å", 0xE5 },
{ "ä", 0xE4 },
{ "ö", 0xF6 },
};
size_t const substitutes_count = sizeof( substitutes ) / sizeof ( substitutes[0] );
char * replace_utf8( char * const str )
{
char *p = str;
while ( *p )
{
if ( (*p & 0xFF) > 127 )
{
for ( size_t i = 0; i < substitutes_count; ++i )
{
size_t len = strlen( substitutes[i].utf8 );
if ( !strncmp( p, substitutes[i].utf8, len ) )
{
*p = substitutes[i].sub;
strcpy( p + 1, p + len );
break;
}
}
}
++p;
}
return str;
}
uint8_t const smiley[] =
{
4,
0b00100100,
0b01000000,
0b01000000,
0b00100100,
};
void setup()
{
P.begin();
P.addChar( 0xF6, smiley );
char str[] = "ÅÄÖåäö";
P.print( replace_utf8( str ) );
}
void loop()
{
}