安卓手機自動翻頁器設計
[本文來自本人的公眾號,感興趣的可以關注,定期釋出一些技術文章]
引言
之前有這麼一個挑戰活動:使用者若使用京東閱讀App每天閱讀30分鐘,每天閱讀滿300頁(兩者都要滿足),連續堅持180天,可以返手機全款。
在正常情況下,我們鼓勵使用者認真閱讀;然而,如果遇到某天很忙或者不太想閱讀,那麼這項任務就比較痛苦了。
為了輕鬆地完成該挑戰,技術黨開始想辦法了。我想到了2個辦法:使用 mcu 控制線控耳機進行翻頁;使用步進電機帶動電容筆進行翻頁(此方法簡直無解了)。
系統需求
有這麼一個裝置,它能在開啟閱讀App後,模擬使用者行為,在35min左右自動完成320頁的翻頁任務(適當冗餘)。
方案設計
1。 方案對比
2。 MCU+耳機
3。 成本
mcu:10元
線控耳機:10元
軟體開發:10元
詳細設計
1。 邏輯圖
2。 硬體設計
MCU主控晶片:STM32F103RCT6
GPIO模組
3。 軟體設計
開發環境:Keil
功能模組:
定時器模組
隨機數模組
這裡貼出主迴圈程式碼(最具價值部分)。
while (1)
{
// 1。滿足條件,不再執行
if((gPageTotal >= PAGE_CNT) && (gRunTotalSec >= PAGE_TIME))
{
enableRunFlag = 1;
gTimerCntSec = 0;
GPIO_SetBits(GPIOA, GPIO_Pin_0); //點亮綠燈
}
else
{
;
}
// 2。翻頁邏輯
if((gTimerCntSec >= gRandomSec) && (0 == enableRunFlag))
{
gTimerCntSec = 0;
if(ledFlag == 0)
{
ledFlag = 1;
GPIO_SetBits(GPIOA, GPIO_Pin_0); //點亮綠燈
}
else
{
ledFlag = 0;
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //關閉綠燈
}
GPIO_ResetBits(GPIOA, GPIO_Pin_4); // 模擬按鍵按下:翻頁
Delay_Ms(100);
GPIO_SetBits(GPIOA, GPIO_Pin_4); //模擬按鍵彈起;
gPageTotal++;
gRandomSec = gRandomTmp; // 更新一次
}
else
{
srand(gRunTotalSec); // 選取種子
gRandomTmp = ((rand() % 5) + FIRST_PAGE_SEC); //產生5~10的整數;
}
}
測試
注:演示影片可在公眾號中檢視。
小結
嵌入式真的很有趣!可以完成很多有創意的產品。
技術是把雙刃劍,我們鼓勵正確使用技術造福人們,反對將此技術或工具用來謀取私利!
對此產品感興趣的小夥伴,可以成本價獲取。