현재 조이스틱을 이용하여 X값 Y값 그리고 SW의 값을 시리얼 터미널에서 출력하여 보려고하는데요,

SW의 값이 X값 혹은 Y값과 맞물려서 출력되고 있습니다. SW의 값이 안눌렸을때는 0 눌렸을때는 500의 값이 나오게 하고싶은데 어떻게 해야할까요? 모든 저항은 가변저항입니다.


#include "main.h"

#include <stdio.h>


/* USER CODE BEGIN 0 */

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar (int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc (intch,FILE*f)

#endif

PUTCHAR_PROTOTYPE

{

    if (ch == '\n')

        HAL_UART_Transmit(&huart2, (uint8_t*) "\r", 1, 0xFFFF);

    HAL_UART_Transmit (&huart2, (uint8_t*)&ch, 1, 0xFFFF);




            return ch;

}

/* USER CODE END 0 */


/* USER CODE BEGIN WHILE */

  uint16_t uwADCxConvertedValue[3];


  if (HAL_ADCEx_Calibration_Start (&hadc1)!= HAL_OK)

  {

      Error_Handler ();

  }

  while (1)

  {

      if (HAL_ADC_Start (&hadc1) != HAL_OK)

      {

          Error_Handler ();

      }


      for (uint8_t i = 0; i < 3; i++)

      {

          HAL_ADC_PollForConversion (&hadc1, 1000);


          if ((HAL_ADC_GetState (&hadc1) & HAL_ADC_STATE_REG_EOC) == HAL_ADC_STATE_REG_EOC)

          {

              uwADCxConvertedValue[i] = HAL_ADC_GetValue (&hadc1);

          }

      }

      HAL_ADC_Stop (&hadc1);

    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */


      printf ("VAR=%4d, CDS=%4d, SW=%4d\n", uwADCxConvertedValue[0], uwADCxConvertedValue[1], uwADCxConvertedValue[2]); /*SW=%4d\t uwADCxConvertedValue[2]*/

      HAL_Delay (300);





  }

  /* USER CODE END 3 */

}