Arduino的舵机与红外的结合

发布于:2023-02-02 ⋅ 阅读:(394) ⋅ 点赞:(0)

1 安装

Arduino:https://www.arduino.cc/en/software/
另外如果有地方需要Mixly的话,下载地址:
Mixly: https://pan.baidu.com/s/1zUor-LLE4Wiwk2rg8UAOcA 提取码 tt2x
请添加图片描述
在这里插入图片描述
在这里插入图片描述

2 走线

红外的走线见基于Arduino Uno开发板的红外遥控开发
舵机的走线请添加图片描述
舵机固定
请添加图片描述

3 测试开发板与硬件的功能

3.1 LED与延迟

3.1.1 Mixly程序

在这里插入图片描述

3.1.2 Arduino程序

void setup(){
  pinMode(7, OUTPUT);
}
void loop(){
  // 管脚:LED连接的管脚
  digitalWrite(7,HIGH);
  delay(1000);
  digitalWrite(7,LOW);
  delay(1000);
}

3.2 循环

3.2.1 Mixly程序

在这里插入图片描述

3.2.2 Arduino程序

void setup(){
  pinMode(7, OUTPUT);
}
void loop(){
  for (int i = 1000; i >= 100; i = i + (-100)) {
    // 管脚:LED管脚
    digitalWrite(7,HIGH);
    delay(i);
    digitalWrite(7,LOW);
    delay(i);
  }
}

3.3 红外接收器

使用实例ReceiveDump进行测试 基于Arduino Uno开发板的红外遥控开发

4 程序

Arduino 程序:

#include <Arduino.h>
#include <Servo.h>
#include <IRremote.hpp>
#define IR_RECEIVE_PIN          6
#define IR_SEND_PIN             3
Servo servo_9;
void setup() {
  servo_9.attach(9);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  IrSender.begin(3, ENABLE_LED_FEEDBACK);
}

void loop() {
#if defined(ARDUINO_ARCH_SAMD)
#define Serial SerialUSB
#endif
  const uint16_t rawData0[] = { 3080, 2970, 3080, 4370, 580, 1570, 580, 520, 580, 1620, 580, 520, 580, 520, 530, 1620, 580, 1620, 580, 520, 530, 1620, 580, 520, 530, 1670, 580, 1570, 580, 520, 580, 520, 530, 570, 580, 520, 530, 520, 580, 520, 580, 520, 530, 1670, 580, 520, 530, 1620, 580, 520, 580, 1570, 580, 520, 580, 520, 480, 620, 580, 520, 580, 470, 530, 570, 580, 520, 480, 620, 580, 520, 580, 1570, 580, 1620, 530, 570, 580, 1570, 530, 570, 580, 520, 530, 1620, 580, 520, 580, 1620, 580, 1620, 530, 520, 580, 1620, 530, 1670, 580, 470, 580, 520, 580, 520, 530, 570, 580, 520, 580, 470, 580, 520, 580, 520, 580, 520, 580, 520, 580, 470
  };
  const uint16_t rawData1[] = { 580, 520, 580, 1620, 530, 570, 580, 520, 580, 470, 580, 520, 580, 520, 530, 570, 580, 520, 580, 470, 580, 520, 580, 520, 580, 520, 530, 570, 580, 470, 580, 520, 580, 520, 580, 520, 530, 570, 580, 520, 580, 470, 580, 520, 580, 520, 530, 570, 580, 520, 580, 470, 580, 520, 580, 520, 580, 520, 480, 620, 580, 470, 580, 520, 580, 520, 580, 520, 530, 570, 580, 520, 580, 470, 530, 570, 580, 520, 480, 620, 580, 520, 580, 470, 530, 570, 580, 520, 580, 520, 530, 570, 580, 1570, 580, 520, 580, 1620, 530, 1620, 580, 520, 580, 520, 580, 520, 580, 470, 580, 1620, 580
  }; //见https://blog.csdn.net/gavinliu266/article/details/126042595中获取空调遥控器原码
  Serial.println("请选择功能 开空调1 / 开窗2 / 关窗3");
  while (Serial.available() == 0);//等待到有输入时
  int incomingByte = Serial.read();//输入
  if (incomingByte == 49) {
    for (int i = 1; i <= 15; i++) {
      IrSender.sendRaw(rawData0, sizeof(rawData0) / sizeof(rawData0[0]), NEC_KHZ);//发送
      IrSender.sendRaw(rawData1, sizeof(rawData1) / sizeof(rawData1[0]), NEC_KHZ);
      Serial.println("发送NEC编码信息......");
      delay(600);
    }
  }
  else if (incomingByte == 50) {
    for (int i = int(servo_9.read()); i <= 180; i++) {
      servo_9.write(i);
      delay(20);
    }
  }
  else if (incomingByte == 51) {
    for (int i = int(servo_9.read()); i >= 70; i--) {
      servo_9.write(i);
      delay(20);
    }
  }
  Serial.flush();
}

网站公告

今日签到

点亮在社区的每一天
去签到