18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RT-Thread與英飛凌Psoc6-evaluationkit-062S2的智能觸摸與手勢(shì)系統(tǒng) | 技術(shù)集結(jié)

RT-Thread官方賬號(hào) ? 2025-09-13 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄


電容觸摸界面


手勢(shì)識(shí)別


網(wǎng)絡(luò)同步


RTduino使用


使用方法


項(xiàng)目源碼

1 電容觸摸界面


利用 Psoc6-evaluationkit-062S2 的 CapSense 模塊設(shè)計(jì)一個(gè)交互式觸摸面板。

可以通過(guò)觸摸面板調(diào) 整PWM的頻率使蜂鳴器播放不同的音調(diào)(需要映射do (1), re (2), mi (3), fa (4) 音符)+ 調(diào)整 PWM 信號(hào)的占空比控制 LED 指示燈。

1.1 Capsense觸控

在Slider例程上修改,根據(jù)觸摸位置(x)判斷音符、手勢(shì)

slider_touch_info = CyCapSense_GetTouchInfo(CY_CAPSENSE_LINEARSLIDER0_WDGT_ID, &cy_capsense_context); slider_touch_status = slider_touch_info->numPosition; slider_pos = slider_touch_info->ptrPosition->x; intx=slider_pos; if(RT_NULL != slider_touch_status) { intsenor_id=detect_sensor_id(); char*gesture=detect_gesture(x); intnow_note_id=detect_note(x); screen_show_info(now_note_id,senor_id,gesture); rt_event_send(&buzzer_event, EVENT_TOUCH); message_json(senor_id, gesture); }

獲取sensor id,逐個(gè)判斷是否激活,返回id

Cy_CapSense_IsSensorActive(CY_CAPSENSE_LINEARSLIDER0_WDGT_ID,i,&cy_capsense_context

intdetect_sensor_id(){ for(int i=0;i<4;i++)? ? {? ? ? ? if(Cy_CapSense_IsSensorActive\(CY_CAPSENSE_LINEARSLIDER0_WDGT_ID,i,&cy_capsense_context))? ? ? ? {? ? ? ? ? ? return?i;? ? ? ? }? ? } ?}

10ms掃描一次

voidloop(void){ /* put your main code here, to run repeatedly: */ rt_sem_take(trans_done_semphr,RT_WAITING_FOREVER); /* Process all widgets */ Cy_CapSense_ProcessAllWidgets(&cy_capsense_context); /* Process touch input */ process_touch(); /* Establishes synchronized operation between the CapSense * middleware and the CapSense Tuner tool. */ Cy_CapSense_RunTuner(&cy_capsense_context); /* Initiate next scan */ Cy_CapSense_ScanAllWidgets(&cy_capsense_context); rt_thread_mdelay(10);}

1.2 音調(diào)播放

4b807f3c-9046-11f0-8ce9-92fbcf53809c.jpg

改變pwm設(shè)置播放音調(diào),求出周期,設(shè)置20%的占空比

intnotes[] = {1,262,294,330,349,392,440,494};structrt_eventbuzzer_event;//int pre_note=0;voidset_notes(inti){ uint32_tperiod_ns =1000000000/ notes[i];// ns uint32_tpulse_ns = period_ns *0.2; // 20% rt_pwm_set(buzzer_pwm, PWM_DEV_CHANNEL, period_ns, pulse_ns); rt_pwm_enable(buzzer_pwm, PWM_DEV_CHANNEL);}

沒(méi)觸摸0.2s后停止播放

voidbuzzer_entry(void*parament){ rt_uint32_t e; while(1) { if(rt_event_recv(&buzzer_event,EVENT_TOUCH,RT_EVENT_FLAG_AND|RT_EVENT_FLAG_CLEAR,0,&e)!=RT_EOK) { rt_pwm_disable(buzzer_pwm,PWM_DEV_CHANNEL); } rt_thread_mdelay(200); }}

1.3 屏幕顯示

4b952c52-9046-11f0-8ce9-92fbcf53809c.jpg

觸摸響應(yīng)時(shí)間必須≤100ms,并且觸發(fā)的命令須顯示在 OLED 屏幕上(分辨率≥128x64 像素),并清晰標(biāo)識(shí)觸摸區(qū)域和操作。

使用ssd1306軟件包,分別顯示了音符,觸摸區(qū)域id,手勢(shì)

voidscreen_show_info(intnote,intid,char *gesture){ rt_mutex_take(screen_mutex, RT_WAITING_FOREVER); ssd1306_SetCursor(2,15); ssd1306_WriteString(note_str[note], Font_7x10, White); ssd1306_SetCursor(20,15); ssd1306_WriteChar(id+'0', Font_7x10, White); ssd1306_SetCursor(2,30); ssd1306_WriteString(gesture, Font_7x10, White); ssd1306_UpdateScreen(); rt_mutex_release(screen_mutex);}

顯示時(shí)間

voidscreen_show_time(char *time){ rt_mutex_take(screen_mutex,RT_WAITING_FOREVER); ssd1306_SetCursor(2,0); ssd1306_WriteString(time,Font_6x8,White); ssd1306_UpdateScreen(); rt_mutex_release(screen_mutex);}

1.4 LED隨滑動(dòng)控制

可以通過(guò)觸摸面板調(diào)整PWM的占空比控制 LED 指示燈的亮度。

使用pwm

rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 1 * 1000 * 1000, GET_DUTY_CYCLE(brightness)); }

