Klavyeden input alma sorunu STM32 USART Bluetooth

Başlatan sytax333, 10 Ağustos 2017, 22:57:17

sytax333

Herkese iyi günler,

Amacım bilgisayarımın bluetooth'undan veriyi STM32 ye yollamak ve benden gelen veriye göre dc motoru sürmek. Kendim yazdığım basit bir bash script ile klavyeden input alıyorum ve bu inputu serial port üzerinden yolluyorum.
Ancak sorun oluşan yer klavyenizde bir tuşa basılı tutarsanız ilk önce basılı tuttuğunuz rakam/harf bir kere yazılıyor arada minik bir delay oluşuyor ardından arka arkaya yazmaya başlıyor. Bundan kaynaklı olarak sorun oluşuyor çünkü ben motorun parmağım tuşta basılı olduğu sürece dönmesini bıraktığımda ise durmasını istiyorum ama az önce dediğim nedenden kaynaklı olarak motor ilk bir dönüyoru duruyor sonra tekrar dönmeye başlıyor ta ki bırakana kadar.

Yazdığım USART IRQHandler aşağıdaki gibidir

void USART3_IRQHandler()
{
	if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)
	{
		int speed;
		char ch	= USART3 ->DR;

				
				if((ch == 'w'))
						{


								TIM2->CCR1 = 0;
								TIM2->CCR2 = 500;
								Delay(4200000);

						}
				
				else if((ch == 's'))
						{
								TIM2->CCR2 = 0;
								TIM2->CCR1 = 500;
								Delay(4200000);


						}
				else
				{
					TIM2->CCR2 = 0;
					TIM2->CCR1 = 0;

				}



	}
}


Ve yazdığım basit bash scrip taşağıdaki gibidir

#!/bin/bash
# Basic if statement
bold=$(tput bold)
normal=$(tput sgr0)
color=$(tput setaf 4)
while true; do
read -s -n1 var
if [ "$1" = "" ]
then
echo Lutfen bir Port girin ornek ${color}${bold}sudo ./Controller.sh /dev/rfcomm..${normal}

else
if [ "$var" = "a" ]
then
echo a > $1

elif [ "$var" = "w" ] 
then
echo w > $1

elif [ "$var" = "d" ] 
then
echo d > $1

elif [ "$var" = "s" ] 
then
echo s > $1

fi
fi
done


kısacası klavyemden tuşa basılı tuttuğum sürece motoru döndürücek bırakınca durucak bir kod için ne eklemem çıkarmam gerekiyor. Ortalama almayı düşündüm ama bir türlü çıkamadım işin içinden.Delay ekleyerek klavyedeki 1 saniyelik farkı kapatmaya çalıştım ama bu seferde motor yutkunarak dönüyor temiz sabit hızda bir dönüş değil yani.
Şimdiden yorumlarınız için teşekkür ederim.