« SE3 PSE Binome2023-6 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 25 : Ligne 25 :


== Code C ==
== Code C ==
[[Fichier:Manette et minimal.png|gauche|vignette|Manette et minimal trouvable dans TPI_LUFA_LibUSB/manette_LUFA/Polytech/]]


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.
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.


 
 
{| class="wikitable centre"
 
|-
 
| rowspan="3" | [[Fichier:Lsusb Descriptor.png|gauche|vignette|Descriptor de notre manette]] || [[Fichier:Manette et minimal.png|gauche|vignette|Manette et minimal trouvable dans TPI_LUFA_LibUSB/manette_LUFA/Polytech/]] Manette et minimal trouvable dans TPI_LUFA_LibUSB/manette_LUFA/Polytech/
 
|-
 
| <syntaxhighlight lang="c">
 
 
 
Minimal:
[[Fichier:Lsusb Descriptor.png|gauche|vignette|Descriptor de notre manette]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<syntaxhighlight lang="c">


bool GetNextReport(USB_JoystickReport_Data_t* const ReportData)
bool GetNextReport(USB_JoystickReport_Data_t* const ReportData)
Ligne 84 : Ligne 56 :
}
}


</syntaxhighlight><syntaxhighlight lang="c">
</syntaxhighlight>
|-
| <syntaxhighlight lang="c">
/* Hardware Initialization */
/* Hardware Initialization */
Joystick_Init();
Joystick_Init();
Ligne 114 : Ligne 88 :
PORTE |= 0b01000000;
PORTE |= 0b01000000;
</syntaxhighlight>
</syntaxhighlight>
|}
== Montage de la carte : ==
== Montage de la carte : ==
Fichiers: [[Fichier:ManetteUSBLilianPierre.zip]]
Fichiers: [[Fichier:ManetteUSBLilianPierre.zip]]

Version du 5 juin 2024 à 18:47

Conception de la manette

SCHÉMATIQUE KiCAD

Schematic2 manette.png Screenshot de la schématique de l'ATMega Screenshot de la schématique des connecteurs LEDs, Boutons, ISP et USB
Schematic1 manette.png
PDF du schématique complet de la manette
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

PCB

ManetteVierge.jpg Une photo de la manette PCB sans aucun composants Visualisation 3D de la carte Screenshot 2024-03-11 17-48-28.png
Bootloader.jpg La manette en mode DFU, la petite LED en haut à droite allumée est dû au port connecté à cette LED. Les derniers ports PF (5,6,7) sont des PIN spéciaux qui allument les LED connectées
Screenshot 2024-03-11 17-47-48.png PCB final de la manette
ManetteObsolète.jpg Première itération de soudage de la manette. Un court-circuit c'est créer lors de nos premiers soudages. La manette est devenue inutilisable par la suite, nous ne pouvions plus mettre le bootloader avec un Arduino sur l'ATMega

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.


Descriptor de notre manette
Manette et minimal trouvable dans TPI_LUFA_LibUSB/manette_LUFA/Polytech/
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;

Montage de la carte :

Fichiers: Fichier:ManetteUSBLilianPierre.zip

gerber: Fichiers: Fichier:SE3-pad-job.gbrjob.zip gerber: Fichiers: Fichier:SE3-pad-LGPC.zip