Construire un clone Arduboy format carte de crédit avec Arduino Nano et écran OLED I2C
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano R3 | 1 |
| Écran OLED graphique 128x64 (I2C) | 1 |
| Buzzer | 1 |
| Interrupteur tactile à actionnement par le haut | 6 |
| LED RGB diffuse cathode commune | 1 |
| Résistance 221 Ω | 3 |
| Résistance 10 kΩ | 1 |
Outils et machines nécessaires
- Imprimante 3D (générique)
- Fer à souder (générique)
À propos de ce projet
L'Arduboy est une console de jeu miniature de la taille d'une carte de crédit. Elle vient avec un jeu 8-bit classique préinstallé et peut être reprogrammée depuis une bibliothèque de jeux open source disponibles en ligne. L'Arduboy est open source, ce qui permet d'apprendre à coder et de créer ses propres jeux. La version originale est basée sur le microcontrôleur ATmega32U4 et un écran OLED série 128x64 pixels.
La console présentée ici utilise un Arduino Nano et la version I2C de l'écran OLED, plus facile à trouver et moins chère. Vous pouvez télécharger les bibliothèques et le code nécessaires sur :
https://github.com/harbaum/Arduboy2
Si vous possédez une imprimante 3D, vous pouvez également télécharger les fichiers .STL d'un boîtier possible pour y installer la console. Un guide d'installation détaillé est disponible sur le même site. Elle est alimentée par un Arduino Nano avec une batterie lithium-ion 3,7V et fonctionne très bien.
J'ai testé de nombreux jeux sur cette console, tous fonctionnent parfaitement :
- ArduBreakout
- Pinball
- Shadow-Runner
- Snake
- VIRUS-LQP-79
- Nineteen43
- et bien d'autres...
Le schéma est montré ci-dessous. En exemple, je présente le code du jeu ArduBreakout, mais vous pouvez télécharger n'importe quel autre jeu sur le site d'Arduboy compatible avec cette version de console.
Code
Jeu ArduBreakout
/* Breakout Copyright (C) 2011 Sebastian Goscik All rights reserved.
* Modifications par Scott Allen 2016 (après changements précédents par ???)
* Licence GNU Lesser General Public License v2.1 ou ultérieure. */
#include <Arduboy2.h>
// Bloc dans EEPROM pour sauvegarder les scores
#define EE_FILE 2
Arduboy2 arduboy;
BeepPin1 beep;
const unsigned int FRAME_RATE = 40;
const unsigned int COLUMNS = 13;
const unsigned int ROWS = 4;
int dx = -1, dy = -1;
int xb, yb;
boolean released = false;
boolean paused = false;
byte xPaddle;
boolean isHit[ROWS][COLUMNS];
boolean bounced = false;
byte lives = 3;
byte level = 1;
unsigned int score = 0;
unsigned int brickCount;
boolean pad, pad2, pad3;
boolean oldpad, oldpad2, oldpad3;
char text_buffer[16];
boolean start = false;
boolean initialDraw = false;
char initials[3];
byte leftBall, rightBall, topBall, bottomBall;
byte leftBrick, rightBrick, topBrick, bottomBrick;
byte tick;
void setup() {
arduboy.begin();
beep.begin();
arduboy.setFrameRate(FRAME_RATE);
arduboy.initRandomSeed();
}
void loop() {
if (!(arduboy.nextFrame())) return;
beep.timer();
while (!start) {
start = titleScreen();
if (!start) start = displayHighScores(EE_FILE);
}
if (!initialDraw) {
arduboy.clear();
level = 1;
newLevel();
score = 0;
initialDraw = true;
}
if (lives > 0) {
drawPaddle();
pad = arduboy.pressed(A_BUTTON) || arduboy.pressed(B_BUTTON);
if (pad && !oldpad && released) {
oldpad2 = false;
pause();
}
oldpad = pad;
drawBall();
if (brickCount == ROWS * COLUMNS) {
level++;
newLevel();
}
} else {
drawGameOver();
if (score > 0) enterHighScore(EE_FILE);
arduboy.clear();
initialDraw = false;
start = false;
lives = 3;
newLevel();
}
arduboy.display();
}
// ... (fonctions movePaddle, moveBall, drawBall, drawPaddle, drawGameOver, pause, Score, newLevel, pollFireButton, displayHighScores, titleScreen, enterInitials, enterHighScore, playTone, playToneTimed)
Le code complet est disponible dans le fichier joint.
Pièces personnalisées et boîtiers
Fichiers 3D : 3d_parts_ThLGvJvWga.rar
Schémas
Processus de fabrication
- Intégration I2C fluide entre Arduino et Raspberry Pi 2 pour projets IoT de capteurs
- Construire une console de jeu portable Arduboy DIY (Arduino Micro + PCB)
- Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
- Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
- Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
- Station météo interactive Nextion HMI avec Arduino Mega et capteurs
- Contrôler 2 moteurs pas-à-pas avec Arduino Nano et joystick – Tutoriel Visuino
- Automates Cellulaires Temps Réel sur Arduino avec Écran OLED 128x64
- Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels