Beruflich Dokumente
Kultur Dokumente
h"
//#include <Arduino.h>
#include "SoftwareSerial.h"
#include <Wire.h>
MeUSBHost usbhost(PORT_3);
void setup()
{
usbhost.init(USB1_0); //USB Remote Control Handle Initialization
Serial.begin(9600);
motor1.begin();
motor2.begin();
motor3.begin();
motor4.begin();
motor1.reset();
motor2.reset();
motor3.reset();
motor4.reset();
motor1.setMode(1); //0:I2C_MODE;1:PWM_MODE;2:PWM_I2C_PWM;
motor2.setMode(1);
motor3.setMode(1); //0:I2C_MODE;1:PWM_MODE;2:PWM_I2C_PWM;
motor4.setMode(1);
pinMode(PORT1_MOTOR1, OUTPUT);
pinMode(PORT1_MOTOR2, OUTPUT);
pinMode(PORT2_MOTOR1, OUTPUT);
pinMode(PORT2_MOTOR2, OUTPUT);
analogWrite(PORT1_MOTOR1, 127);
analogWrite(PORT1_MOTOR2, 127);
analogWrite(PORT2_MOTOR1, 127);
analogWrite(PORT2_MOTOR2, 127);
}
void loop()
{
control();
moveSpeed_FW=moveSpeed/2+125; //Speed conversion
moveSpeed_BW=125-moveSpeed/2;
}
if(temp2==128)
{
if(temp3==128)
{
stop_flag++;
if(stop_flag>2)
{
Stop_run(); //Release the keys/Stop motor
stop_flag=3;
}
}
if(temp3==0) Forward_run(); //Forward keys (1 keys)
if(temp3==255) Backward_rum(); //Backward keys (3 keys)
}
if(temp2==255)
{
if(temp3==0) RightUp_run(); //Forward and Right keys (1 and 2 keys)
if(temp3==128) Right_run(); //Right keys(2 keys)
if(temp3==255) RightDown_run(); //Backward and Right keys(2 and 3 keys)
}
if(temp2==0)
{
if(temp3==0) LeftUp_run(); //Forward and lift keys(1 and 4 keys)
if(temp3==128) Left_run(); //Life keys(4 keys)
if(temp3==255) LeftDown_run(); //Backward and Lift keys(3 and 4 keys)
}
void Forward_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_FW);
analogWrite(PORT1_MOTOR2, moveSpeed_BW);
analogWrite(PORT2_MOTOR1, moveSpeed_BW);
analogWrite(PORT2_MOTOR2, moveSpeed_FW);
}
void Backward_rum()
{
analogWrite(PORT1_MOTOR1, moveSpeed_BW);
analogWrite(PORT1_MOTOR2, moveSpeed_FW);
analogWrite(PORT2_MOTOR1, moveSpeed_FW);
analogWrite(PORT2_MOTOR2, moveSpeed_BW);
}
void Right_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_BW);
analogWrite(PORT1_MOTOR2, moveSpeed_BW);
analogWrite(PORT2_MOTOR1, moveSpeed_FW);
analogWrite(PORT2_MOTOR2, moveSpeed_FW);
}
void Left_run()
{
// analogWrite(PORT1_MOTOR1, moveSpeed_BW);
// analogWrite(PORT1_MOTOR2, moveSpeed_BW);
// analogWrite(PORT2_MOTOR1, moveSpeed_FW);
// analogWrite(PORT2_MOTOR2, moveSpeed_FW);
analogWrite(PORT1_MOTOR1, moveSpeed_FW);
analogWrite(PORT1_MOTOR2, moveSpeed_FW);
analogWrite(PORT2_MOTOR1, moveSpeed_BW);
analogWrite(PORT2_MOTOR2, moveSpeed_BW);
}
void RightDown_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_BW);
analogWrite(PORT1_MOTOR2, 127);
analogWrite(PORT2_MOTOR1, moveSpeed_FW);
analogWrite(PORT2_MOTOR2, 127);
}
void RightUp_run()
{
analogWrite(PORT1_MOTOR1, 127);
analogWrite(PORT1_MOTOR2, moveSpeed_BW);
analogWrite(PORT2_MOTOR1, 127);
analogWrite(PORT2_MOTOR2, moveSpeed_FW);
}
void LeftDown_run()
{
analogWrite(PORT1_MOTOR1, 127);
analogWrite(PORT1_MOTOR2, moveSpeed_FW);
analogWrite(PORT2_MOTOR1, 127);
analogWrite(PORT2_MOTOR2, moveSpeed_BW);
}
void LeftUp_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_FW);
analogWrite(PORT1_MOTOR2, 127);
analogWrite(PORT2_MOTOR1, moveSpeed_BW);
analogWrite(PORT2_MOTOR2, 127);
}
void TurnRight_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_BW);
analogWrite(PORT1_MOTOR2, moveSpeed_BW);
analogWrite(PORT2_MOTOR1, moveSpeed_BW);
analogWrite(PORT2_MOTOR2, moveSpeed_BW);
}
void TurnLeft_run()
{
analogWrite(PORT1_MOTOR1, moveSpeed_FW);
analogWrite(PORT1_MOTOR2, moveSpeed_FW);
analogWrite(PORT2_MOTOR1, moveSpeed_FW);
analogWrite(PORT2_MOTOR2, moveSpeed_FW);
}
void Speed_up()
{
moveSpeed=moveSpeed+3;
if(moveSpeed>250) moveSpeed=250;
}
void Speed_down()
{
moveSpeed=moveSpeed-3;
if(moveSpeed<0) moveSpeed=0;
}
void Stop_run()
{
analogWrite(PORT1_MOTOR1, 127);
analogWrite(PORT1_MOTOR2, 127);
analogWrite(PORT2_MOTOR1, 127);
analogWrite(PORT2_MOTOR2, 127);
}
void control()
{
if(!usbhost.device_online)
{
usbhost.probeDevice();//Device is not online ,initialization
delay(100);
}
else
{
int len = usbhost.host_recv();//Read data length
parseJoystick(usbhost.RECV_BUFFER);
delay(5);
}
}