找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3949|回復(fù): 6
收起左側(cè)

輝芒微單片機FT62F083RB觸摸滑輪滑條滑塊程序資料原創(chuàng)

  [復(fù)制鏈接]
ID:370644 發(fā)表于 2023-8-31 15:39 | 顯示全部樓層 |閱讀模式
    輝芒微單片機FT62F083RB觸摸滑輪滑條滑塊這是最近亞馬遜很火的產(chǎn)品,輕輕滑動就能實現(xiàn)調(diào)光調(diào)色,顯得很高大尚,產(chǎn)品智能化檔次提升了。下面就將我最近研究的分享出來。
滑輪介紹:它是一個圓盤,由4個touch觸摸按鍵組成,它將4個touch銅泊均勻分布在一個圓形的盤上,此時這個圓形分為32等份,即32個按鍵,我們手觸到哪個位置就會有相對應(yīng)的位置。然后將觸摸到的值解碼出來,去做你想做得事。
滑條介紹:它是一個長方形條,也是由4個touch觸摸按鍵組成,這一個長條將它分為16等分,即16個按鍵,我們手觸到哪個位置就會有相對應(yīng)的位置。然后將觸摸到的值解碼出來就行了。
注意事項:1、PCB layout時要注意均勻分布,否則解碼出來的效果會不靈敏
                2、在調(diào)觸摸閥值時,一定要在實際環(huán)境中調(diào)試,千萬不要飛線之類的,pcb板要求要標(biāo)準(zhǔn)化。即你實際應(yīng)用時是什么結(jié)構(gòu),你調(diào)試時就要用什么結(jié)構(gòu),若你調(diào)試時是用裸板,你應(yīng)用時裝了外殼,那是無法使用的。否則你調(diào)試時環(huán)境和使用不一樣,效果完全不一樣了。
3、程序算法上,要注意正反轉(zhuǎn)判斷及手觸摸位盡量不能太精密,因為圓盤太小,手指太大,它會占用2個鍵值,此時你若太精密,就導(dǎo)致它會誤判現(xiàn)象。來點實際的,現(xiàn)在把代碼上上來,因為電腦是正版繁體系統(tǒng),故注釋都是亂碼,望見諒。里面有視頻效果,真實的。

滑條1.jpg 滑條2.jpg 滑條3.jpg 滑條圖片.jpg

