BD網盤鏈接:
https://pan.baidu.com/s/187ePq84u2QjE1bsVPM6i3g?pwd=9jvv
提取碼:9jvv
一、實驗簡介
本實驗是使用CW32單片機制作一個入門的遙控循跡小車。遙控采用藍牙配合手機APP進行遙控。循跡使用一個5路的循跡模塊。使用OLED模塊進行顯示當前小車狀態(tài)。
二、實驗器材
本實驗使用到了CW32F030C8小藍板、智能小車底板、電機驅動模塊、OLED模塊、DX-BT04-E藍牙模塊、Wch-Link下載調試器、Keil5開發(fā)環(huán)境。
二、接線圖
實驗完整接線圖:
四、用到的外設
1.串口2:
串口2用于藍牙模塊,使手機和單片機通過藍牙模塊進行串口透傳,從 而進行點對點通信。
2.高級定時器ATIM:
初始化高級定時器CH1B和CH2B進行PWM波輸出,從而達到電機調速目的。
3.基本定時器BTIM1:
初始化基本定時器1,在基本定時器中斷服務函數中對循跡模塊進行掃描。將掃描的結果保存,以便在循跡模式中使用。
4.IIC1:
IIC1用于外掛OLED顯示模塊。
五、核心代碼
// 基本定時器中斷回調函數
// 在回調函數中對循跡模塊進行掃描,將循跡模塊的狀態(tài)保存進sensor_data中
void BTIM1_IRQHandler(void)
{
if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV)) // 判斷是否是通道1中斷
{
BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV); // 清除中斷標志位
char t = 0x00; // 設置零時變量保存灰度傳感器的值
// 保存灰度傳感器的值
// 采用或運算,檢測到黑線將相應的位設置為1
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_1))
{
t |= 0x08; // 00001000 左邊數第一個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_2))
{
t |= 0x04; // 00000100 左邊數第二個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_3))
{
t |= 0x02; // 00000010 左邊數以三個
}
if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_4))
{
t |= 0x01; // 00000001 左邊數第4個
}
if (!GPIO_ReadPin(TRACKING_GPIOC, TRACKING_5))
{
t |= 0x10; // 00010000 左邊數第5個
}
sensor_data = t; // 將灰度傳感器的值賦值給sensor_data
}
}
// 串口1中斷處理函數
void UART1_IRQHandler(void)
{
unsigned char TxRxBuffer;
if (USART_GetITStatus(CW_UART1, USART_IT_RC) != RESET)
{
USART_ClearITPendingBit(CW_UART1, USART_IT_RC); // 清除中斷標志位
TxRxBuffer = USART_ReceiveData_8bit(CW_UART1); // 將接收到的數據放入TxRxBuffer
USART_RX_BUF[rxIndex] = TxRxBuffer; // 將接收到的數據放入緩沖區(qū)
if (rxIndex < USART_REC_LEN - 1) // 做數據長度的限制,留一個字節(jié)用于結束字符或者溢出檢測
{
// 接收到的字符包含 n 或者 r 結束接收
if (USART_RX_BUF[rxIndex - 1] == 'n' || USART_RX_BUF[rxIndex - 1] == 'r')
{
USART_RX_BUF[rxIndex] = '?'; // 在最后一個字節(jié)加上空字符,表示字符串結束
}
else
{
rxIndex++;
}
}
rxIndex = 0; // 清除數據標志
flag = 1; // 清除
}
審核編輯 黃宇
-
遙控
+關注
關注
11文章
285瀏覽量
57369 -
循跡小車
+關注
關注
42文章
65瀏覽量
68609 -
CW32
+關注
關注
1文章
203瀏覽量
640
發(fā)布評論請先 登錄
相關推薦
武漢芯源半導體CW32芯片重慶地區(qū)線下技術交流會成功舉辦
CW32模塊使用 紅外循跡傳感器
![<b class='flag-5'>CW32</b>模塊使用 紅外<b class='flag-5'>循跡</b>傳感器](https://file1.elecfans.com//web2/M00/07/A9/wKgaombqc8aAN75XAAAm0trqtWc10.webp)
19.3-星曈科技 openmv Hopenmv發(fā)送五個uchar Openmv+STM32F103C8T6視覺巡線小車 STM32循跡小車系列教程
![19.3-星曈科技 openmv Hopenmv發(fā)送五個uchar Openmv+STM32F103C8T6視覺巡線<b class='flag-5'>小車</b> STM32<b class='flag-5'>循跡</b><b class='flag-5'>小車</b>系列教程](https://file1.elecfans.com/web2/M00/03/DF/wKgaoma-11WAeNKnAARmh75k2yc492.png)
20.0-電磁桿的組裝和實物介紹“這個是就是你想要的“-智能車電磁組 電磁循跡小車
![20.0-電磁桿的組裝和實物介紹“這個是就是你想要的“-智能車電磁組 電磁<b class='flag-5'>循跡</b><b class='flag-5'>小車</b>](https://file1.elecfans.com/web2/M00/02/F8/wKgZoma-7pOAIMfMAA5D0ea0gkE311.png)
20.3-使用兩個通道進行電磁循跡 智能車競賽 電磁桿原理圖 電磁循跡小車 STM32電磁小車 電磁循跡算法
![20.3-使用兩個通道進行電磁<b class='flag-5'>循跡</b> 智能車競賽 電磁桿原理圖 電磁<b class='flag-5'>循跡</b><b class='flag-5'>小車</b> STM32電磁<b class='flag-5'>小車</b> 電磁<b class='flag-5'>循跡</b>算法](https://file1.elecfans.com/web2/M00/02/F9/wKgZoma-8POAIgCCAAR1IORoZDg608.png)
基于CW32的有刷直流電機控制實驗三:直流電機閉環(huán)位置和速度控制實驗
![基于<b class='flag-5'>CW32</b>的有刷直流電機控制實驗三:直流電機閉環(huán)位置和速度控制實驗](https://file1.elecfans.com//web2/M00/EB/91/wKgaomZZkeOAaOfAAACMRFwYzWs33.webp)
芯源半導體首個CW32嵌入式創(chuàng)新實驗室揭牌
產教融合,校企合作——武漢芯源半導體首個CW32嵌入式創(chuàng)新實驗室順利揭牌!
![產教融合,校企合作——武漢芯源半導體首個<b class='flag-5'>CW32</b>嵌入式創(chuàng)新實驗室順利揭牌!](https://file1.elecfans.com/web2/M00/E1/5D/wKgaomY4baaAcxXJAADBiFEsbUY473.png)
評論