3 - Commander une LED RGB par PWM”

De Wiki L.A.B
Révision de 8 novembre 2017 à 18:48 par BERNIER François (discussion | contributions) (Page créée avec « =='''Commander une led Rgb par PWM'''== <br> <br> Nous allons poussez un peu plus loin l'exploration du PWM en pilotant l’éclairage d'une led RGB. Réaliser le montage... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Commander une led Rgb par PWM



Nous allons poussez un peu plus loin l'exploration du PWM en pilotant l’éclairage d'une led RGB.

Réaliser le montage suivant à l'aide de :

- 2 résistances de 100 Ω pour les broches Vert et Bleu

- 1 résistance de 200 Ω pour la broche rouge

Voici l'emplacement des différentes broches de la led RGB

RGB-LED.png


Et le schéma de câblage

STM32-RGB1-LED4.PNG


Nous devons comme précédemment pré-configurer les broches du STM32 sous CubeMx comme ceci

STM32-RGB-LED1.PNG


Dans l'onglet "Configuration" , régler les Timer 2 et 3 avec le "Prescaler" à 80 et le "Counter Periode" à 100

STM32-RGB-LED5.PNG
STM32-RGB-LED6.PNG


Et le code à incorporer dans votre fichier main.c

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM3_Init();
  MX_TIM2_Init();

  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start( &htim3, TIM_CHANNEL_1 ); // Green
  HAL_TIM_PWM_Start( &htim3, TIM_CHANNEL_2 ); // Red
  HAL_TIM_PWM_Start( &htim2, TIM_CHANNEL_1 ); // Blue
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  for ( int i = 0; i < 100; i ++ )
	  {
  /* USER CODE END WHILE */
	  __HAL_TIM_SET_COMPARE( &htim3, TIM_CHANNEL_1, i); // Green
	  __HAL_TIM_SET_COMPARE( &htim3, TIM_CHANNEL_2, i); // Red
	  __HAL_TIM_SET_COMPARE( &htim2, TIM_CHANNEL_1, i); // Blue
	  HAL_Delay( 20 );
  }
	  for ( int i = 100; i > 0; i -- )
	  {
	   /* USER CODE END WHILE */
	 	  __HAL_TIM_SET_COMPARE( &htim3, TIM_CHANNEL_1, i); // Green
	 	  __HAL_TIM_SET_COMPARE( &htim3, TIM_CHANNEL_2, i); // Red
	 	  __HAL_TIM_SET_COMPARE( &htim2, TIM_CHANNEL_1, i); // Blue
	 	  HAL_Delay( 20 );
	   }
  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

  }