單片機源程序如下:
  1. #include "common.h"
  2. #include "syscfg.h"
  3. #include "touch.h"
  4. #define  uchar   unsigned char
  5. #define  uint      unsigned int
  6. extern volatile unsigned char WSPosition1;
  7. extern volatile unsigned char WSPosition2;
  8. extern   uint8_t                      fmd_channels;
  9. volatile  uint16_t                 readKeyNum;     
  10. uint16_t  lastkey=0;
  11. BOOL      f_lowpower=0;                                          
  12. uint16_t   TouchTimeCount;
  13. #define SENSIBILITY        2
  14. volatile  int lastKey;
  15. volatile  int currKey;
  16. volatile int delta;
  17. volatile int currOrient = 0;
  18. volatile unsigned char pwmDuty = 0;
  19. bit        flag;
  20. uchar pwm;
  21. void interrupt ISR(void)
  22. {
  23. if(T4UIE && T4UIF)                        
  24. {
  25. T4UIF = 1;                           
  26. TouchTimeCount++;
  27. }
  28. }
  29. void SysInit(void)
  30. {
  31. OSCCON = 0B01110001;               


  32. INTCON = 0;                                                  
  33. PORTB = 0B00000010;               
  34. TRISB = 0B11111101;               
  35. WPUB = 0B00000000;            
  36. ANSELA = 0B00000000;   
  37. }
  38. void WDT_Initial(void)
  39. {
  40. CLRWDT();                                             
  41. MISC0  = 0B00000000;           
  42. if(WAKEUPFREQUENCY==16)
  43. {
  44. WDTCON = 0B00001100;
  45. }
  46. else if(WAKEUPFREQUENCY==8)
  47. {
  48. WDTCON = 0B00001110;
  49. }
  50. else
  51. {
  52. WDTCON = 0B00010000;
  53. }         


  54. }
  55. void Time4Initial(void)
  56. {
  57. PCKEN |=0B00001000;      
  58. TIM4CR1        =0B00000101;
  59. TIM4IER        =0B00000001;
  60. TIM4SR        =0B00000000;
  61. TIM4EGR        =0B00000000;
  62. TIM4CNTR=0;
  63. TIM4PSCR=0B00000111;
  64. TIM4ARR        =124;
  65. INTCON |= 0B11000000;   
  66. }
  67. void Time1Initial(void)
  68. {
  69. PCKEN |= 0B00000010;   
  70. CKOCON=0B00100000;
  71. TCKSRC = 0B00000000;
  72. TIM1CR1 =0B10000101;  
  73. TIM1SMCR=0B00000000;
  74. TIM1IER = 0B00000000;
  75. TIM1SR1 =0B00000000;
  76. TIM1SR2 =0B00000000;
  77. TIM1EGR =0B00000000;
  78. TIM1CCMR1 =0B00000000;
  79. TIM1CCMR2 =0B00000000;
  80. TIM1CCMR3 =0B00000000;
  81. TIM1CCMR4 =0B01101000;
  82. TIM1CCER1 =0B00000000;
  83. TIM1CCER2 =0B00010000;
  84. AFP0=0B00001100;
  85. AFP1=0B00000000;  
  86. TIM1CNTRH = 0B00000000;               
  87. TIM1CNTRL = 0B00000000;
  88. TIM1PSCRH = 0B00000000;
  89. TIM1PSCRL = 0B00000000;
  90. TIM1ARRH = 0;               
  91. TIM1ARRL = 213;
  92. TIM1RCR = 0B00001111;           
  93. TIM1CCR1H =0;               
  94. TIM1CCR1L =14;
  95. TIM1CCR2H =0;               
  96. TIM1CCR2L = 14;
  97. TIM1CCR3H = 0;               
  98. TIM1CCR3L = 14;
  99. TIM1CCR4H =0;               
  100. TIM1CCR4L = 14;
  101. TIM1BKR = 0B11000000;           
  102. TIM1DTR = 0B00000111;           
  103. TIM1OISR =0B00000000;
  104. LEBCON =0B00000000;
  105. }
  106. void delay(uint16_t ii)
  107. {
  108. uint16_t x,y;
  109. for(x=0;x<500;x++)
  110. for(y=ii;y>0;y--);
  111. }
  112. unsigned char dealWithPositionValue(void)
  113. {
  114. unsigned char key = 0;
  115. currKey = WSPosition1;
  116. if(currKey!=0)
  117. {
  118. if(currKey != lastKey)
  119. {
  120. if((currKey != 16) && (lastKey != 16))
  121. {
  122. delta = currKey - lastKey;
  123. if((delta > 0) && (delta <= SENSIBILITY))
  124. {
  125. key = 1;
  126. }
  127. else if((delta < 0) && (delta >= (-SENSIBILITY)))
  128. {
  129. key = 2;
  130. }
  131. else
  132. {
  133. key = 0;
  134. }
  135. }
  136. else if((currKey == 16))
  137. {
  138. if(lastKey >= (16-SENSIBILITY))
  139. {
  140. key = 1;
  141. }
  142. else if(lastKey <= SENSIBILITY)
  143. {
  144. key = 2;
  145. }
  146. else
  147. {
  148. key = 0;
  149. }
  150. }
  151. else if((lastKey == 16))
  152. {
  153. if(currKey >= (16-SENSIBILITY))                        
  154. {
  155. key = 2;
  156. }
  157. else if(currKey <= SENSIBILITY)
  158. {
  159. key = 1;
  160. }
  161. else
  162. {
  163. key = 0;
  164. }
  165. }
  166. lastKey = currKey;        
  167. }

  168. }
  169. return key;
  170. }
  171. void main(void)
  172. {
  173. SysInit();
  174. Time4Initial();
  175. Time1Initial();
  176. TouchInital();
  177. WDT_Initial();
  178. while(1)
  179. {      
  180. CLRWDT();
  181. if(currOrient == 1)
  182. {
  183. if((currKey>3)&&(currKey<=6))
  184. {

  185. if(TIM1CCR4L>=42)
  186. {
  187. TIM1CCR4L= 42;
  188. }
  189. else
  190. {
  191. TIM1CCR4L++;
  192. delay(10);
  193. }
  194. }
  195. else if((currKey>6)&&(currKey<=9))
  196. {
  197. if(TIM1CCR4L>=84)
  198. {
  199. TIM1CCR4L= 84;
  200. }
  201. else
  202. {
  203. TIM1CCR4L++;
  204. delay(10);
  205. }
  206. }
  207. else if((currKey>9)&&(currKey<=12))
  208. {
  209. if(TIM1CCR4L>=126)
  210. {
  211. TIM1CCR4L= 126;
  212. }
  213. else
  214. {
  215. TIM1CCR4L++;
  216. delay(10);
  217. }
  218. }
  219. else if((currKey>12)&&(currKey<=14))
  220. {
  221. if(TIM1CCR4L>=168)
  222. {
  223. TIM1CCR4L= 168;
  224. }
  225. else
  226. {
  227. TIM1CCR4L++;
  228. delay(10);
  229. }
  230. }
  231. else if((currKey>14)&&(currKey<=16))
  232. {
  233. if(TIM1CCR4L>=210)
  234. {
  235. TIM1CCR4L= 210;
  236. }
  237. else
  238. {
  239. TIM1CCR4L++;
  240. delay(10);
  241. }
  242. }
  243. }
  244. else if(currOrient == 0)
  245. {
  246. flag=0;
  247. }
  248. else if(currOrient == 2)
  249. {
  250. if((currKey>0)&&(currKey<=3))
  251. {
  252. if(TIM1CCR4L>8)
  253. {
  254. TIM1CCR4L--;
  255. delay(10);
  256. }
  257. else
  258. {
  259. TIM1CCR4L= 8;
  260. }
  261. }
  262. else if((currKey>3)&&(currKey<=6))
  263. {
  264. if(TIM1CCR4L>42)
  265. {
  266. TIM1CCR4L--;
  267. delay(10);        
  268. }
  269. else
  270. {
  271. TIM1CCR4L= 42;

  272. }
  273. }
  274. else if((currKey>6)&&(currKey<=9))
  275. {
  276. if(TIM1CCR4L>84)
  277. {
  278. TIM1CCR4L--;
  279. delay(10);        
  280. }
  281. else
  282. {
  283. TIM1CCR4L= 84;
  284. }
  285. }
  286. else if((currKey>9)&&(currKey<=12))
  287. {
  288. if(TIM1CCR4L>126)
  289. {
  290. TIM1CCR4L--;
  291. delay(10);        
  292. }
  293. else
  294. {
  295. TIM1CCR4L= 126;
  296. }
  297. }
  298. else if((currKey>12)&&(currKey<=14))
  299. {
  300. if(TIM1CCR4L>168)
  301. {
  302. TIM1CCR4L--;
  303. delay(10);
  304. }
  305. else
  306. {

  307. TIM1CCR4L= 168;
  308. }
  309. }
  310. }
  311. if(TouchTimeCount>=(1000/SCANNINGTIME))                           
  312. {
  313. TouchTimeCount = 0;

  314. readKeyNum = TouchKeyScan();         
  315. currOrient = dealWithPositionValue();
  316. }
  317. }
  318. }
