2020年4月12日日曜日

Arduino Challenge08










 //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 件のコメント:

コメントを投稿