—— DWIN ясаучылар форумыннан
DWIN ясаучы форумы ачык чыганак проекты бу юлы һәркемгә тәкъдим ителә, кеше күзенең хәрәкәтен симуляцияләү өчен бик кызыклы тәртип. Инженер күз хәрәкәте, ялтырап тору, йөзне тану һәм ияртү кебек функцияләрне тормышка ашыру өчен берничә кеше күз рәсем материалларын кулланды.
Ачык чыганак чишелешләре белән таныштыру:
1. UI рәсем материалы
Редактор искәрмәсе: DWIN акыллы экран UI үсешен тәмамлау өчен рәсемнәргә нигезләнгән, алар төрле дисплей эффектларын җиңел аңлый ала.
2. Интерфейс үсеше
DGUS программа тәэминаты аша интерфейсны үстерү чагыштырмача гади, һәм ике график контроль генә кирәк. Бу тәртиптә инженер 2,1 дюймлы түгәрәк акыллы экран сайлады.
3. Ялкынлы анимацияне тормышка ашыру
Күз кабаклары рәсемнәре үз чиратында күрсәтелсен:
// Ялкынлы анимация
буш blink_animat (буш)
{
if (blink_flag == 0)
{
blink_cnt ++;
if (blink_cnt> = 4)
{
blink_flag = 1;
}
}
бүтән
{
blink_cnt–;
if (blink_cnt
{
blink_flag = 0;
}
}
write_dgus_vp (0 × 3000, (u8 *) & blink_cnt, 2);
}
буш blink_run ()
{
статик u32 run_timer_cnt = 0;
run_timer_cnt ++;
if (run_timer_cnt> = 2000000)
{
run_timer_cnt = 0;
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
blink_animated ();
Delay_ms (30);
}
}
4. Кашларның сулга һәм уңга табигый күренүен аңлагыз.
Бу ялтыравыкка охшаган, ләкин күз хәрәкәтен контрольдә тоту өчен кристалл осиллатор вакытын чагыштырырга кирәк. Күп тапкыр төзәткәннән соң, инженер түбәндәге кодлар җыелмасын эшләде.
// Көз анимациясе
буш күз_анимат (буш)
{
eyeball_timer_cnt ++;
if (eyeball_timer_cnt
{
eyeball_cnt = 20;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 50;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 80;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 94;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 94;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 80;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 50;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 20;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = -10;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = -40;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = -54;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = -40;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = -10;
}
бүтән очракта (eyeball_timer_cnt
{
eyeball_cnt = 20;
eyeball_timer_cnt = 0;
}
// Сулга һәм уңга күчегез
// if (eyeball_flag == 0)
// {
// eyeball_cnt ++;
// if (eyeball_cnt> = 94)
// {
// eyeball_flag = 1;
//}
//}
// бүтән
// {
// eyeball_cnt–;
// if (eyeball_cnt
// {
// eyeball_flag = 0;
//}
//}
if (eyeball_cnt> = 0)
{
eyeball_pos [0] = 0 × 00;
eyeball_pos [1] = eyeball_cnt;
}
бүтән
{
eyeball_pos [0] = 0xFF;
eyeball_pos [1] = (eyeball_cnt & 0xFF);
}
write_dgus_vp (0 × 3111, (u8 *) & eyeball_pos, 2);
}
буш eyeball_run ()
{
статик u32 run_timer_cnt = 0;
run_timer_cnt ++;
if (run_timer_cnt> = 20000)
{
run_timer_cnt = 0;
animated_eyeball ();
}
}
5. Йөз артыннан күз хәрәкәтен тормышка ашыру өчен ESP32 йөз тануны өстәгез.
Монда эшкәртү ысулы шунда: бит ачыклангач, күзләр үзләре хәрәкәтләнмиләр, һәм үзгәрүчән вакыт аралыгында арту өчен билгеләнә. Арту билгеле бер кыйммәткә җиткәч, күз кабаклары үзләре хәрәкәт итәчәк. Серияле порт мәгълүмат алгач, бу үзгәрүчән чистартылачак, аннары күзләрне битнең торышына карап хәрәкәт итә. Төп код түбәндәгечә:
if (rec_data_timer_cnt
{
rec_data_timer_cnt ++;
}
бүтән
{
eyeball_run ();
}
u32 rec_data_timer_cnt;
тышкы u16 eyeball_timer_cnt;
буш элемтә_CMD (u8 ст)
{
if ((uart [st] .Rx_F == 1) && (uart [st] .Rx_T == 0))
{
rec_data_timer_cnt = 0;
eyeball_timer_cnt = 0;
#if (Type_Communication == 1)
Тасвирлау_8283 (ст);
#elif (Type_Communication == 2)
Тасвирлау_Модбус (ст);
# эндиф
uart [st] .Rx_F = 0;
uart [st] .Rx_Num = 0;
}
}
Пост вакыты: 26-2023 июнь