제조공정
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
|
|
이야기
안녕하세요 여러분! 이것은 나의 다음 프로젝트입니다 - 조이스틱 컨트롤러가 있는 Arduino 4WD RC 자동차 또는 아날로그 조이스틱으로 Arduino 4WD 스마트 자동차를 제어하는 것이 얼마나 쉬운가요?
이 RC 조이스틱 제어 자동차는 NRF24l01을 송신기 및 수신기로 사용합니다. 열린 공간에서 최대 1km의 범위가 있습니다. 또한 매우 간단하고 만들기 쉽습니다.
1. 조이스틱 컨트롤러
조이스틱 구성 요소:
조이스틱 실드는 Arduino 위에 앉아 간단한 컨트롤러로 바꿉니다. 7개의 순간 푸시 버튼(4개의 큰 버튼, 2개의 작은 버튼 및 조이스틱 선택 버튼)과 2축 엄지 조이스틱은 Arduino 기능을 구형 Nintendo 컨트롤러 수준으로 제공합니다. 이 장치는 Nokia 5110 LCD 및 nRF24L01 인터페이스도 제공합니다.
기능: <울>
실제로는 BTE16-49 - nRF24L01+RFX2401C +PA+LNA 무선 통신 모듈(안테나 차폐 케이스 2.4GHz 20dbm 1000m 포함)이라고 표시되어 있습니다.
판매자가 지정한 특성:
<울>
2. 조이스틱 컨트롤러 그림>
Joystick Shield에는 4개의 큰 버튼 + 2개의 작은 버튼 + 조이스틱 선택 버튼과 2축 엄지 조이스틱(0에서 1023까지의 X축, 0에서 1023까지의 Y축)이 있습니다. 이 실드는 Arduino 상단에 위치하여 이를 간단한 컨트롤러. 내 스케치에서 버튼 업은 부저(혼), 버튼 오른쪽 - 전면 조명(LED + 저항 200옴), 버튼 왼쪽 - 후면 조명(LED + 저항 200옴)용입니다. 다른 버튼은 사용하지 않습니다.
조이스틱 테스트:
그림> 그림>유휴 상태:X=499, Y=502, 위쪽=1, 오른쪽=1, 아래쪽=1, 왼쪽=1
그림> 그림> 그림> 그림> 그림> 그림>
3. Arduino 4WD RC 자동차
그림> 그림> 그림> 그림> 그림> 그림> 그림> 그림>
위의 결선도 이미지와 같이 결선하십시오.
참고:코드를 업로드하기 전에 Arduino Uno 보드(핀 0, 1)에서 점퍼 와이어를 분리해야 합니다.
모든 단계를 제대로 마치면 Car is ready to go!
Arduino 자동차와 조이스틱 컨트롤러에 전원을 공급한 후 조이스틱을 사용하여 조이스틱을 앞뒤로 움직여 자동차를 제어할 수 있습니다.
계속 지켜봐 주세요!
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/* JoyStick 모듈 수신기 코드용 코드 - 연결:nRF24L01 모듈 참조:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE - Arduino 핀 6 4 - CSN - Arduino 핀 8 5 - SCK - Arduino 핀 13 6 - MOSI - Arduino 핀 11 7 - MISO - Arduino 핀 12 8 - 미사용 *///-----( 필요한 라이브러리 가져오기 )-----#include#include #include /*-----( 상수 및 핀 번호 선언 )-----* /#define CE_PIN 6#define CSN_PIN 8// 참고:상수 끝에 있는 "LL"은 "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL입니다. // 송신 파이프 정의#define light_Front 18 //Arduino Uno용 LED 전면 우측 핀 A4#define light_Back 19 //Arduino Uno용 LED 후면 우측 핀 A5#define horn_Buzz 7 #define ENA_m1 3 // 모터 활성화/속도 전면 우측 #define ENB_m1 5 // 모터 활성화/속도 Back Right#define ENA_m2 9 // 모터 활성화/속도 Front Left#define ENB_m2 10 // 모터 활성화/속도 Back Left#define IN_11 0 // L298N #1 in 1 모터 Front Right #define IN_12 1 // L298N #1 in 2 모터 Front Right#define IN_13 2 // L298N #1 in 3 모터 Back Right#define IN_14 4 // L298N #1 in 4 모터 Back Right#define IN_21 14 // L298N # 2 in 1 모터 Front Left#define IN_22 15 // L298N #2 in 2 모터 Front Left#define IN_23 16 // L298N #2 in 3 모터 Back Left#define IN_24 17 // L298N #2 in 4 모터 Back Left/* -----( 객체 선언 )-----*/RF24 radio(CE_PIN, CSN_PIN); // 라디오 생성/*-----( 변수 선언 )-----*/int 조이스틱[6]; // 조이스틱 판독값을 포함하는 6개 요소 배열int speedRight =0;int speedLeft =0;int xAxis, yAxis;// 조이스틱의 4개 버튼 변수 int buttonUp;int buttonRight;int buttonDown;int buttonLeft;void setup(){ pinMode(light_Front, 산출); 핀모드(light_Back, OUTPUT); pinMode(horn_Buzz, OUTPUT); 핀모드(ENA_m1, 출력); 핀모드(ENB_m1, 출력); 핀모드(ENA_m2, 출력); 핀모드(ENB_m2, 출력); 핀모드(IN_11, 출력); 핀모드(IN_12, 출력); 핀모드(IN_13, 출력); 핀모드(IN_14, 출력); 핀모드(IN_21, 출력); 핀모드(IN_22, 출력); 핀모드(IN_23, 출력); pinMode(IN_24, OUTPUT);/* Serial.begin(9600); Serial.println("Nrf24L01 수신기 시작 중"); */ radio.begin(); radio.openReadingPipe(1,파이프); radio.startListening();}void 루프(){ if ( radio.available() ) { radio.read( 조이스틱, sizeof(조이스틱) ); x축 =조이스틱[0]; y축 =조이스틱[1]; // 조이스틱 배열의 4개 버튼 변수 int buttonUp =조이스틱[2]; int buttonRight =조이스틱[3]; int buttonDown =조이스틱[4]; int buttonLeft =조이스틱[5]; //Serial.println(); // 디버깅용 // 데이터 페이로드 가져오기 - 아래 디버깅 코드 if (buttonUp ==HIGH){digitalWrite(horn_Buzz, LOW);} else {digitalWrite(horn_Buzz, HIGH);} if (buttonRight ==HIGH){digitalWrite( light_Front, LOW);} else {digitalWrite(light_Front, HIGH);} if (buttonLeft ==HIGH){digitalWrite(light_Back, LOW);} else {digitalWrite(light_Back, HIGH);}// 앞으로 사용되는 Y축 및 역방향 제어 if (yAxis <470) { // 오른쪽 모터를 역방향으로 설정 digitalWrite(IN_11, LOW); 디지털 쓰기(IN_12, 높음); 디지털 쓰기(IN_13, 높음); 디지털 쓰기(IN_14, 낮음); // 왼쪽 모터를 뒤로 설정 digitalWrite(IN_21, HIGH); 디지털 쓰기(IN_22, LOW); 디지털 쓰기(IN_23, LOW); 디지털 쓰기(IN_24, 높음); // 감소하는 Y축 판독값을 470에서 0으로 뒤로 이동하여 모터 속도를 증가시키기 위한 PWM 신호 값으로 0에서 255로 변환 speedRight =map(yAxis, 470, 0, 0, 255); speedLeft =지도(y축, 470, 0, 0, 255); }else if (yAxis> 550) { // 오른쪽 모터를 앞으로 설정 digitalWrite(IN_11, HIGH); 디지털 쓰기(IN_12, LOW); digitalWrite(IN_13, LOW); 디지털 쓰기(IN_14, 높음); // 왼쪽 모터를 앞으로 설정 digitalWrite(IN_21, LOW); 디지털 쓰기(IN_22, 높음); 디지털 쓰기(IN_23, 높음); 디지털 쓰기(IN_24, LOW); // 550에서 1023으로 증가하는 Y축 판독값을 모터 속도를 증가시키기 위한 PWM 신호 값으로 0에서 255로 변환 speedRight =map(yAxis, 550, 1023, 0, 255); speedLeft =지도(y축, 550, 1023, 0, 255); } // 조이스틱이 중간에 있으면 모터가 움직이지 않습니다. else { speedRight =0; 왼쪽 속도 =0; }// 왼쪽 및 오른쪽 제어에 사용되는 X축 if (xAxis <470) { // 감소하는 X축 판독값을 470에서 0으로 증가하는 값으로 변환합니다. int xMapped =map(xAxis, 470, 0, 0 , 255); // 왼쪽으로 이동 - 왼쪽 모터 속도 감소, 오른쪽 모터 속도 증가 speedLeft =speedLeft - xMapped; speedRight =speedRight + xMapped; // 범위를 0에서 255로 제한 if (speedLeft <0) { speedLeft =0; } if (speedRight> 255) { speedRight =255; } } if (xAxis> 550) { // 550에서 1023까지 증가하는 X축 판독값을 0에서 255 값으로 변환 int xMapped =map(xAxis, 550, 1023, 0, 255); // 오른쪽으로 이동 - 오른쪽 모터 속도 감소, 왼쪽 모터 속도 증가 speedLeft =speedLeft + xMapped; speedRight =speedRight - xMapped; // 범위를 0에서 255로 제한 if (speedLeft> 255) { speedLeft =255; } if (speedRight <0) { speedRight =0; } } // 저속에서 윙윙거리는 소리 방지(모터에 따라 조정합니다. PWM 값이 70 미만이면 모터가 움직이지 않습니다.) if (speedLeft <70) { speedLeft =0; } if (speedRight <70) { speedRight =0; } analogWrite(ENA_m1, speedRight); // 모터 A에 PWM 신호 보내기 analogWrite(ENB_m1, speedRight); analogWrite(ENA_m2, speedLeft); // 모터 B에 PWM 신호 보내기 analogWrite(ENB_m2, speedLeft); /* Serial.print("X ="); Serial.print(x축); Serial.print(" Y ="); Serial.print(y축); Serial.print(" 위로 ="); Serial.print(조이스틱[2]); Serial.print(" 오른쪽 ="); Serial.print(조이스틱[3]); Serial.print(" 아래로 ="); Serial.print(조이스틱[4]); Serial.print(" 왼쪽 ="); Serial.println(조이스틱[5]); */ } }
/* JoyStick 모듈 트랜시버 코드 - 연결:nRF24L01 모듈 참조:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE - Arduino 핀 9 4 - CSN - Arduino 핀 10 5 - SCK - Arduino 핀 13 6 - MOSI - Arduino 핀 11 7 - MISO - Arduino 핀 12 8 - 미사용 기본 버튼 핀:위쪽 - 오른쪽 핀 2 - 핀 3 아래 - 핀 4 왼쪽 - 핀 5 - 아날로그 조이스틱 모듈 GND to Arduino GND VCC to Arduino +5V X Pot to Arduino A0 Y Pot to Arduino A1/*-----(필요한 라이브러리 가져오기)----- */#include섹션>#include "nRF24L01.h#include "RF24.h#define CE_PIN 9#define CSN_PIN 10#define xAxis 14 // Arduino UNO용 A0#define yAxis 15 // Arduino용 A1 UNO// 참고:상수 끝에 있는 "LL"은 "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL입니다. // 전송 파이프 정의/*-----( Declare objects )-----*/RF24 radio(CE_PIN, CSN_PIN); // 라디오 생성/*-----( 변수 선언 )-----*/int 조이스틱[6]; // 조이스틱 읽기 및 4개의 버튼을 포함하는 6개의 요소 배열int buttonUp =2;int buttonRight =3;int buttonDown =4;int buttonLeft =5;void setup() { Serial.begin(9600); radio.begin(); radio.openWritingPipe(파이프); radio.stopListening(); //모든 버튼과 초기 상태에 대한 pinMode 선언 pinMode(buttonUp,INPUT_PULLUP); 핀모드(버튼오른쪽,INPUT_PULLUP); 핀모드(버튼다운,INPUT_PULLUP); 핀모드(버튼왼쪽,INPUT_PULLUP); digitalWrite(버튼업,낮음); 디지털 쓰기(버튼오른쪽,낮음); 디지털 쓰기(버튼다운, LOW); digitalWrite(buttonLeft,LOW);}void 루프() { 조이스틱[0] =analogRead(xAxis); 조이스틱[1] =analogRead(y축); 조이스틱[2] =디지털 읽기(버튼업); 조이스틱[3] =디지털읽기(버튼오른쪽); 조이스틱[4] =디지털 읽기(버튼다운); 조이스틱[5] =디지털 읽기(버튼 왼쪽); radio.write( 조이스틱, sizeof(조이스틱) ); 지연(20); Serial.print("X ="); Serial.print(analogRead(x축)); Serial.print(" Y ="); Serial.print(analogRead(y축)); Serial.print(" 위로 ="); Serial.print(digitalRead(buttonUp)); Serial.print(" 오른쪽 ="); Serial.print(digitalRead(buttonRight)); Serial.print(" 아래로 ="); Serial.print(디지털읽기(버튼다운)); Serial.print(" 왼쪽 ="); Serial.println(digitalRead(buttonLeft));}
제조공정
구성품 및 소모품 LED(일반) × 10 Arduino UNO × 1 저항 221옴 × 10 점퍼 와이어(일반) × 13 회전 전위차계(일반) × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 Arduino Uno와 전위계에 연결된 10개의 LED가 있습니다. 전위차계를 돌리면 LED가 하나씩 켜집니다. 코드 그래프 그래프C/C++ const int a
구성품 및 소모품 Arduino Nano R3 × 1 회전 전위차계(일반) × 7 SparkFun 푸시버튼 스위치 12mm × 7 MIDI 포트 × 1 저항 221옴 × 4 LED(일반) × 2 이 프로젝트 정보 2019년 3월 11일 업데이트 안녕하세요, 저는 아르페지에이터를 위한 새 펌웨어를 만들었습니다. 소스 코드가 완전히 다시 작성되었습니다. 이제 모듈식 구조를 통해 Arduino뿐만