Arduino--Mixly-继电器控制直流电机

Mixly-继电器控制直流电机

硬件:Arduino、按键、继电器、直流电机
软件:Mixly IDE
原理:
1.完成使用继电器控制直流电机功能。
2.通过按键控制继电器,实现按键控制直流电机功能。
(使用的方法跟按键控制LED灯的方法是一样的)

volatile boolean b1;
volatile boolean b2;
volatile byte click;
volatile boolean lastState;
volatile boolean toggle;

void setup(){
  lastState = 0;
  toggle = 1;
  click = 0;
  b1 = 0;
  b2 = 0;
  pinMode(7, OUTPUT);
  pinMode(8, INPUT_PULLUP);
  lastState = digitalRead(8);
  digitalWrite(7,HIGH);
}

void loop(){
  b1 = digitalRead(8);
  if (b1 != lastState) {
    delay(20);
    b2 = digitalRead(8);
    if (b2 == b1) {
      lastState = b1;
      click = click + 1;

    }

  }
  if (click == 2) {
    click = 0;
    toggle = !toggle;
    digitalWrite(7,toggle);

  }

}

代码图形化
在这里插入图片描述
实验效果视频:
https://www.bilibili.com/video/av74716802/

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用Arduino控制JGB37-520编码器电机,您需要将编码器连接到Arduino,并使用适当的代码来控制它。以下是一些基本步骤: 1. 确保您有一个JGB37-520编码器电机和一个Arduino板。 2. 连接编码器的电源和地线到Arduino的5V和GND引脚。 3. 将编码器的A相和B相输出连接到Arduino的两个数字引脚。可以选择任何可用的数字引脚,但最好选择支持外部中断的引脚。 4. 在Arduino上编写代码来读取编码器的输出并控制电机。 以下是一个示例代码,可以用作起点: ```arduino // 定义编码器的引脚 const int encoderPinA = 2; // A相 const int encoderPinB = 3; // B相 // 定义电机驱动引脚 const int motorPin1 = 4; // 电机控制引脚1 const int motorPin2 = 5; // 电机控制引脚2 // 定义编码器计数值和方向 volatile long encoderCount = 0; volatile int encoderDirection = 0; void setup() { // 配置引脚模式 pinMode(encoderPinA, INPUT_PULLUP); pinMode(encoderPinB, INPUT_PULLUP); pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); // 配置编码器中断 attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE); } void loop() { // 在这里实现您的控制逻辑 // 例如,可以根据编码器计数值来控制电机的转动方向和速度 // 注意:在这个示例中,我只是简单地改变电机的方向,您可能需要根据实际需求进行更复杂的控制 if (encoderDirection == 1) { // 顺时针方向 digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); } else if (encoderDirection == -1) { // 逆时针方向 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); } else { // 停止 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); } } // 编码器中断处理函数 void updateEncoder() { // 读取A相和B相的状态 int encoderStateA = digitalRead(encoderPinA); int encoderStateB = digitalRead(encoderPinB); // 根据状态改变计数值和方向 if (encoderStateA == encoderStateB) { encoderDirection = -1; } else { encoderDirection = 1; } encoderCount += encoderDirection; } ``` 这只是一个简单的示例代码,您可以根据您的需求对其进行修改和调整。请确保仔细阅读JGB37-520编码器电机的规格和连接方式,并根据需要进行相应的调整。 希望这可以帮助到您!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值