2021年1月10日日曜日

Arduino Challenge SeriaTank1IRArduino


















 //SeriaTank1IRArduino
//by Kim Grossa

#include <CytronMotorDriver.h>
#include <IRremote.h>
#include <Servo.h>

CytronMD motor1(PWM_PWM, 3, 9);   // PWM 1A = Pin 3, PWM 1B = Pin 9.
CytronMD motor2(PWM_PWM, 10, 11); // PWM 2A = Pin 10, PWM 2B = Pin 11.

int RecvPin=8;
IRrecv irrecv(RecvPin);
decode_results results;

int ServoSpeed=1500;
Servo RightServo;

int Firepin=14;
int Rlightpin=15;
int Llightpin=16;

void setup() 
{
  motor1.setSpeed(0);  
  motor2.setSpeed(0);
  irrecv.enableIRIn();

  RightServo.attach(7,1000,2000);

  pinMode(Firepin, OUTPUT);
  pinMode(Rlightpin, OUTPUT);
  pinMode(Llightpin, OUTPUT);
}

void loop() 
{
  if(irrecv.decode(&results))
  {
    irrecv.resume();
    
    if(results.value==0xFF18E7)
    {     
      gofull();
    }
    
    if(results.value==0xFF38C7)
    {
      tankstop();
    }

    if(results.value==0xFF4AB5)
    {
      backfull();
    }
    
    if(results.value==0xFF10EF)
    {
      leftturn();
    }
    
    if(results.value==0xFF5AA5)
    {
      rightturn();
    }

    if(results.value==0xFF6897)
    {
      cwrotate();
    }

    if(results.value==0xFFB04F)
    {
      cwwrotate();
    }

    if(results.value==0xFF9867)
    {
      servostop();
    }

    if(results.value==0xFFE01F)
    {
      Llighton();
    }

     if(results.value==0xFFA857)
    {
      fireled();
    }

    if(results.value==0xFF906F)
    {
      Rlighton();
    }

    if(results.value==0xFF22DD)
    {
      Llightoff();
    }

    if(results.value==0xFFC23D)
    {
      Rlightoff();
    }

    //(results.value==0xFF02FD) 5 key
    //(results.value==0xFFA25D) 1 key
    //(results.value==0xFF629D) 2 key
    //(results.value==0xFFE21D) 3 key
        
  }
}

//sub routine
   void gofull()
  {
    motor1.setSpeed(255);  
    motor2.setSpeed(255);     
  }

   void tankstop()
  {
    motor1.setSpeed(0);  
    motor2.setSpeed(0);  
  }

   void backfull()
  {
    motor1.setSpeed(-255);  
    motor2.setSpeed(-255);    
  }

   void leftturn()
  {
    motor1.setSpeed(255);  
    motor2.setSpeed(0); 
  }

   void rightturn()
  {
    motor1.setSpeed(0);  
    motor2.setSpeed(255);
  }

  void cwwrotate()
  {
    RightServo.writeMicroseconds(1400);
  }

   void cwrotate()
  {
    RightServo.writeMicroseconds(1600);
  }

     void servostop()
  {
    RightServo.writeMicroseconds(1500);
  }

  void Llighton()
  {
    digitalWrite(Llightpin, HIGH); 
  }

  void Llightoff()
  {
    digitalWrite(Llightpin, LOW); 
  }

  void Rlighton()
  {
    digitalWrite(Rlightpin, HIGH); 
  }

   void Rlightoff()
  {
    digitalWrite(Rlightpin, LOW); 
  }

   void fireled()
  {
      digitalWrite(Firepin, HIGH); 
      delay(3 000);
      digitalWrite(Firepin, LOW);
  }