//RobotCarMeimei6_4ServoMotors_FTMC_004
//Start 2020/02/16
//Up 2020/02/23
#include <Servo.h>
#include <IRremote.h>
int RSpeed ;
int LSpeed;
int RecvPin=2;
int RedPin1=3;
int BluePin1=5;
int GreenPin1=6;
int RedPin2=9;
int BluePin2=10;
int GreenPin2=11;
Servo RServo;
Servo LServo;
IRrecv irrecv(RecvPin);
decode_results results;
void Forward()
{
RServo.writeMicroseconds(2000);
LServo.writeMicroseconds(-2000);
}
void Back()
{
RServo.writeMicroseconds(-2000);
LServo.writeMicroseconds(2000);
}
void Stop()
{
RServo.write(90);
LServo.write(90);
//RServo.writeMicroseconds(0); //Does not work
//LServo.writeMicroseconds(0); //Does not work
}
void TurnRight()
{
LServo.writeMicroseconds(-2000);
RServo.write(90);
delay(100);
Stop();
}
void TurnLeft() //At value=1600 Does not work well
{
RServo.writeMicroseconds(2000);
LServo.write(90);
delay(100);
Stop();
}
void QuickTurnRight()
{
LServo.writeMicroseconds(-2000);
RServo.writeMicroseconds(-2000);
delay(100);
Stop();
}
void QuickTurnLeft()
{
LServo.writeMicroseconds(2000);
RServo.writeMicroseconds(2000);
delay(100);
Stop();
}
void NightLightOff()
{
analogWrite(RedPin1,255);
analogWrite(BluePin1,255);
analogWrite(GreenPin1,255);
analogWrite(RedPin2,255);
analogWrite(BluePin2,255);
analogWrite(GreenPin2,255);
}
void NightLightOn()
{
analogWrite(RedPin1,0);
analogWrite(BluePin1,0);
analogWrite(GreenPin1,0);
analogWrite(RedPin2,0);
analogWrite(BluePin2,0);
analogWrite(GreenPin2,0);
}
void LeftTurnLightOn()
{
for(int i=0;i<5;i++)
{
analogWrite(RedPin2,0);
analogWrite(BluePin2,255);
analogWrite(GreenPin2,255);
delay(500);
analogWrite(RedPin2,255);
analogWrite(BluePin2,255);
analogWrite(GreenPin2,255);
delay(500);
}
}
void RightTurnLightOn()
{
for(int i=0;i<5;i++)
{
analogWrite(RedPin1,0);
analogWrite(BluePin1,255);
analogWrite(GreenPin1,255);
delay(500);
analogWrite(RedPin1,255);
analogWrite(BluePin1,255);
analogWrite(GreenPin1,255);
delay(500);
}
}
void HazardLampOn()
{
for(int i=0;i<10;i++)
{
analogWrite(RedPin1,0);
analogWrite(BluePin1,255);
analogWrite(GreenPin1,255);
analogWrite(RedPin2,0);
analogWrite(BluePin2,255);
analogWrite(GreenPin2,255);
delay(200);
analogWrite(RedPin1,255);
analogWrite(BluePin1,255);
analogWrite(GreenPin1,255);
analogWrite(RedPin2,255);
analogWrite(BluePin2,255);
analogWrite(GreenPin2,255);
delay(200);
}
}
void setup()
{
RServo.attach(14,1000,2000); //Port(A0),Min,Max Do not Change Min,Max
LServo.attach(15,1000,2000); //Port(A1),Min,Max Do not Change Min,Max
irrecv.enableIRIn(); //IR
}
void loop()
{
if (irrecv.decode(&results))
{
irrecv.resume();
if (results.value == 0xFF629D)
{
Forward();
}
if (results.value == 0xFF02FD)
{
Stop();
}
if (results.value == 0xFFA857)
{
Back();
}
if (results.value == 0xFFE21D)
{
TurnRight();
}
if (results.value == 0xFFA25D)
{
TurnLeft();
}
if (results.value == 0xFFC23D)
{
QuickTurnRight();
}
if (results.value == 0xFF22DD)
{
QuickTurnLeft();
}
if (results.value == 0xFFB04F)
{
NightLightOn();
}
if (results.value == 0xFF9867)
{
NightLightOff();
}
if (results.value == 0xFF6897)
{
HazardLampOn();
}
if (results.value == 0xFF906F)
{
RightTurnLightOn();
}
if (results.value == 0xFFE01F)
{
LeftTurnLightOn();
}
}
}
0 件のコメント:
コメントを投稿