Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:projets:consoleretro [2015/09/24 12:08] fabien_nasa |
wiki:projets:consoleretro [2016/09/11 10:59] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Console retro ====== | + | |
+ | ====== Console | ||
date de début : 09/2015\\ | date de début : 09/2015\\ | ||
Ligne 6: | Ligne 7: | ||
- | ===== Réalisation d'une console de jeu rétro ===== | ||
- | Réalisation d'une console de jeux rétro(type console de salon) | ||
- | Le boitier permettra de connecter une télé ou un moniteur (sortie AV ou VGA) | + | Réalisation d'une console de jeux rétro (type console de salon)\\ |
- | - Particularité : retour aux sources des jeux vidéos | + | |
+ | Le but de ce projet est d' | ||
+ | - Particularité : retour aux sources des jeux vidéos | ||
- Création pur de jeu vidéo (aucune base ou copie de code), retour aux sources | - Création pur de jeu vidéo (aucune base ou copie de code), retour aux sources | ||
- Inspiration :(retro gaming) | - Inspiration :(retro gaming) | ||
Ligne 20: | Ligne 21: | ||
- | machine | + | Machine |
- | matériel : boitier, câble de connexion | + | Imprimante 3D (Ici makerboot replicator 2X ou Ultimaker²) avec PLA ou ABS\\ |
+ | ===== Matériels nécessaires ===== | ||
+ | Ici il faut lister tout le matériel nécessaire, | ||
+ | - Atmega 328 P\\ | ||
+ | - Quartz 16 MHz\\ | ||
+ | - Régulateur de tension L7805CV \\ | ||
+ | - Résistance (10KΩ, 510Ω, ,,,)\\ | ||
+ | - Condensateur (10μF,2x 22pF, 100μF,,,, | ||
+ | - Bouton poussoir (pour les manettes)\\ | ||
+ | - Potentiomètre 10KΩ\\ | ||
+ | - Connecteur DIN (pour les manettes)\\ | ||
+ | - Connecteur AV-VGA\\ | ||
- | exemple : | ||
- | - imprimante 3D (Ici makerboot replicator 2X ou Ultimaker²) avec PLA ou ABS\\ | ||
+ | ===== Étape de fabrication ===== | ||
- | ===== matériels nécessaires ===== | ||
- | Ici il faut lister tout le matériel nécessaire, leur prix ainsi qu'une photo si possible\\ | + | ==== Partie 1 ==== |
- | - Atmega 328 P | + | -Réalisation de/des manettes, lien vers les fichiers stl : https:// |
- | - Quartz 16 MHz | + | * [[http:// |
- | - Résistance - condensateur | + | * [[http:// |
- | - Connecteur DIN (pour les manettes) | + | * [[http:// |
- | \\ | + | -réalisation du boitier de la console\\ |
+ | -réalisation de la carte mère de la console a partir de l'Atmega 328\\ | ||
- | ===== Construction ===== | ||
+ | ==== Partie 2 ==== | ||
+ | -réalisation de différents jeux vidéos couleur ou noir et blanc\\ | ||
+ | -Amélioration de la console avec des passages a des cartouches de jeu\\ | ||
+ | -Réalisation de cartouche avec Atmega intégré\\ | ||
- | /* | ||
- | Etape de fabrication : | ||
- | -Réalisation du/des manettes | ||
- | -réalisation du boitier de la console | ||
- | -réalisation de la carte mère de la console a partir de l' | ||
- | -réalisation de différents jeux vidéo retro couleur ou noir et blanc | ||
- | \\ | ||
- | ==== Partie 1 ==== | ||
- | ==== Partie 2 ==== | ||
- | - lien vers les fichiers stl : https:// | ||
- les schéma \\ | - les schéma \\ | ||
\\ | \\ | ||
- | - les codes nécessaires\\ exemple : \\ | + | ==== Le code ==== |
- | <code=Arduino> | + | |
- | printnf(" | + | < |
+ | #include <TVout.h> | ||
+ | #include <fontALL.h> | ||
- | </ | ||
- | */ | + | TVout TV; |
+ | int const pot=A0; | ||
+ | int zOff = 150; | ||
+ | int xOff = 0; | ||
+ | int yOff = 0; | ||
+ | int cSize = 50; | ||
+ | int view_plane = 64; | ||
+ | int val; | ||
+ | float angle = PI/60; | ||
+ | unsigned char cube2d[8][2]; | ||
+ | int i=0; | ||
+ | int a=1; | ||
+ | int j=1; | ||
+ | int b=0; | ||
+ | int b2=0; | ||
+ | int G=0; | ||
+ | int c=0; | ||
+ | int point=0; | ||
+ | int vitesse =1; | ||
+ | int choix=0; | ||
+ | int rouge; | ||
+ | int partie=0; | ||
+ | int best=0; | ||
+ | int best_comp=0; | ||
+ | int hauteur=2; | ||
+ | int ordinateur; | ||
+ | int presentation=0; | ||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | TV.begin(PAL, | ||
+ | pinMode(2, | ||
+ | pinMode(8, | ||
+ | TV.select_font(font6x8); | ||
+ | TV.print(40, | ||
+ | TV.select_font(font6x8); | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | } | ||
- | ===== Journal de bord ===== | ||
- | /* | + | void loop(){ |
- | Ici il faut mettre l' | + | choix = digitalRead(2); |
+ | rouge=digitalRead(8); | ||
+ | |||
+ | if(rouge==HIGH){ | ||
+ | partie++; | ||
+ | delay(1000); | ||
+ | } | ||
+ | if(partie> | ||
+ | partie=1; | ||
+ | } | ||
+ | if(partie==1){ | ||
+ | TV.print(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | } | ||
+ | if(partie==2){ | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | TV.print(00, | ||
+ | } | ||
+ | if(choix==HIGH && partie ==1){ | ||
+ | |||
+ | TV.clear_screen(); | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.draw_line(50, | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.draw_line(50, | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.clear_screen(); | ||
+ | G=0; | ||
+ | point=0; | ||
+ | best_comp=0; | ||
+ | i=0; | ||
+ | j=1; | ||
+ | b=0; | ||
+ | b2=0; | ||
+ | c=0; | ||
+ | vitesse=1; | ||
+ | hauteur=2; | ||
+ | presentation=0; | ||
+ | while(G==0){ | ||
+ | val= analogRead(pot); | ||
+ | if(val> | ||
+ | val=810; | ||
+ | } | ||
+ | if((hauteur*(i)+8)-15< | ||
+ | ordinateur=8; | ||
+ | } | ||
+ | else{ | ||
+ | ordinateur=(hauteur*(i)+8)-15; | ||
+ | } | ||
+ | TV.draw_line(03, | ||
+ | TV.draw_line(03,9, | ||
+ | TV.draw_line(03, | ||
+ | TV.draw_line(vitesse*(j)+3, | ||
+ | |||
+ | | ||
+ | TV.draw_line(115, | ||
+ | TV.draw_line(115, | ||
+ | TV.draw_line(115, | ||
+ | } | ||
+ | |||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(118, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | |||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | |||
+ | TV.select_font(font6x8); | ||
+ | TV.print(00, | ||
+ | TV.print(20, | ||
+ | TV.print(80, | ||
+ | TV.print(100, | ||
+ | Serial.print(" | ||
+ | Serial.print(val); | ||
- | */ | ||
+ | | ||
+ | if(((hauteur*i)+8 < 8+(val/10) || (hauteur*i)+8> | ||
+ | G=1; | ||
+ | point--; | ||
+ | if(point> | ||
+ | best=point; | ||
+ | } | ||
+ | choix=0; | ||
+ | TV.clear_screen(); | ||
+ | TV.select_font(font8x8); | ||
+ | TV.println(" | ||
+ | TV.println(point); | ||
+ | delay (5000); | ||
+ | TV.select_font(font6x8); | ||
+ | TV.println(" | ||
+ | if(point> | ||
+ | TV.println(" | ||
+ | } | ||
+ | delay (5000); | ||
+ | delay(9000); | ||
+ | TV.clear_screen(); | ||
+ | TV.select_font(font6x8); | ||
+ | TV.print(40, | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | TV.print(80, | ||
+ | } | ||
+ | | ||
+ | if(i< | ||
+ | i=i+a; | ||
+ | } | ||
+ | else{ | ||
+ | i=i-a; | ||
+ | b=1; | ||
+ | } | ||
+ | if((vitesse*j)+3< | ||
+ | if(j!=0 ){ | ||
+ | | ||
+ | } | ||
+ | j++; | ||
+ | } | ||
+ | | ||
+ | if(i==0){ | ||
+ | b=0; | ||
+ | } | ||
+ | | ||
+ | if(j==112/ | ||
+ | b2=1; | ||
+ | best_comp ++; | ||
+ | } | ||
+ | | ||
+ | if(b2==1){ | ||
+ | if(j!=0){ | ||
+ | TV.draw_line(vitesse*(j+3)-(vitesse-1)*3, | ||
+ | } | ||
+ | j--; | ||
+ | c=1; | ||
+ | } | ||
+ | if(j==0){ | ||
+ | b2=0; | ||
+ | point++; | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | | ||
+ | if(choix==HIGH && partie ==2){ | ||
+ | | ||
+ | TV.clear_screen(); | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.draw_line(50, | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.draw_line(50, | ||
+ | TV.print(50, | ||
+ | delay(1500); | ||
+ | TV.clear_screen(); | ||
+ | G=0; | ||
+ | point=0; | ||
+ | best_comp=0; | ||
+ | i=0; | ||
+ | j=1; | ||
+ | b=0; | ||
+ | b2=0; | ||
+ | c=0; | ||
+ | vitesse=1; | ||
+ | hauteur=2; | ||
+ | presentation=0; | ||
+ | while(G==0){ | ||
+ | val= analogRead(pot); | ||
+ | if(val> | ||
+ | val=810; | ||
+ | } | ||
+ | if((hauteur*(i)+8)-15< | ||
+ | ordinateur=8; | ||
+ | } | ||
+ | else{ | ||
+ | ordinateur=(hauteur*(i)+8)-15; | ||
+ | } | ||
+ | TV.draw_line(03, | ||
+ | TV.draw_line(03, | ||
+ | TV.draw_line(03, | ||
+ | TV.draw_line(vitesse*(j)+3, | ||
+ | |||
+ | | ||
+ | TV.draw_line(115, | ||
+ | TV.draw_line(115, | ||
+ | TV.draw_line(115, | ||
+ | } | ||
+ | | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(118, | ||
+ | TV.draw_line(00, | ||
+ | TV.draw_line(00, | ||
+ | | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | TV.draw_line(55, | ||
+ | | ||
+ | TV.select_font(font6x8); | ||
+ | TV.print(00, | ||
+ | TV.print(20, | ||
+ | TV.print(80, | ||
+ | TV.print(100, | ||
+ | Serial.print(" | ||
+ | Serial.print(val); | ||
+ | |||
+ | |||
+ | | ||
+ | if(((hauteur*i)+8 < 8+(val/10) || (hauteur*i)+8> | ||
+ | G=1; | ||
+ | point--; | ||
+ | if(point> | ||
+ | best=point; | ||
+ | } | ||
+ | choix=0; | ||
+ | TV.clear_screen(); | ||
+ | TV.select_font(font8x8); | ||
+ | TV.println(" | ||
+ | TV.println(point); | ||
+ | delay (5000); | ||
+ | TV.select_font(font6x8); | ||
+ | TV.println(" | ||
+ | if(point> | ||
+ | TV.println(" | ||
+ | } | ||
+ | delay (5000); | ||
+ | delay(9000); | ||
+ | TV.clear_screen(); | ||
+ | TV.select_font(font6x8); | ||
+ | TV.print(40, | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | TV.print(00, | ||
+ | TV.print(80, | ||
+ | } | ||
+ | | ||
+ | if(i< | ||
+ | i=i+a; | ||
+ | } | ||
+ | else{ | ||
+ | i=i-a; | ||
+ | b=1; | ||
+ | } | ||
+ | |||
+ | if((vitesse*j)+3< | ||
+ | if(j!=0 ){ | ||
+ | | ||
+ | } | ||
+ | j++; | ||
+ | } | ||
+ | | ||
+ | if(i==0){ | ||
+ | b=0; | ||
+ | } | ||
+ | | ||
+ | if(j==112/ | ||
+ | b2=1; | ||
+ | best_comp ++; | ||
+ | } | ||
+ | | ||
+ | if(b2==1){ | ||
+ | if(j!=0){ | ||
+ | TV.draw_line(vitesse*(j+3)-(vitesse-1)*3, | ||
+ | } | ||
+ | j--; | ||
+ | c=1; | ||
+ | } | ||
+ | if(j==0){ | ||
+ | b2=0; | ||
+ | point++; | ||
+ | } | ||
+ | if(point> | ||
+ | vitesse =2; | ||
+ | hauteur=3; | ||
+ | } | ||
+ | | ||
+ | if(point> | ||
+ | vitesse=4; | ||
+ | hauteur=4; | ||
+ | | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | |||
+ | | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Journal de bord ===== | ||