復(fù)制代碼

PCB文件下載: PCB文件.7z (3.81 MB, 下載次數(shù): 68)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:576203 發(fā)表于 2023-12-27 11:26 | 顯示全部樓層
感謝樓主無私分享,最近看到有用ft62f211做的隔空觸摸調(diào)光模塊,和水位檢測。應(yīng)該也是一樣原理。樓主有空了也實驗一下
回復(fù)

使用道具 舉報

ID:108987 發(fā)表于 2024-1-5 08:24 | 顯示全部樓層
感謝樓主, 正找滑環(huán)觸摸芯片呢
回復(fù)

使用道具 舉報

ID:71233 發(fā)表于 2024-1-8 08:10 | 顯示全部樓層
輝芒微單片機很便宜,下載器貴不貴呢?
回復(fù)

使用道具 舉報

ID:612257 發(fā)表于 2025-1-7 09:34 | 顯示全部樓層
樓主,有應(yīng)用過這個芯片的捕獲功能嗎?如果有的話希望可以發(fā)個資料作為參考模板,郵箱是1327209417@qq.com
回復(fù)

使用道具 舉報

ID:612257 發(fā)表于 2025-1-7 09:35 | 顯示全部樓層
樓主用過這個芯片的捕獲功能嗎
回復(fù)

使用道具 舉報

ID:71233 發(fā)表于 2025-1-20 15:22 | 顯示全部樓層
ft62f211可以用于做水位檢測嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表