[Açık Kaynak] Aralıklı Hareket Tanıma Test Sistemi

——DWIN Geliştirici Forumundan

Bu sayımızda DWIN Geliştirici Forumu – Aralıklı Hareket Tanıma Test Sisteminin ödüllü açık kaynak örneğini tanıtacağız. Mühendisler, T5L işletim sistemi çekirdeği aracılığıyla PAJ7620U2 hareket tanıma sensörüyle etkileşim kurmak için 7 inçlik bir COF akıllı ekran kullanıyor. Herhangi bir düğmeyi kullanmanıza gerek yoktur. Menü sistemi kontrol ekranına girmek için elinizi sensöre yakın tutmanız ve yukarı, aşağı, sol, sağ, yakın, uzak, sola döndürme, sağa döndürme ve dalgadan oluşan 9 hareket efektini gerçekleştirmeniz yeterlidir.

1. kullanıcı arayüzüMmalzemeDoyun

asd (2)
asd (1)

2.C51 Mühendislik Tasarımı

T5L işletim sistemi çekirdeği, veri etkileşimi için PAJ7620U2 hareket tanıma sensörüyle etkileşime girer, mevcut hareketi algılar, o anda görüntülenen resmi ve sayfayı çevirerek görüntülenen resmi belirler ve hareketleri kullanarak sayfa değiştirme işlevini gerçekleştirir. Referans kodu aşağıdaki gibidir:

void select_operate(uint16_t gesrure_value)

{

if(gesrure_value == GES_UP) //yukarı

{

if(select_value >= 2)

{

select_value -= 2;

}

dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);

}

else if(gesrure_value == GES_DOWN) //aşağı

{

if(select_value

{

select_value += 2;

}

dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);

}

else if(gesrure_value == GES_LEFT) //left

{

if(select_value % 2 == 1)

{

select_value -= 1;

}

dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);

}

else if(gesrure_value == GES_RIGHT) //sağ

{

if(select_value % 2 == 0)

{

select_value += 1;

}

dgus_show_variate_icon_location_set(SELECT_DESCRIBE_RECTANGLE, select_pos[select_value][0], select_pos[select_value][1]);

}

}

 

void turn_operate(uint16_t gesrure_value)

{

uint16_t ben = 0;

uint8_t turn_mode = 0; //Sayfa çevirme modu, 0 yukarı, 1 aşağı, 2 sola, 3 sağa

uint16_t turn_count = 0; //Son sayfa dönüşü sayısı

if(gesrure_value == GES_UP || gesrure_value == GES_DOWN || gesrure_value == GES_LEFT || gesrure_value == GES_RIGHT)

{

if(gesrure_value == GES_UP) //yukarı

{

dönüş_modu = 0;

dönüş_sayımı = 48;

}

else if(gesrure_value == GES_DOWN) //aşağı

{

dönüş_modu = 1;

dönüş_sayımı = 48;

}

else if(gesrure_value == GES_LEFT) //left

{

dönüş_modu = 2;

dönüş_sayımı = 80;

}

else if(gesrure_value == GES_RIGHT) //sağ

{

dönüş_modu = 3;

dönüş_sayımı = 80;

}

if(turning_current_image == 0 || turning_current_image == 2)

{

turn_current_image = 1;

}

başka

{

turn_current_image = 2;

}

for(i = 0;i

{

anahtar(turning_mode)

{

durum 0:

dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 0, 480 - i * 10);

t5l0_sys_delay_ms(20);

if(turning_last_image != 0)

{

dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0, 0 - i * 10);

}

kırmak;

dava 1:

dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 0, -480 + i * 10);

t5l0_sys_delay_ms(20);

if(turning_last_image != 0)

{

dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0, 0 + i * 10);

}

kırmak;

durum 2:

dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, 800 - i * 10, 0);

t5l0_sys_delay_ms(20);

if(turning_last_image != 0)

{

dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0 - i * 10, 0);

}

kırmak;

durum 3:

dgus_show_variate_icon_location_set(turning_current_image * 0x100 + 0x2000, -800 + i * 10, 0);

t5l0_sys_delay_ms(20);

if(turning_last_image != 0)

{

dgus_show_variate_icon_location_set(turning_last_image * 0x100 + 0x2000, 0 + i * 10, 0);

}

kırmak;

}

t5l0_sys_delay_ms(20);

}

turn_last_image = turn_current_image;

}

}


Gönderim zamanı: Mar-21-2024