Москва
+7(900) 697-6991
Обратный звонок
Умный глаз на основе круглого экрана DWIN
26.06.2023

——С форума разработчиков DWIN

Рекомендуемый для всех на форуме разработчиков DWIN проект с открытым исходным кодом представляет собой очень интересную рутину для имитации движения человеческого глаза. Инженер использовал несколько материалов для изображения человеческого глаза для реализации таких функций, как движение глазного яблока, моргание, распознавание лиц и слеживание.

Введение в решение с открытым исходным кодом:

1. Материал изображения пользовательского интерфейса

Примечание редактора: интеллектуальный экран DWIN основан на изображениях для завершения разработки пользовательского интерфейса, который может легко реализовывать различные эффекты отображения.


Изображения

2. Разработка интерфейса

Разработать интерфейс с помощью программного обеспечения DGUS относительно просто, и требуется всего два графических элемента управления. В этой рутине инженер выбрал 2,1-дюймовый круглый смарт-экран.

Разработка


3. Реализуйте анимацию мигания

Пусть снимки век отображаются по очереди через определенные промежутки времени:

Анимация моргания

Пусть изображения век отображаются по очереди с интервалами:

//Blink animation

void blink_animat(void)

{

if(blink_flag == 0)

    {

blink_cnt++;

if(blink_cnt >= 4)

        {

blink_flag = 1;

        }

    }

else

    {

blink_cnt–;

if(blink_cnt <= 0)

        {

blink_flag = 0;

        }

    }    

write_dgus_vp(0×3000, (u8 *)&blink_cnt, 2);

void blink_run()

{

static u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 2000000)

    {

run_timer_cnt = 0;

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

blink_animat();

Delay_ms(30);

    }

}

4. Осознайте, что глазные яблоки естественно смотрят влево и вправо.

Это похоже на моргание, но для управления движением глаз необходимо сравнить время работы кварцевого генератора. После многократной отладки инженер разработал следующий набор кодов.

//Eyeball animation

void eyeball_animat(void)

