吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1335|回复: 7
上一主题 下一主题
收起左侧

[C&C++ 原创] 机器人编程作业

  [复制链接]
跳转到指定楼层
楼主
newophwq 发表于 2026-4-3 09:52 回帖奖励
作业要求器材:ESP32控制板*1、按键模块*1、24BJY48减速步进电机及驱动模块*1
1、控制板上电后步进电机无转动情况;
2、按下按键(按下并松开),步进电机开始转动;
3、再次按下按键,步进电机停止转动;

以下是完成程序:
// 步进电机 28BYJ-48 驱动引脚
const int IN1 = 33;
const int IN2 = 4;
const int IN3 = 2;
const int IN4 = 25;

// 按键引脚
const int keyPin = 26;

// 四相八拍步进电机节拍
int steps[8][4] = {
  {1, 0, 0, 0},
  {1, 1, 0, 0},
  {0, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 0},
  {0, 0, 1, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};

// 运行状态:false=停止,true=转动
bool motorRunning = false;

// 按键防抖
int lastKeyState = HIGH;
int keyState;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  
  pinMode(keyPin, INPUT_PULLUP);
  
  // 上电全部低电平,电机不转
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void loop() {
  // 按键检测(防抖)
  int reading = digitalRead(keyPin);
  if (reading != lastKeyState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != keyState) {
      keyState = reading;

      // 按键按下(低电平)
      if (keyState == LOW) {
        motorRunning = !motorRunning; // 切换启停状态
      }
    }
  }
  lastKeyState = reading;作业要求:器材:ESP32控制板*1、按键模块*1、24BJY48减速步进电机及驱动模块*1
1、控制板上电后步进电机无转动情况;
2、按下按键(按下并松开),步进电机开始转动;
3、再次按下按键,步进电机停止转动;
// 步进电机 28BYJ-48 驱动引脚
const int IN1 = 33;
const int IN2 = 4;
const int IN3 = 2;
const int IN4 = 25;

// 按键引脚
const int keyPin = 26;

// 四相八拍步进电机节拍
int steps[8][4] = {
  {1, 0, 0, 0},
  {1, 1, 0, 0},
  {0, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 0},
  {0, 0, 1, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};

// 运行状态:false=停止,true=转动
bool motorRunning = false;

// 按键防抖
int lastKeyState = HIGH;
int keyState;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  
  pinMode(keyPin, INPUT_PULLUP);
  
  // 上电全部低电平,电机不转
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void loop() {
  // 按键检测(防抖)
  int reading = digitalRead(keyPin);
  if (reading != lastKeyState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != keyState) {
      keyState = reading;

      // 按键按下(低电平)
      if (keyState == LOW) {
        motorRunning = !motorRunning; // 切换启停状态
      }
    }
  }
  lastKeyState = reading;

  // 电机运行逻辑
  if (motorRunning) {
    for (int i = 0; i < 8; i++) {
      digitalWrite(IN1, steps[i][0]);
      digitalWrite(IN2, steps[i][1]);
      digitalWrite(IN3, steps[i][2]);
      digitalWrite(IN4, steps[i][3]);
      delay(2);
    }
  } else {
    // 停止时全部输出低,电机不耗电不抖动
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
  }
}

免费评分

参与人数 1热心值 +1 收起 理由
jaffa + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
萌萌的提莫酱 发表于 2026-4-3 12:48
这种程序ai直接生成问题不大
3#
夜雨听风 发表于 2026-4-3 13:35
4#
rourou2014 发表于 2026-4-3 14:26
场景呢,设备呢,无图无真相纯看代码没啥意思
5#
ling247 发表于 2026-4-3 15:18
可以用AI来写,控制一个电机还是很简单的
6#
 楼主| newophwq 发表于 2026-4-4 08:32 |楼主
场景视频明天发
7#
苏紫方璇 发表于 2026-4-5 11:31
代码插入可以参考置顶帖
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
8#
tohyueyun 发表于 2026-5-5 00:56
机器人呢???!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-24 17:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表