현재 조이스틱을 이용하여 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 */
}