小车项目1:让小车动起来

发布时间:2024年01月02日

?1、小车底盘组装

?2、电机模块开发

L9110s概述 ?

????????L9110S是一块直流电机驱动电路,该产品为电池供电的玩具、低压或电池供电的控制应用提供了 一种集成直流马达驱动的解决方案。电路内部集成了采用MOS管设计的H桥驱动电路,主要应用于驱 动通用直流电机。

接通VCCGND 模块电源指示灯亮?

?
硬件接线
B-1A -- PB10
B-1B -- PB2
A-1A -- PB1
A-1B -- PB0
左轮向前? B0 高电平 B1低电平
右轮向前? B2 高电平 B10 低电
左轮向后 ?B0 低电平 B1高电平
右轮向后? B2 低电平 B10 高电平

3、代码实现及cubeMX配置


main.c?
循环:前进一秒,后退一秒,左转一秒,右转一秒,停止一秒。
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "motor.h"
#include "string.h"
#include <stdio.h>

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	HAL_UART_Receive_IT(&huart1, &buf, 1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		goForward();
		HAL_Delay(1000);
		goBack();
		HAL_Delay(1000);
		goLeft();
		HAL_Delay(1000);
		goRight();
		HAL_Delay(1000);
		stop();
		HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}
motor.c
#include "motor.h"
#include "gpio.h"

void goForward(void)
{
	//左轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
	//右轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);
}

void goBack(void)
{
	//左轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
	//右轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET);
}

void goLeft(void)
{
	//左轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
	//右轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);
}

void goRight(void)
{
	//左轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
	//右轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);
}

void stop(void)
{
	//左轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
	//右轮
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);
}
motor.h
#ifndef __MOTOR_H__
#define __MOTOR_H__

void goForward(void);

void goBack(void);

void goLeft(void);

void goRight(void);

void stop(void);

#endif /*__MOTOR_H__*/

4、小车视频

小车前后左右

文章来源:https://blog.csdn.net/qq_61391875/article/details/135333739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。