//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);
}
0 件のコメント:
コメントを投稿