kolay gelsin.
tabiki istediğiniz şekilde buton / led kontrolü yapabilirsiniz.
a: bastığınız butona karşılık gelen led in yanması mı?(örneğin; 1. butona bastım, 1. led yanacak. 2. butona bastım 2. led yanacak.....)
b: led in parlaklığına (yani pwm e) karşılık gelen led in yanması mı? (örneğin; %0 duty için hiç birled yanmayacak. %25 duty için 1. led yanacak. %50 duty için 2. led yanacak......)
c: led in parlaklığına (yani pwm e) karşılık gelen ledlerin hepsinin yanması mı? (örneğin; %0 duty için hiç led yanmayacak. %25 duty için 1. led yanacak. %50 duty için 1. ve 2. led yanacak. %75 duty için 1. ve 2. ve 3. led ler yansın......)
benim tavsiyem (c
şıkkıdır. (ve ona göre duty in degerine göre basit if - else if kontrolü yapıp çıkışları yonlendireceğiz.)
if-else komutları içerisindeki pin yönlendirmelerinde istediğin gibi değişiklik yapıp kullanabilirsiniz. değişik portlardan pin kullannabilirsiniz örneğin; pin_c1, pin_a3, pin_b2, pin_c5, kullanabilirsiniz.
#define led1 pin_xx
#define led2 pin_xx
#define led3 pin_xx
#define led4 pin_xx
if( pwm_duty_degeri > 75 )
{
output_high(led1);
output_high(led2);
output_high(led3);
output_high(led4);
}
else if ( pwm_duty_degeri > 50 )
{
output_high(led1);
output_high(led2);
output_high(led3);
output_low(led4);
}
else if( pwm_duty_degeri > 25 )
{
output_high(led1);
output_high(led2);
output_low(led3);
output_low(led4);
}
else if( pwm_duty_degeri > 0 )
{
output_high(led1);
output_low(led2);
output_low(led3);
output_low(led4);
}
else
{
output_low(led1);
output_low(led2);
output_low(led3);
output_low(led4);
}
yada led kontrolü için tek port kullanılacaksa bir dizi oluşturulup ; port kontrolüde yapabiliriz.
cons int8 ledler [4]={0x00,0x01,0x03,0x07,0x0F}; // degerler (0x00) = 0000 , (0x01) = 0001 , (0x03) = 0011 , (0x07) = 0111 , (0x0f) = 1111 // bir dizi oluşturup ledleri yakacak olan çıkış degerlerini yazıyoruz
pwm_duty_yuzde_yirmibes_degeri xx // maximum pwm in yüzde yirmibeşine denk gelen rakamı yazıyoruz. %25 den 1,2 deger aşağı olmasını tavsiye ederim. %25 i geçmesin.
bolu_deger = pwm_duty_degeri / pwm_duty_yuzde_yirmibes_degeri ;// 5 rakam yani 0,1,2,3,4 rakamlarını elde etmek için duty degerinin max dutyin %25 ine bölümü
output_A (ledler[bolu_deger]);// elde edilen bolu derine denk gelen yani pwm şiddetine denk gelen çıkışların aktif edilmesi