麦克纳姆轮全向移动原理【已整理】
麦轮测试程序 Arduino UNO+L298N
int L1_IN1 = 7;int L1_IN2 = 5;int L1_ENA = 6;
int R1_IN1 = 4;int R1_IN2 = 2;int R1_ENA = 3;
int L2_IN1 = 12;int L2_IN2 = 13;int L2_ENA = 11;
int R2_IN1 = 8;int R2_IN2 = 9;int R2_ENA = 10;
void setup() {
pinMode(L1_IN1, OUTPUT);pinMode(L1_IN2, OUTPUT);pinMode(L1_ENA, OUTPUT);
pinMode(R1_IN1, OUTPUT);pinMode(R1_IN2, OUTPUT);pinMode(R1_ENA, OUTPUT);
pinMode(L2_IN1, OUTPUT);pinMode(L2_IN2, OUTPUT);pinMode(L2_ENA, OUTPUT);
pinMode(R2_IN1, OUTPUT);pinMode(R2_IN2, OUTPUT);pinMode(R2_ENA, OUTPUT);
}
void L1_forward(int sp)
{
digitalWrite(L1_IN1,LOW);
digitalWrite(L1_IN2,HIGH);
analogWrite(L1_ENA,sp);
}
void R1_forward(int sp)
{
digitalWrite(R1_IN1,HIGH);
digitalWrite(R1_IN2,LOW);
analogWrite(R1_ENA,sp);
}
void L2_forward(int sp)
{
digitalWrite(L2_IN1,HIGH);
digitalWrite(L2_IN2,LOW);
analogWrite(L2_ENA,sp);
}
void R2_forward(int sp)
{
digitalWrite(R2_IN1,HIGH);
digitalWrite(R2_IN2,LOW);
analogWrite(R2_ENA,sp);
}
void allstop()
{
digitalWrite(L1_IN1,LOW);
digitalWrite(L1_IN2,LOW);
digitalWrite(R1_IN1,LOW);
digitalWrite(R1_IN2,LOW);
digitalWrite(L2_IN1,LOW);
digitalWrite(L2_IN2,LOW);
digitalWrite(R2_IN1,LOW);
digitalWrite(R2_IN2,LOW);
}
void L1_backward(int sp)
{
digitalWrite(L1_IN1,HIGH);
digitalWrite(L1_IN2,LOW);
analogWrite(L1_ENA,sp);
}
void R1_backward(int sp)
{
digitalWrite(R1_IN1,LOW);
digitalWrite(R1_IN2,HIGH);
analogWrite(R1_ENA,sp);
}
void L2_backward(int sp)
{
digitalWrite(L2_IN1,LOW);
digitalWrite(L2_IN2,HIGH);
analogWrite(L2_ENA,sp);
}
void R2_backward(int sp)
{
digitalWrite(R2_IN1,LOW);
digitalWrite(R2_IN2,HIGH);
analogWrite(R2_ENA,sp);
}
void loop() {
L1_forward(100);
R1_forward(100);
L2_forward(100);
R2_forward(100);
delay(1500);
allstop();
delay(1500);
L1_backward(100);
R1_backward(100);
L2_backward(100);
R2_backward(100);
delay(1500);
allstop();
delay(1500);
L1_forward(200);
R1_backward(200);
L2_forward(200);
R2_backward(200);
delay(1500);
allstop();
delay(1500);
L1_backward(200);
R1_forward(200);
L2_backward(200);
R2_forward(200);
delay(1500);
allstop();
delay(1500);
L1_backward(150);
R1_forward(150);
L2_forward(150);
R2_backward(150);
delay(1500);
allstop();
delay(1500);
L1_forward(150);
R1_backward(150);
L2_backward(150);
R2_forward(150);
delay(1500);
allstop();
delay(1500);
R1_forward(150);
L2_forward(150);
delay(1500);
allstop();
delay(1500);
L1_forward(150);
R2_forward(150);
delay(1500);
allstop();
delay(1500);
L1_backward(150);
R2_backward(150);
delay(1500);
allstop();
delay(1500);
R1_backward(150);
L2_backward(150);
delay(1500);
allstop();
delay(1500);
}
带红外控制程序 Arduino UNO+L298N+红外
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int L1_IN1 = 44; int L1_IN2 = 42; int L1_ENA = 7;
int R1_IN1 = 40; int R1_IN2 = 38; int R1_ENA = 6;
int L2_IN1 = 52; int L2_IN2 = 50; int L2_ENA = 5;
int R2_IN1 = 48; int R2_IN2 = 46; int R2_ENA = 4;
void setup()
{
pinMode(L1_IN1, OUTPUT);pinMode(L1_IN2, OUTPUT);pinMode(L1_ENA, OUTPUT);
pinMode(R1_IN1, OUTPUT);pinMode(R1_IN2, OUTPUT);pinMode(R1_ENA, OUTPUT);
pinMode(L2_IN1, OUTPUT);pinMode(L2_IN2, OUTPUT);pinMode(L2_ENA, OUTPUT);
pinMode(R2_IN1, OUTPUT);pinMode(R2_IN2, OUTPUT);pinMode(R2_ENA, OUTPUT);
Serial.begin(9600);
Serial.println(“Enabling IRin”);
irrecv.enableIRIn();
Serial.println(“Enabled IRin”);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.print(“HEX格式 》》 “);
Serial.println(results.value,HEX);
Serial.print(“默认格式 》》 “);
Serial.println(results.value);
if (results.value == 0xFF30CF)
{
L1_forward(100);
R1_forward(100);
L2_forward(100);
R2_forward(100);
}
else if (results.value == 0xFF18E7)
{
L1_backward(100);
R1_backward(100);
L2_backward(100);
R2_backward(100);
}
else if (results.value == 0xFF7A85)
{
L1_forward(150);R1_backward(150);
L2_forward(150);R2_backward(150);
}
else if (results.value == 0xFF10EF)
{
L1_backward(150);R1_forward(150);
L2_backward(150);R2_forward(150);
}
else if (results.value == 0xFF38C7)
{
L1_backward(150);R1_forward(150);
L2_forward(150); R2_backward(150);
}
else if (results.value == 0xFF5AA5)
{
L1_forward(150); R1_backward(150);
L2_backward(150);R2_forward(150);
}
else if (results.value == 0xFF4AB5)
{
L1_forward(100); R1_forward(100);
L2_forward(100); R2_forward(100);
delay(500);
allstop();
delay(500);
L1_backward(150);R1_forward(150);
L2_backward(150);R2_forward(150);
delay(800);
allstop();
delay(500);
L1_forward(100); R1_forward(100);
L2_forward(100); R2_forward(100);
delay(500);
allstop();
delay(500);
L1_forward(150); R1_backward(150);
L2_forward(150); R2_backward(150);
delay(800);
allstop();
delay(500);
L1_backward(100);R1_backward(100);
L2_backward(100);R2_backward(100);
delay(500);
allstop();
delay(500);
L1_backward(150);R1_forward(150);
L2_backward(150);R2_forward(150);
delay(800);
allstop();
delay(500);
L1_backward(100);R1_backward(100);
L2_backward(100);R2_backward(100);
delay(500);
allstop();
delay(500);
L1_forward(150); R1_backward(150);
L2_forward(150); R2_backward(150);
delay(800);
allstop();
delay(500);
}
else if (results.value == 0xFF6897)
{
allstop();Serial.println(“allstop”);
}
irrecv.resume();
Serial.println(“———-“);
}
delay(100);
}
void L1_forward(int sp)
{
digitalWrite(L1_IN1,LOW);
digitalWrite(L1_IN2,HIGH);
analogWrite(L1_ENA,sp);
}
void R1_forward(int sp)
{
digitalWrite(R1_IN1,HIGH);
digitalWrite(R1_IN2,LOW);
analogWrite(R1_ENA,sp);
}
void L2_forward(int sp)
{
digitalWrite(L2_IN1,HIGH);
digitalWrite(L2_IN2,LOW);
analogWrite(L2_ENA,sp);
}
void R2_forward(int sp)
{
digitalWrite(R2_IN1,HIGH);
digitalWrite(R2_IN2,LOW);
analogWrite(R2_ENA,sp);
}
void allstop()
{
digitalWrite(L1_IN1,LOW);
digitalWrite(L1_IN2,LOW);
digitalWrite(R1_IN1,LOW);
digitalWrite(R1_IN2,LOW);
digitalWrite(L2_IN1,LOW);
digitalWrite(L2_IN2,LOW);
digitalWrite(R2_IN1,LOW);
digitalWrite(R2_IN2,LOW);
}
void L1_backward(int sp)
{
digitalWrite(L1_IN1,HIGH);
digitalWrite(L1_IN2,LOW);
analogWrite(L1_ENA,sp);
}
void R1_backward(int sp)
{
digitalWrite(R1_IN1,LOW);
digitalWrite(R1_IN2,HIGH);
analogWrite(R1_ENA,sp);
}
void L2_backward(int sp)
{
digitalWrite(L2_IN1,LOW);
digitalWrite(L2_IN2,HIGH);
analogWrite(L2_ENA,sp);
}
void R2_backward(int sp)
{
digitalWrite(R2_IN1,LOW);
digitalWrite(R2_IN2,HIGH);
analogWrite(R2_ENA,sp);
}
评论(0)
您还未登录,请登录后发表或查看评论