{{tag> arduino console jeu-video em}}
====== Arduboy ======
[{{:materiel:arduboy:arduboy.jpg?direct&600|Photo de [[https://www.flickr.com/photos/120586634@N05/36265605315/in/album-72157684341395683/|Gareth Halfacree]], CC BY-SA}}]
L'[[https://arduboy.com/|arduboy]] est une micro console de jeu basée sur un microcontrôleur ATMega32U4 (identique à ceux équipant les arduino Leonardo), d'un écran OLED noir et blanc de 128 x 64 pixels, de quelques boutons, d'une sortie sonore par piezo et d'une batterie.
Elle est programmable en utilisant l'IDE Arduino, en ajoutant quelques bibliothèques de code.
Plus de 255 jeux existent à l'heure actuelle (il est 22h57 le 8 février 2020), dont une grande partie sous licences libres.
Avec cette console, on peut donc apprendre à programmer de petits jeux.
La console peut être achetée ou fabriquée puisque le schéma électronique est publié. il existe d'ailleurs déjà de nombreuses [[https://community.arduboy.com/c/arduboy/homemade|versions "homemade" de l'arduboy.]]
{{:materiel:arduboy:arduiboy_schematics.png?direct&600|}}
===== Prise en main =====
Pour écrire/compiler un jeu il faut installer l'IDE arduino, les bibliothèques de codes arduboy ("croquis/inclure une bibliothèque/gérer les bibliothèques") et la définition de la carte ("outils/type de carte/gestionnaire de carte"). Toutes ces étapes sont décrites en détail dans le [[https://community.arduboy.com/t/quick-start-guide/2790|quick start guide]]
==== Téléverser avec l'IDE arduino ====
Une fois l'installation complétée, voila comment téléverser un programme
* relier l'arduboy à l'ordinateur par un cable USB data (attention à la confusion possible avec un cable de charge)
* dans le menu "outils/type de carte", choisir "arduboy"
* dans le menu "outils/port" choisir le port USB sur lequel l'arduboy est branchée
* tout est prêt pour téléverser!
===== Installer des jeux =====
Il existe un catalogue de jeu plus ou moins officiel : [[https://arduboy.ried.cl/|Erwin's Arduboy Collection]], qui présente joliment le dépôt github ( https://github.com/ArduboyCollection )
Plusieurs méthodes :
* compiler le jeu dans l'IDE arduino et le téléverser en utilisant la connexion par micro USB, comme n'importe quel programme arduino
* téléverser directement le fichier .hex
* utiliser une application android ([[https://play.google.com/store/apps/details?id=com.obnsoft.arduboyutil|Arby Utility]]) et un cable USB-OTG (il faut que le mobile ou la tablette puisse utilsier de l'USB-OTG), voir ci-dessous
* utiliser une application windows ([[https://github.com/eried/ArduboyUploader|Arduboy Uploader]]) (il n'en existe pas pour Linux)
===== Programmer un jeu =====
Quelques liens intéressants pour s'y mettre :
* https://community.arduboy.com/c/education/lessons
* au sujet des //libraries// utilisées : https://community.arduboy.com/t/library-documentation/7836
* documentation de la lib. arduboy2 : https://github.com/MLXXXp/Arduboy2
* documentation __complète__ de la lib. arduboy2 : https://mlxxxp.github.io/documents/Arduino/libraries/Arduboy2/Doxygen/html/index.html
Et quelques outils (convertisseur d'image, tracker audio) :
* http://team-arg.org/tools.html
Le magazine **[[https://issuu.com/arduboymag|ardumag]]**, consultable en ligne, contient de nombreux articles écrits par des spécialistes sur les techniques de programmation adaptées au jeu.
===== Emulation avec ProjectABE =====
Pour tester les programmes, un émulateur existe en version en ligne ou sous forme d'application. On peut aussi passer en argument le lien vers un fichier compilé au format .hex à la version en ligne.
L'émulateur permet d'utiliser différents skins (F3) , d'enregistrer des copies d'écran en .png (P) ou des animations en .gif (R) . Il permet aussi de tester des [[https://en.wikipedia.org/wiki/Pixel-art_scaling_algorithms|algorithmes de lissage de pixel-art]] (touche F2).
ProjectABE est un émulateur très complet qui peut aussi servir d'IDE pour écrire les programmes.
* version en ligne : https://felipemanga.github.io/ProjectABE/
* application : https://github.com/felipemanga/ProjectABE
=====Débriquage=====
Un peu de bricolage s'impose afin d'accéder au ports de programmation de l'arduBoy afin d'éviter la soudure...
====Brûler le bootloader====
[file]→[sketch example]→[11.ArduinoISP]→[ArduinoISP]
Selectionner Arduino leonardo
[tool]->[board]->[Arduino Leonardo]
[tool]->[Burn board]->[Arduino as ISP]
[tool]->[Burn bootloader]
pin13 - CLK
pin12 - MISO
pin11 - MOSI
pin10 - RESET
GND - GND
3.3V - VCC
====Sources====
https://community.arduboy.com/t/cant-upload-anymore/2105/2
https://community.arduboy.com/t/how-to-reset-arduboy-if-its-bricked/807/17
https://community.arduboy.com/t/how-to-reset-arduboy-if-its-bricked/807/30
https://community.arduboy.com/t/official-troubleshooting-guide/7894/17
===== Variantes de l'arduboy =====
Les schémas de la console étant sous licence libre, elle peut-être reproduite sur plaque d'essai, ou dérivée sous différentes formes. J'ai trouvé les deux exemples suivants particulièrement intéressants
**ArduBigBoy** : écran plus grand, boitier en impression 3D ( https://www.thingiverse.com/thing:3250270 )
**3DPCBoy** : ici le circuit imprimé (//PCB//) est remplacé par plusieurs couches imprimées en 3D dans lesquelles passent les fils de connexion des composants, c'est très ingénieux et permet de se passer du pcb qui n'est pas la partie la plus simple à fabriquer!
* https://vonkonow.com/wordpress/2020/01/3dpcboy-build-your-own-handheld-gaming-platform/
* https://hackaday.com/2020/02/08/3d-printing-for-wire-paths-yields-an-arduboy-minus-the-pcb/
* https://vonkonow.com/wordpress/2019/12/developing-3dpcb-3d-printed-circuit-board-with-lots-of-potential/
===== Ressources =====
Par ici
* site principal : https://arduboy.com/
* https://community.arduboy.com/
* magazine : https://issuu.com/arduboymag
* schéma électronique de l'arduboy : https://community.arduboy.com/t/production-arduboy-schematic/702
* dépôt d'un auteur de jeux pour arduboy : https://github.com/filmote
* dépôt de l'équipe de développement TEAMarg : https://github.com/TEAMarg
* https://www.reddit.com/r/Arduboy/