Alors, probablement pas comme tu l’entends. Je vais détailler le fonctionnement de chaque partie sans utiliser le terme "émuler", mais je dois préciser que la compréhension en de ce qui suit n’est pas utile pour utiliser un Arduino. Pour l’explication simple, tu peux passer directement au dernier paragraphe. Le reste de la réponse n’est là que pour éviter de répondre "tu n’as pas besoin de le savoir", qui n’est pas une réponse très satisfaisante.
Donc reprenons par partie:
D’abord, le cable USB, ce n’est que du fil électrique, il porte le signal physique USB, et c’est tout.
Ensuite, côté PC, il y a un driver (pilote) logiciel qui propose les même fonctions qu’une interface série, mais envoie les données sur une liaison USB avec un protocole dédié (par exemple l’USB CDC-ACM. Inutile de le retenir, je le mentionne juste pour dire que ce sont des protocoles connus et documentés, que tous les gens qui font de l’USB peuvent utiliser et reconnaitre).
Et sur la carte arduino, il y a un une puce qui contient un contrôleur USB device, un contrôleur de liaison série, et probablement un cœur processeur executant un programme (inscrit en dur dans la puce) qui récupère les données reçues par l’USB, décode le protocole utilisé (l’USB CDC ACM si on suit mon exemple ci-avant), en extrait les données, et les envoie sur la liaison série. Et, dans l’autre sens, il récupère les données recues sur la liaison série, les formate dans le protocole USB utilisé, et les donnes au contrôleur USB qui les enverra au PC.
Sur la carte Arduino, il y a 2 pistes (rien de plus qu’un fil électrique sur un circuit imprimé) qui font passer les signaux RX et TX de la liaison série entre la puce ci-avant, et le microcontrôleur principal.
Et toujours sur la carte Arduino, il y a le microcontrôleur principal (un ATMEL pour les premières cartes Arduino) qui exécute ton programme, qui a une interface série, et qui envoie et reçoit les données sur cette interface à chaque fois que tu utilises l’objet Serial
.
Autrement dit on n’émule pas de machine, il n’y a pas de machine virtuelle. Ce qu’on émule, c’est une liaison série directe entre le PC et le microcontrôleur de la carte Arduino, alors que, physiquement, les données ont un parcours beaucoup plus complexe. Cette complexité est simplement invisible pour le programme sur le PC (le logiciel "Arduino" que tu as probablement installé quand tu as commencé à faire de l’arduino) comme pour le programme qui s’exécute sur le microcontrôleur.