可以更改其它引腳

4baad8ae-9046-11f0-8ce9-92fbcf53809c.png4bb914f0-9046-11f0-8ce9-92fbcf53809c.png4bc68478-9046-11f0-8ce9-92fbcf53809c.png

2 手勢(shì)識(shí)別


使用 CapSense 模塊實(shí)現(xiàn) 2 種不同手勢(shì)的識(shí)別(向左滑動(dòng)、向右滑動(dòng))。

由于本開(kāi)發(fā)板上的是slider線(xiàn)性滑條,在CapSense組件中,只有觸摸板widget支持手勢(shì)功能。所以通過(guò)記錄最近3次觸摸位置(x),簡(jiǎn)單判斷是否為手勢(shì)

char *detect_gesture(int num){ staticintval[3] = {0}; val[0] =val[1]; val[1] =val[2]; val[2] = num; rt_kprintf("val: %d %d %d\n",val[0],val[1],val[2]); char *gesture =""; if(ORDER(val[0],val[1],val[2])) { rt_kprintf("left\n"); gesture ="left "; } elseif (ORDER(val[2],val[1],val[0])) { rt_kprintf("right\n"); gesture ="right"; } else { gesture =" "; } returngesture;}

3 網(wǎng)絡(luò)同步


通過(guò)網(wǎng)絡(luò)模塊使用MQTT協(xié)議同步NTP時(shí)間并顯示到OLED上(格式:YYYY-MM-DD HHMMSS)。并將觸摸和手勢(shì)數(shù)據(jù)(包括:觸摸區(qū)域 ID、手勢(shì)類(lèi)型)傳輸?shù)椒?wù)器端顯示。

3.1 rw007

4bd3da4c-9046-11f0-8ce9-92fbcf53809c.png

4be7db46-9046-11f0-8ce9-92fbcf53809c.png

3.2 mqtt

使用pahomqtt軟件包, 使用參考樣例的mqtt_start函數(shù)

設(shè)置好topic等宏

#defineMQTT_URI"tcp://broker.emqx.io:1883"#defineMQTT_SUBTOPIC"abc/sub"#defineMQTT_PUBTOPIC"abc/pub"#defineMQTT_WILLMSG"Goodbye!"#defineMQTT_USERNAME"name"#defineMQTT_PASSWORD"password"

4bf97e46-9046-11f0-8ce9-92fbcf53809c.png

可以等待網(wǎng)絡(luò)連接后再連接mqtt

intcheck_network(void){ structnetdev *netdev =netdev_get_by_family(AF_INET); return(netdev &&netdev_is_link_up(netdev)/* && netdev_is_internet_up(netdev) */);}

用RyanJson軟件包生成json數(shù)據(jù),mqtt發(fā)送到相應(yīng)的topic

char*message_json(inttouch_area_id,char*gesture_type)
{ RyanJson_t root; root =RyanJsonCreateObject(); RyanJsonAddIntToObject(root,"Touch area ID", touch_area_id); RyanJsonAddStringToObject(root,"Gesture type",gesture_type ); rt_uint32_tlen; tmp_json =RyanJsonPrint(root,650, RyanJsonTrue, &len); intret =paho_mqtt_publish(&client, QOS1, MQTT_PUBTOPIC, tmp_json); rt_kprintf("json:%s\n",tmp_json); RyanJsonDelete(root); returntmp_json;}

3.3 ntp

在netutils軟件包中使能ntp

每秒更新時(shí)間

