亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 Arduino Uno 和蓝牙实现遥控小车:分步指南

组件与物料

Arduino UNO×1
SparkFun 双 H 桥电机驱动板 L298×1

所需工具与设备

3D 打印机(通用)

应用与在线服务

MIT App Inventor 2
Arduino IDE

项目简介

我想远程控制一辆小车,尝试了多种方案后决定采用蓝牙通信。准备好所需硬件并编写软件后,这个项目成为了我在 Hackster 上发布的第二个作品。

使用 Arduino Uno 和蓝牙实现遥控小车:分步指南

代码

Arduino 代码

char buffer[67];
byte Pino02 = 2;
byte Pino03 = 3;
byte Pino04 = 4;
byte Pino05 = 5;
byte Pino06 = 6;
byte Pino07 = 7;
byte Pino12 = 12;
byte Pino13 = 13;

void setup() {
  Serial.begin(9600);
  Serial.flush();
  pinMode(Pino02, OUTPUT);
  pinMode(Pino03, OUTPUT);
  pinMode(Pino04, OUTPUT);
  pinMode(Pino05, OUTPUT);
  pinMode(Pino06, OUTPUT);
  pinMode(Pino07, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    int index = 0;
    delay(100); // 等待缓冲区填满
    int numChar = Serial.available();
    if (numChar > 65) numChar = 65;
    while (numChar--) {
      buffer[index++] = Serial.read();
    }
    splitString(buffer);
  }
}

void splitString(char* data) {
  Serial.print("接收数据: ");
  Serial.println(data);
  char* parameter;
  parameter = strtok(data, " ,");
  while (parameter != NULL) {
    setLED(parameter);
    parameter = strtok(NULL, " ,");
  }
  // 清空缓冲区
  for (int x = 0; x < 66; x++) {
    buffer[x] = '\0';
  }
  Serial.flush();
}

void setLED(char* data) {
  // 前进左转
  if (data[0] == 'A') {
    analogWrite(9, 50); analogWrite(10, 50);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 前进右转
  if (data[0] == 'C') {
    analogWrite(9, 50); analogWrite(10, 50);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 后退1
  if (data[0] == 'B') {
    analogWrite(9, 25); analogWrite(10, 25);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, HIGH);
  }
  // 后退2
  if (data[0] == 'M') {
    analogWrite(9, 75); analogWrite(10, 75);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, HIGH);
  }
  // 后退3
  if (data[0] == 'N') {
    analogWrite(9, 125); analogWrite(10, 125);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, HIGH);
  }
  // 后退4
  if (data[0] == 'P') {
    analogWrite(9, 175); analogWrite(10, 175);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, HIGH);
  }
  // 后退5
  if (data[0] == 'L') {
    analogWrite(9, 225); analogWrite(10, 225);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, HIGH);
  }
  // 前进1
  if (data[0] == 'D') {
    analogWrite(9, 25); analogWrite(10, 25);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 前进2
  if (data[0] == 'H') {
    analogWrite(9, 75); analogWrite(10, 75);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 前进3
  if (data[0] == 'I') {
    analogWrite(9, 125); analogWrite(10, 125);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 前进4
  if (data[0] == 'K') {
    analogWrite(9, 175); analogWrite(10, 175);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 前进5
  if (data[0] == 'L') {
    analogWrite(9, 225); analogWrite(10, 225);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
    digitalWrite(12, HIGH); digitalWrite(13, LOW);
  }
  // 停止
  if (data[0] == 'U') {
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, LOW);
    digitalWrite(12, LOW); digitalWrite(13, LOW);
  }
  // 慢速前进
  if (data[0] == 'E') {
    analogWrite(9, 50); analogWrite(10, 50);
    digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
    digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
  }
  // 慢速后退
  if (data[0] == 'F') {
    analogWrite(9, 50); analogWrite(10, 50);
    digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
    digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
  }
}

自定义零件与外壳

arduinoslider2_dxxyKBsRDa.apk

制造工艺

  1. 集成二维码、RFID与体温验证的门禁控制系统
  2. 树莓派 + Arduino UNO + 三星 SAMI 极速构建火灾检测系统
  3. 自制 Arduino 伊斯兰祷告时间实时时钟
  4. 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
  5. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  6. Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
  7. Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
  8. 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目
  9. 蓝牙控制 8×8 LED 点阵滚动显示:Arduino Nano + MAX7219
  10. Arduino 智能咖啡机:蓝牙控制、温度曲线与自动启停
  11. 语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战
  12. Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试