산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드

부품 및 소모품

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

이 프로젝트는 블루투스를 이용해 RC카를 원격으로 제어하는 방법을 다룹니다. 필수 부품을 준비하고 소프트웨어를 작성한 후, 스마트폰 앱으로 자동차를 조종할 수 있게 됩니다. 이는 저의 두 번째 Hackster 프로젝트입니다.

아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드

소스 코드

아두이노 코드

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. 통합 QR, RFID, 온도 검증 출입 통제 시스템
  2. 삼성 SAMI, 아두이노 우노, 라즈베리 파이로 빠르고 신뢰성 높은 화재 감지 시스템 구축
  3. 아두이노 실시간 시계로 이슬람 기도 시간 알림 장치 만들기
  4. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  5. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  6. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  7. 아두이노 우노로 8×8 LED 매트릭스 마스터하기: 단계별 가이드
  8. 아두이노 우노와 1Sheeld로 만드는 4x4x4 LED 큐브 – 인터랙티브 LED 프로젝트
  9. 블루투스 8x8 LED 매트릭스 스크롤링 텍스트 - 아두이노 프로젝트
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트