例程資料鏈接如下(群文件也可下載):
BD網(wǎng)盤鏈接:
https://pan.baidu.com/s/187ePq84u2QjE1bsVPM6i3g?pwd=9jvv
提取碼:9jvv
一、實驗簡介
本實驗是使用CW32單片機制作一個入門的遙控循跡小車。遙控采用藍牙配合手機APP進行遙控。循跡使用一個5路的循跡模塊。使用OLED模塊進行顯示當(dāng)前小車狀態(tài)。
二、實驗器材
本實驗使用到了CW32F030C8小藍板、智能小車底板、電機驅(qū)動模塊、OLED模塊、DX-BT04-E藍牙模塊、Wch-Link下載調(diào)試器、Keil5開發(fā)環(huán)境。

二、接線圖


實驗完整接線圖:

四、用到的外設(shè)
1.串口2:
串口2用于藍牙模塊,使手機和單片機通過藍牙模塊進行串口透傳,從 而進行點對點通信。
2.高級定時器ATIM:
初始化高級定時器CH1B和CH2B進行PWM波輸出,從而達到電機調(diào)速目的。
3.基本定時器BTIM1:
初始化基本定時器1,在基本定時器中斷服務(wù)函數(shù)中對循跡模塊進行掃描。將掃描的結(jié)果保存,以便在循跡模式中使用。
4.IIC1:
IIC1用于外掛OLED顯示模塊。
五、核心代碼
// 基本定時器中斷回調(diào)函數(shù)
// 在回調(diào)函數(shù)中對循跡模塊進行掃描,將循跡模塊的狀態(tài)保存進sensor_data中
void BTIM1_IRQHandler(void)
{
if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV)) // 判斷是否是通道1中斷
{
BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV); // 清除中斷標(biāo)志位
char t = 0x00; // 設(shè)置零時變量保存灰度傳感器的值
// 保存灰度傳感器的值
// 采用或運算,檢測到黑線將相應(yīng)的位設(shè)置為1
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_1))
{
t |= 0x08; // 00001000 左邊數(shù)第一個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_2))
{
t |= 0x04; // 00000100 左邊數(shù)第二個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_3))
{
t |= 0x02; // 00000010 左邊數(shù)以三個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_4))
{
t |= 0x01; // 00000001 左邊數(shù)第4個
}
if (!GPIO_ReadPin(TRACKING_GPIOC, TRACKING_5))
{
t |= 0x10; // 00010000 左邊數(shù)第5個
}
sensor_data = t; // 將灰度傳感器的值賦值給sensor_data
}
}
// 串口1中斷處理函數(shù)
void UART1_IRQHandler(void)
{
unsigned char TxRxBuffer;
if (USART_GetITStatus(CW_UART1, USART_IT_RC) != RESET)
{
USART_ClearITPendingBit(CW_UART1, USART_IT_RC); // 清除中斷標(biāo)志位
TxRxBuffer = USART_ReceiveData_8bit(CW_UART1); // 將接收到的數(shù)據(jù)放入TxRxBuffer
USART_RX_BUF[rxIndex] = TxRxBuffer; // 將接收到的數(shù)據(jù)放入緩沖區(qū)
if (rxIndex < USART_REC_LEN - 1) // 做數(shù)據(jù)長度的限制,留一個字節(jié)用于結(jié)束字符或者溢出檢測
{
// 接收到的字符包含 n 或者 r 結(jié)束接收
if (USART_RX_BUF[rxIndex - 1] == 'n' || USART_RX_BUF[rxIndex - 1] == 'r')
{
USART_RX_BUF[rxIndex] = '?'; // 在最后一個字節(jié)加上空字符,表示字符串結(jié)束
}
else
{
rxIndex++;
}
}
rxIndex = 0; // 清除數(shù)據(jù)標(biāo)志
flag = 1; // 清除
}
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
遙控
+關(guān)注
關(guān)注
11文章
291瀏覽量
59226 -
循跡小車
+關(guān)注
關(guān)注
42文章
65瀏覽量
69469 -
CW32
+關(guān)注
關(guān)注
1文章
299瀏覽量
1847
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
基于CW32的藍牙無刷遙控車案列
產(chǎn)品應(yīng)用案例簡介:
聚焦CW32,著手PT2432,驅(qū)動無刷電機,集成CH571F,賦能藍牙交互,串聯(lián)智能終端,形成組合拳,對標(biāo)外星科技。?
開源協(xié)議: MIT
一、外觀展示
二、電路展示
發(fā)表于 01-15 08:22
CW32單片機如何讓生活更便捷
這是一種全新的生活方式,它通過接收并處理傳感器的數(shù)據(jù),以控制智能馬桶的所有功能。感謝CW32單片機,我們可以在日常生活中無縫地融入這種新的科技。
決定我們?nèi)绾紊畹?,已?jīng)不再只是我們的選擇,更是我們
發(fā)表于 12-11 06:11
CW32時鐘運行中失效檢測的流程是什么?CW32時鐘運行中失效檢測注意事項有哪些呢?
CW32時鐘運行中失效檢測的流程是什么?CW32時鐘運行中失效檢測注意事項有哪些?
發(fā)表于 12-10 07:22
關(guān)于CW32 互補PWM 程序調(diào)試的疑問求解
在調(diào)試CW32 輸出互補PWM 的程序時,發(fā)現(xiàn)在線調(diào)試時波形輸出正常,但是當(dāng)把程序在下到CW32 自行運行時,波形輸出不正常,這是什么原因?qū)е碌哪兀?/div>
發(fā)表于 12-08 07:02
基于芯源CW32 MCU的LED閃爍示例及代碼分析
最近我在項目中使用了芯源的CW32 MCU,這是一款非常適合物聯(lián)網(wǎng)和低功耗應(yīng)用的微控制器。在初步學(xué)習(xí)和使用中,我做了一個簡單的LED閃爍實驗,通過這篇帖子給大家分享一下代碼及相關(guān)的配置步驟。
硬件
發(fā)表于 12-04 06:52
CW32 MCU溫度監(jiān)測應(yīng)用
最近,我在項目中使用CW32 MCU,來實現(xiàn)一個簡單的溫度監(jiān)測系統(tǒng)。CW32的靈活性和性能讓我在這個應(yīng)用中得心應(yīng)手。以下是我的實現(xiàn)過程和代碼示例。
應(yīng)用簡介本項目通過連接一個溫度傳感器LM35來實時
發(fā)表于 12-03 08:03
CW32L012小型機器人控制評估板活動 四足機器人+智能小車 開箱評測
一、評測前言
非常感謝CW32生態(tài)社區(qū),開源分享了許多比較好玩、優(yōu)質(zhì)的項目。這次活動都尾聲了還能有幸申請購買到 四足機器人+小車-智能小車(套件數(shù)量不多)的評測套件,多謝C32生態(tài)社區(qū)的大力支持
發(fā)表于 11-24 23:44
CW32 MCU用什么IDE開發(fā)?
推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
發(fā)表于 11-12 07:52
CW32 MCU有哪些系列?
目前CW32 MCU有通用高性能MCU、安全低功耗MCU、無線射頻MCU等3個系列。其中射頻MCU集成了無線收發(fā)器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW32W031(Sub-1G)系列。
發(fā)表于 11-12 07:34
基于CW32的遙控循跡小車
評論