« SE3 PSE Binome2023-6 » : différence entre les versions
		
		
		
		
		
		Aller à la navigation
		Aller à la recherche
		
				
		
		
	
|  (→Code C) | |||
| Ligne 11 : | Ligne 11 : | ||
| {| class="wikitable" | {| class="wikitable" | ||
| |- | |- | ||
| | [[Fichier:Schematic2 manette.png| | | [[Fichier:Schematic2 manette.png|600px]] || Screenshot de la schématique de l'ATMega || Screenshot de la schématique des connecteurs LEDs, Boutons, ISP et USB<br> || [[Fichier:Schematic1 manette.png|600px]]   | ||
| |- | |- | ||
| | [[Fichier:SCHEMATIC MANETTE.pdf| | | [[Fichier:SCHEMATIC MANETTE.pdf|600px|PDF du schématique complet de la manette|gauche]] || PDF avec la schématique complète de la manette   | ||
| | 1ère Vidéo montrant l'interaction entre les boutons de la manette et l'application Joystick de l'ordinateur || [[Fichier:Video joystick manette.mp4|400px| | | 1ère Vidéo montrant l'interaction entre les boutons de la manette et l'application Joystick de l'ordinateur || [[Fichier:Video joystick manette.mp4|400px|centre]] | ||
| |} | |} | ||
Version du 6 juin 2024 à 09:23
 Conception de la manette
- Taille de la carte : 10x10 cm maximum
- Utilisation de LEDs pour visualiser les vies restantes sur la manette
- 6 boutons : 4 de déplacement mais que deux utilisables (gauche et droite) et les deux autres (haut et bas) pour d'autres jeux à l'avenir. Les deux boutons à droite de la carte, en bas pour tirer, en haut pour quitter.
- Un design inspiré d'une vieille SNES
SCHÉMATIQUE KiCAD
PCB
 Programmation 
Code C
Pour pouvoir avoir nos boutons fonctionnel on s'est basé sur la démo du joystick pour créer "Manette", et ensuite on est partie d'un code minimal pour pouvoir rajouté la description de notre manette, et créer deux interfaces, une pour nos boutons, et une autre pour nos LEDs.
	
| Manette et minimal trouvable dans TPI_LUFA_LibUSB/manette_LUFA/Polytech/ | |
| bool GetNextReport(USB_JoystickReport_Data_t* const ReportData)
{
	bool           InputChanged     = false;
	/* Clear the report contents */
	memset(ReportData, 0, sizeof(USB_JoystickReport_Data_t));
	if (~(PINF>>PIN7) & 1) ReportData->Button |= (1 << 1);
	if (~(PINF>>PIN6) & 1) ReportData->Button |= (1 << 0);
	if (~(PIND>>PIN1) & 1) ReportData->Y = 100;
	if (~(PIND>>PIN2) & 1) ReportData->X = 100;
	if (~(PIND>>PIN3) & 1) ReportData->X = -100;
	if (~(PIND>>PIN5) & 1) ReportData->Y = -100;
	InputChanged = 1;
	return InputChanged;
}
 | |
| 	/* Hardware Initialization */
	Joystick_Init();
	LEDs_Init();
	Buttons_Init();
	USB_Init();
	MCUCR |= (1<<JTD);
	MCUCR |= (1<<JTD);
	CLKSEL0 = 0b00010101;   // sélection de l'horloge externe
	CLKSEL1 = 0b00001111;   // minimum de 8Mhz
	CLKPR = 0b10000000;     // modification du diviseur d'horloge (CLKPCE=1)
	CLKPR = 0;              // 0 pour pas de diviseur (diviseur de 1)
	//Boutons A et B
	DDRF  &= 0b00111111;
	PORTF |= 0b11000000;
	
	//Boutons directionnels 
	DDRD  &= 0b11010001;
	PORTD |= 0b00101110;
	// Allumer les leds
	PORTF |= 0b00100011;
	PORTE |= 0b01000000;
 | 
Fichiers
Fichiers: Fichier:ManetteUSBLilianPierre.zip
gerber: Fichiers: Fichier:SE3-pad-job.gbrjob.zip gerber: Fichiers: Fichier:SE3-pad-LGPC.zip