{

eyeball_timer_cnt++;

if(eyeball_timer_cnt < 50)

    {

eyeball_cnt = 20;

    }

else if(eyeball_timer_cnt < 51)

    {

eyeball_cnt = 50;

    }

else if(eyeball_timer_cnt < 52)

    {

eyeball_cnt = 80;

    }

else if(eyeball_timer_cnt < 53)

    {

eyeball_cnt = 94;

    }

else if(eyeball_timer_cnt < 103)

    {

eyeball_cnt = 94;

    }

else if(eyeball_timer_cnt < 104)

    {

eyeball_cnt = 80;

    }

else if(eyeball_timer_cnt < 105)

    {

eyeball_cnt = 50;

    }

else if(eyeball_timer_cnt < 106)

    {

eyeball_cnt = 20;

    }

else if(eyeball_timer_cnt < 107)

    {

eyeball_cnt = -10;

    }

else if(eyeball_timer_cnt < 108)

    {

eyeball_cnt = -40;

    }

else if(eyeball_timer_cnt < 158)

    {

eyeball_cnt = -54;

    }

else if(eyeball_timer_cnt < 159)

    {

eyeball_cnt = -40;

    }

else if(eyeball_timer_cnt < 160)

    {

eyeball_cnt = -10;

    }

else if(eyeball_timer_cnt < 161)

    {

eyeball_cnt = 20;

eyeball_timer_cnt = 0;

    }

//Move left and right

// if(eyeball_flag == 0)

//    {

// eyeball_cnt++;

// if(eyeball_cnt >= 94)

//        {

// eyeball_flag = 1;

//        }

//    }

// else

//    {

// eyeball_cnt–;

// if(eyeball_cnt <= -54)

//        {

// eyeball_flag = 0;

//        }

//    } 

if(eyeball_cnt >= 0)

    {

eyeball_pos[0] = 0×00;

eyeball_pos[1] = eyeball_cnt;

    }

else

    {

eyeball_pos[0] = 0xFF;

eyeball_pos[1] = (eyeball_cnt & 0xFF);

    }    

write_dgus_vp(0×3111, (u8 *)&eyeball_pos, 2);

void eyeball_run()

{

static u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 20000)

    {

run_timer_cnt = 0;

eyeball_animat();

    }

5. Добавьте функцию распознавания лиц ESP32, чтобы реализовать движение глаз, следующих за лицом.

Метод обработки здесь заключается в том, что при обнаружении лица глаза сами по себе не перемещаются, и в цикле while определяется переменная, которая увеличивается. Когда приращение достигнет определенного значения, глазные яблоки будут двигаться сами по себе. Когда последовательный порт получит данные, эта переменная будет очищена, и тогда можно будет перемещать только глаза в соответствии с положением лица. Основной код выглядит следующим образом:

if(rec_data_timer_cnt < 1000000)

        {

rec_data_timer_cnt++;

        }

else

        {

eyeball_run();

        } 

extern u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

void Communication_CMD(u8 st)

{

if((uart[st].Rx_F==1 )&&(uart[st].Rx_T==0))

    {

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#if(Type_Communication==1)

Describe_8283(st);

#elif(Type_Communication==2)

Describe_Modbus(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

    }

}


Время публикации: 26 июня 2023
Товары по теме Весь каталог
DMG24240C015_13WN DWIN T5L0 UART HMI 1.54" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C015_13WN DWIN T5L0 UART HMI 1.54" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C015_13WN DWIN T5L0 UART HMI 1.54" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C015_13WN DWIN T5L0 UART HMI 1.54" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C015_13WN DWIN T5L0 UART HMI 1.54" IPS круглый ЖК-дисплей коммерческого класса
0
125 RMB
шт
DMG24240C013_13WN DWIN T5L0 UART HMI 1.3" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C013_13WN DWIN T5L0 UART HMI 1.3" IPS круглый ЖК-дисплей коммерческого класса
DMG24240C013_13WN DWIN T5L0 UART HMI 1.3" IPS круглый ЖК-дисплей коммерческого класса
0
128 RMB
шт
DMG48480C021_03W DWIN T5L1 UART HMI 2.1" круглый ЖК-дисплей коммерческого класса
DMG48480C021_03W DWIN T5L1 UART HMI 2.1" круглый ЖК-дисплей коммерческого класса
DMG48480C021_03W DWIN T5L1 UART HMI 2.1" круглый ЖК-дисплей коммерческого класса
DMG48480C021_03W DWIN T5L1 UART HMI 2.1" круглый ЖК-дисплей коммерческого класса
DMG48480C021_03W DWIN T5L1 UART HMI 2.1" круглый ЖК-дисплей коммерческого класса
0
165 RMB
шт
Тип Touch-панели [Сенсорные параметры]
  • WTC
  • WN
Яркость [Дисплей]
  • 350 nit
  • 400 nit
DMG48480C028_03W DWIN T5L1 HMI 2.8" круглый IPS ЖК-дисплей коммерческого класса
DMG48480C028_03W DWIN T5L1 HMI 2.8" круглый IPS ЖК-дисплей коммерческого класса
DMG48480C028_03W DWIN T5L1 HMI 2.8" круглый IPS ЖК-дисплей коммерческого класса
0
4 750.80 ₽
шт
Тип Touch-панели [Сенсорные параметры]
  • WTC
Яркость [Дисплей]
  • 300 nit
DMG24240C013_03W DWIN T5L0 UART HMI 1.3" круглый ЖК-дисплей коммерческого класса
DMG24240C013_03W DWIN T5L0 UART HMI 1.3" круглый ЖК-дисплей коммерческого класса
DMG24240C013_03W DWIN T5L0 UART HMI 1.3" круглый ЖК-дисплей коммерческого класса
DMG24240C013_03W DWIN T5L0 UART HMI 1.3" круглый ЖК-дисплей коммерческого класса
0
3 119.15 ₽
шт
Тип Touch-панели [Сенсорные параметры]
  • WTC
  • WN
Яркость [Дисплей]
  • 150 nit
  • 200 nit

Главная

Каталог

0

Корзина

0

Избранное

1

Сравнение

Кабинет

Вопрос?

Позвонить

E-mail

Telegram

Доставка

Контакты

Акции

Коллекции

Инфо

Компания

Где купить

Новости