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:25] fabien_nasa |
wiki:projets:consoleretro [2016/09/11 10:59] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
====== Console de jeu retro ====== | ====== Console de jeu retro ====== | ||
Ligne 29: | Ligne 30: | ||
- Atmega 328 P\\ | - Atmega 328 P\\ | ||
- Quartz 16 MHz\\ | - Quartz 16 MHz\\ | ||
- | - Résistance - condensateur\\ | + | - Régulateur de tension L7805CV \\ |
+ | - Résistance | ||
+ | - Condensateur (10μF,2x 22pF, 100μF,,,, | ||
+ | - Bouton poussoir (pour les manettes)\\ | ||
+ | - Potentiomètre 10KΩ\\ | ||
- Connecteur DIN (pour les manettes)\\ | - Connecteur DIN (pour les manettes)\\ | ||
- Connecteur AV-VGA\\ | - Connecteur AV-VGA\\ | ||
Ligne 40: | Ligne 45: | ||
==== Partie 1 ==== | ==== Partie 1 ==== | ||
- | -Réalisation de/des manettes, lien vers les fichiers stl : https:// | + | -Réalisation de/des manettes, lien vers les fichiers stl : https:// |
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
-réalisation du boitier de la console\\ | -réalisation du boitier de la console\\ | ||
-réalisation de la carte mère de la console a partir de l' | -réalisation de la carte mère de la console a partir de l' | ||
Ligne 55: | Ligne 63: | ||
- 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(){ | ||
+ | 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, | ||
+ | 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 ===== | ||