staticvoidtime_thread_entry(void *parameter){ structtm *tm; while(1) { //獲取當(dāng)前時(shí)間 time_t now =time(NULL); tm =localtime(&now);//使用UTC時(shí)間 strftime(time_buf, sizeof(time_buf),"%Y-%m-%d %H:%M:%S", tm); screen_show_time(time_buf); //線(xiàn)程睡眠1秒鐘 rt_thread_mdelay(1000); }}

4 RTduino使用


4.1 RT-Thread多任務(wù)集成

利用 Psoc6 的 RTduino 支持(RT-Thread 的 Arduino 兼容生態(tài)系統(tǒng))來(lái)實(shí)現(xiàn)實(shí)時(shí)觸摸和手勢(shì)處理

4c0509be-9046-11f0-8ce9-92fbcf53809c.png

4.2 使用.c文件中的函數(shù)

applications/arduino_main.cpp: :undefinedreference to`'

在arduino_main.cpp中調(diào)用其它文件的函數(shù)時(shí),提示說(shuō)未定義,要在對(duì)應(yīng)頭文件中添加extern "C"

#ifdef__cplusplusextern"C"{#endif#ifdef__cplusplus}#endif

5 使用方法


5.1 線(xiàn)程使用

buzzer線(xiàn)程,用于停止播放音調(diào)

time線(xiàn)程,用于更新屏幕顯示時(shí)間

rtduino loop,用于觸摸識(shí)別,與數(shù)據(jù)處理顯示

mqtt線(xiàn)程,用于等待網(wǎng)絡(luò)連接和啟動(dòng)mqtt客戶(hù)端

5.2 軟件包使用

4c168298-9046-11f0-8ce9-92fbcf53809c.png

6 項(xiàng)目源碼


Gitee倉(cāng)庫(kù)地址(https://gitee.com/dgjames/psoc6project

RT-Thread Github 開(kāi)源倉(cāng)庫(kù),歡迎撒個(gè)星(Star)支持,更期待你的代碼貢獻(xiàn):https://github.com/RT-Thread/rt-thread

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英飛凌
    +關(guān)注

    關(guān)注

    68

    文章

    2405

    瀏覽量

    141964
  • 觸摸
    +關(guān)注

    關(guān)注

    8

    文章

    200

    瀏覽量

    65501
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1502

    瀏覽量

    43777
  • psoc6
    +關(guān)注

    關(guān)注

    1

    文章

    10

    瀏覽量

    5169
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PSoC6-CY8CKIT-062S2-43012開(kāi)發(fā)板簡(jiǎn)介

    簡(jiǎn)介PSoC6-CY8CKIT-062S2-43012 是英飛凌推出的一款32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0)的開(kāi)發(fā)板,具有單周期乘法
    發(fā)表于 10-14 11:08

    【資料下載】英飛凌PSoC 6 RTT物聯(lián)網(wǎng)開(kāi)發(fā)板

    Psoc6-evaluationkit-062S2RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0
    發(fā)表于 04-13 13:38

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】

    首先感謝發(fā)燒友、RT-Thread英飛凌! 一、開(kāi)箱 Psoc6-evaluationkit-062S2RT-Thread 聯(lián)合英飛凌
    發(fā)表于 05-30 20:47

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】以搭積木方式實(shí)現(xiàn)簡(jiǎn)單的互聯(lián)型家庭網(wǎng)關(guān)

    Psoc6-evaluationkit-062S2RT-Thread工程就不介紹了,畢竟有現(xiàn)成的Psoc6-evaluationkit-062S2 BSP。 (一)wifi配置 根據(jù)
    發(fā)表于 05-31 22:19

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】+開(kāi)箱測(cè)試

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】+開(kāi)箱測(cè)試 硬件資源介紹 Psoc6-evaluationkit-062S2RT-Thread
    發(fā)表于 06-05 01:06

    RT-Thread文檔_英飛凌 Psoc6-CY8CKIT-062S2-43012上手指南

    RT-Thread文檔_英飛凌 Psoc6-CY8CKIT-062S2-43012 上手指南
    發(fā)表于 02-22 18:27 ?3次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>英飛凌</b> <b class='flag-5'>Psoc6-CY8CKIT-062S2</b>-43012上手指南

    英飛凌聯(lián)合 RT-Thread 發(fā)布 PSoC? 62 with CAPSENSE ? evaluation kit開(kāi)發(fā)板

    近日,RT-Thread 社區(qū)團(tuán)隊(duì)打造了新品開(kāi)發(fā)板:英飛凌聯(lián)合 RT-Thread 發(fā)布 ?PSoC 62 with CAPSENSE evaluation kit開(kāi)發(fā)板?(以下簡(jiǎn)稱(chēng)
    的頭像 發(fā)表于 04-13 01:35 ?2717次閱讀

    基于RT-Thread的家庭智能家居系統(tǒng)的控制平臺(tái)設(shè)計(jì)

    這個(gè)系統(tǒng)是在英飛凌Psoc6-evaluationkit-062S2開(kāi)發(fā)板的基礎(chǔ)上,充分利用了RT-Thread實(shí)時(shí)操作系統(tǒng)強(qiáng)大的功能及豐富
    發(fā)表于 07-18 16:23 ?1500次閱讀
    基于<b class='flag-5'>RT-Thread</b>的家庭<b class='flag-5'>智能</b>家居<b class='flag-5'>系統(tǒng)</b>的控制平臺(tái)設(shè)計(jì)

    基于PSOC6開(kāi)發(fā)板構(gòu)建的智能小車(chē)

    本項(xiàng)目是基于Psoc6-evaluationkit-062S2開(kāi)發(fā)板構(gòu)建的智能小車(chē)。該開(kāi)發(fā)板由RT-Thread英飛凌聯(lián)合推出,集成了一顆32位雙核CPU子
    發(fā)表于 07-28 15:14 ?1346次閱讀
    基于<b class='flag-5'>PSOC6</b>開(kāi)發(fā)板構(gòu)建的<b class='flag-5'>智能</b>小車(chē)

    如何設(shè)計(jì)一種基于PSOC6的人體交互式智能家居系統(tǒng)呢?

    Psoc6-evaluationkit-062S2RT-Thread 聯(lián)合英飛凌推出的一款集成 32 位雙核 CPU 子系統(tǒng)( ARM Cortex-M4 和 ARM Corte
    的頭像 發(fā)表于 07-28 16:02 ?1642次閱讀
    如何設(shè)計(jì)一種基于<b class='flag-5'>PSOC6</b>的人體交互式<b class='flag-5'>智能</b>家居<b class='flag-5'>系統(tǒng)</b>呢?

    英飛凌Psoc6-evaluationkit-062S2測(cè)評(píng)1_LED

    Psoc6-evaluationkit-062S2開(kāi)發(fā)板使用DAP_LINK方式下載,開(kāi)發(fā)板有兩個(gè)芯片,其中一塊芯片用作DAP_LINK下載,在安裝好插件的前提下,可以直接通過(guò)DAP_TYPEC下載
    發(fā)表于 08-08 17:18 ?979次閱讀
    <b class='flag-5'>英飛凌</b><b class='flag-5'>Psoc6-evaluationkit-062S2</b>測(cè)評(píng)1_LED

    PSoC?62 for RT-ThreadRT-Thread攜手英飛凌舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)沙龍,圓滿(mǎn)落幕!

    題的線(xiàn)下沙龍!此次沙龍聚焦使用英飛凌科技PSoC62在RT-Thread Studio平臺(tái)上進(jìn)行開(kāi)發(fā),并結(jié)合智能數(shù)據(jù)網(wǎng)關(guān)動(dòng)手培訓(xùn)為開(kāi)發(fā)者們提供了深入了解
    的頭像 發(fā)表于 12-14 16:25 ?1290次閱讀
    【<b class='flag-5'>PSoC</b>?62 for <b class='flag-5'>RT-Thread</b>】<b class='flag-5'>RT-Thread</b>攜手<b class='flag-5'>英飛凌</b>舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)沙龍,圓滿(mǎn)落幕!

    RT-Thread開(kāi)發(fā)者大會(huì)系統(tǒng)控制分論壇動(dòng)手實(shí)踐指南

    網(wǎng)關(guān)動(dòng)手實(shí)踐,本次實(shí)踐將使用——PSoC6-evaluationkit-062S2 。本開(kāi)發(fā)板是 RT-T
    的頭像 發(fā)表于 12-22 18:15 ?1119次閱讀
    <b class='flag-5'>RT-Thread</b>開(kāi)發(fā)者大會(huì)<b class='flag-5'>系統(tǒng)</b>控制分論壇動(dòng)手實(shí)踐指南

    英飛凌測(cè)評(píng)】英飛凌PSoC? 62開(kāi)發(fā)板試用報(bào)告-LCD ILI9341 8080 DEMO

    介紹 `Psoc6-evaluationkit-062S2` 是 RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cort
    的頭像 發(fā)表于 03-07 21:07 ?1676次閱讀
    【<b class='flag-5'>英飛凌</b>測(cè)評(píng)】<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b>? 62開(kāi)發(fā)板試用報(bào)告-LCD ILI9341 8080 DEMO

    基于PSOC6智能環(huán)境監(jiān)控系統(tǒng)

    本項(xiàng)目是基于PSOC6進(jìn)行開(kāi)發(fā),它具有以下特性Psoc6-evaluationkit-062S2RT-Thread聯(lián)合英飛凌推出的一款集成32位雙核CPU子
    的頭像 發(fā)表于 01-07 19:54 ?1117次閱讀
    基于<b class='flag-5'>PSOC6</b>的<b class='flag-5'>智能</b>環(huán)境監(jiān)控<b class='flag-5'>系統(tǒng)</b>