找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

STM32F103RCT6單片機(jī)按鍵控制智能車(chē)正反轉(zhuǎn)的代碼怎么做?

查看數(shù): 1806 | 評(píng)論數(shù): 7 | 收藏 0
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2023-5-18 22:57

正文摘要:

有大佬知道這種核心板按鍵控制智能車(chē)正反轉(zhuǎn)的代碼怎么做嗎

回復(fù)

ID:1073399 發(fā)表于 2023-5-22 22:47
#include "stm32f10x.h"

#define MOTOR_A1_PIN GPIO_Pin_2  //電機(jī)A1引腳
#define MOTOR_A2_PIN GPIO_Pin_3  //電機(jī)A2引腳
#define MOTOR_B1_PIN GPIO_Pin_4  //電機(jī)B1引腳
#define MOTOR_B2_PIN GPIO_Pin_5  //電機(jī)B2引腳

#define KEY_PIN GPIO_Pin_0   //按鍵引腳

void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);

int main(void)
{
  GPIO_Configuration();
  
  while(1)
  {
    if(GPIO_ReadInputDataBit(GPIOA,KEY_PIN) == 0) //按鍵按下
    {
      GPIO_SetBits(GPIOB, MOTOR_A1_PIN);  //電機(jī)A正轉(zhuǎn)
      GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
      GPIO_SetBits(GPIOB, MOTOR_B1_PIN);  //電機(jī)B正轉(zhuǎn)
      GPIO_ResetBits(GPIOB, MOTOR_B2_PIN);
      Delay(0xFFFFF); //延時(shí)一段時(shí)間,使智能車(chē)前進(jìn)
    }
    else  //按鍵未按下
    {
     GPIO_ResetBits(GPIOB, MOTOR_A1_PIN);  //電機(jī)A停止
      GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
      GPIO_ResetBits(GPIOB, MOTOR_B1_PIN);  //電機(jī)B停止
      GPIO_ResetBits(GPIOB, MOTOR_B2_PIN);
    }
  }
}

void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);  //使能GPIOA和GPIOB時(shí)鐘

  //按鍵引腳配置
  GPIO_InitStructure.GPIO_Pin = KEY_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  //上拉輸入
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  //電機(jī)引腳配置
  GPIO_InitStructure.GPIO_Pin = MOTOR_A1_PIN | MOTOR_A2_PIN | MOTOR_B1_PIN | MOTOR_B2_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}

/*
這個(gè)代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的按鍵控制智能車(chē)前進(jìn)的功能。當(dāng)按鍵按下時(shí),電機(jī)A和電機(jī)B同時(shí)正轉(zhuǎn),使智能車(chē)前進(jìn);當(dāng)按鍵未按下時(shí),電機(jī)A和電機(jī)B停止,智能車(chē)停止前進(jìn)。

在代碼中,我們使用了兩個(gè)GPIO口控制電機(jī)的正反轉(zhuǎn),其中MOTOR_A1_PIN和MOTOR_B1_PIN控制電機(jī)正轉(zhuǎn),MOTOR_A2_PIN和MOTOR_B2_PIN控制電機(jī)反轉(zhuǎn)。在按鍵引腳(KEY_PIN)被按下時(shí),我們?cè)O(shè)置了電機(jī)正轉(zhuǎn)的引腳,使智能車(chē)前進(jìn),同時(shí)使用了一個(gè)簡(jiǎn)單的延時(shí)函數(shù)Delay來(lái)控制智能車(chē)前進(jìn)的時(shí)間。當(dāng)按鍵未被按下時(shí),我們關(guān)閉了所有電機(jī)引腳,使智能車(chē)停止前進(jìn)。
*/
ID:731755 發(fā)表于 2023-5-22 19:19
jhczy 發(fā)表于 2023-5-22 08:49
我也在做無(wú)刷電機(jī)的驅(qū)動(dòng)板,現(xiàn)在被卡在開(kāi)環(huán)啟動(dòng)轉(zhuǎn)閉環(huán)不能自動(dòng)銜接上,顯示“速度反饋錯(cuò)誤”啟動(dòng)后達(dá)到設(shè) ...

你的速度快一點(diǎn),我才開(kāi)始,用的有刷電機(jī),干擾的單片機(jī)無(wú)法控制,現(xiàn)在正在改電路
ID:170318 發(fā)表于 2023-5-22 08:49
13872888583 發(fā)表于 2023-5-22 00:37
我也在研究這個(gè)東西,目前我的板子已經(jīng)手工焊接好,正在研究程序。不過(guò)你首先把材料備齊。電機(jī),單片機(jī)核心 ...

我也在做無(wú)刷電機(jī)的驅(qū)動(dòng)板,現(xiàn)在被卡在開(kāi)環(huán)啟動(dòng)轉(zhuǎn)閉環(huán)不能自動(dòng)銜接上,顯示“速度反饋錯(cuò)誤”啟動(dòng)后達(dá)到設(shè)定速度就停轉(zhuǎn)了
ID:170318 發(fā)表于 2023-5-22 08:46
wangshunda 發(fā)表于 2023-5-21 23:47
用單片機(jī)直接控制電機(jī)正反轉(zhuǎn),需要四個(gè)IO口,控制四個(gè)繼電器,把這四個(gè)分成兩組對(duì)電機(jī)供電。兩組不能同時(shí)供 ...

樓主的電機(jī)可能不是有刷電機(jī)
ID:731755 發(fā)表于 2023-5-22 00:37
我也在研究這個(gè)東西,目前我的板子已經(jīng)手工焊接好,正在研究程序。不過(guò)你首先把材料備齊。電機(jī),單片機(jī)核心板,電機(jī)驅(qū)動(dòng)板,電源或者電池
ID:820444 發(fā)表于 2023-5-21 23:47
用單片機(jī)直接控制電機(jī)正反轉(zhuǎn),需要四個(gè)IO口,控制四個(gè)繼電器,把這四個(gè)分成兩組對(duì)電機(jī)供電。兩組不能同時(shí)供電,不然會(huì)短路。
自己做的話(huà),很麻煩,很多接線(xiàn),不好看,不實(shí)用。
買(mǎi)一個(gè)電機(jī)驅(qū)動(dòng)板, 按鍵控制一個(gè)GPIO引腳,不會(huì)出現(xiàn)短路問(wèn)題。
ID:517951 發(fā)表于 2023-5-20 11:53
這個(gè)板子在網(wǎng)上能買(mǎi)到的, 賣(mài)家店鋪里面有例程.  自己增加一個(gè)按鍵, 一個(gè)電機(jī)驅(qū)動(dòng)板, 按鍵控制一個(gè)GPIO腳高低電平給到電機(jī)驅(qū)動(dòng)板來(lái)實(shí)現(xiàn)正反轉(zhuǎn).

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

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

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