Problème avec un pointeur de fonction

Je suis en train d'essayer de me monter un petit terminal décrit ici.

Le code se trouve dans ce dépot
J'ai une erreur de compilation que je n'arrive pas à résoudre

Le programme contient une structure qui mémorise la configuration du terminal.
Dans les éléments de la structure, il y a ce champs

void (*send_response)(char *str);

C'est un pointeur de fonction vers la fonction qui gère les réponses du terminal.
Cet éléments est initialisé au début du programme ainsi:

  auto respond = [=](char *str){ Serial.print(str); }; 
  vt100_init(respond);

L'erreur que je reçois

/home/frederic/Arduino/ILI9341/vt_test/vt_test.ino: In function 'void loop()':
/home/frederic/Arduino/ILI9341/vt_test/vt_test.ino:39:21: error: cannot convert 'loop()::<lambda(char*)>' to 'void ()(char)' for argument '1' to 'void vt100_init(void ()(char))'
vt100_init(respond);

J'ai essayé différents trucs mais déjà l'écriture de cette affectation est assez opaque pour moi.

A noter, le code est écrit pour fonctionner sur un ATmega1284P.

Je n'ai pas de problème de compilation de ce code avec AtMega2560.
La syntaxe est surprenante. Pour ma part j'aurais écrit :

void respond(char *str)
{
  Serial.print(str);
};

void loop() {
  vt100_init(respond);

Merci, je vais voir ça.

Edit:
Effectivement, ça compile maintenant sans erreur en utilisant l'écriture que tu proposes. Mais ça ne compile pas non plus en choisissant un 2560.
Sans doute un problème de version de compilateur.
Je n'ai plus qu'à l'essayer.