add car_control 2 speed
This commit is contained in:
parent
5f452181e1
commit
04c30525fc
|
|
@ -1,6 +1,6 @@
|
|||
# mbit
|
||||
|
||||
Extension for Yahboom mbit
|
||||
Extension for Yahboom zh_tr mbit
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
|
|
@ -29,5 +29,6 @@
|
|||
"mbit_Robot.Avoid_Sensor|block": "avoid obstacle sensor|detected %value",
|
||||
"mbit_Robot.Servo_Car|block": "robot servo|index %num|angle %value",
|
||||
"mbit_Robot.CarCtrl|block": "robot control|%index",
|
||||
"mbit_Robot.CarCtrlSpeed|block": "robot control|%index|speed %speed"
|
||||
"mbit_Robot.CarCtrlSpeed|block": "robot control|%index|speed %speed",
|
||||
"mbit_Robot.CarCtrlSpeed2|block": "robot control|%index|speed1 %speed1|speed2 %speed2"
|
||||
}
|
||||
|
|
|
|||
183
main.ts
183
main.ts
|
|
@ -603,20 +603,27 @@ namespace mbit_Robot {
|
|||
}
|
||||
|
||||
|
||||
function Car_run(speed: number) {
|
||||
function Car_run(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, speed);
|
||||
setPwm(12, 0, speed1);
|
||||
setPwm(13, 0, 0);
|
||||
|
||||
setPwm(15, 0, speed);
|
||||
setPwm(15, 0, speed2);
|
||||
setPwm(14, 0, 0);
|
||||
//pins.digitalWritePin(DigitalPin.P16, 1);
|
||||
// pins.analogWritePin(AnalogPin.P1, 1023-speed); //速度控制
|
||||
|
|
@ -625,21 +632,28 @@ namespace mbit_Robot {
|
|||
// pins.digitalWritePin(DigitalPin.P8, 0);
|
||||
}
|
||||
|
||||
function Car_back(speed: number) {
|
||||
function Car_back(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350 && speed != 0) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, 0);
|
||||
setPwm(13, 0, speed);
|
||||
setPwm(13, 0, speed1);
|
||||
|
||||
setPwm(15, 0, 0);
|
||||
setPwm(14, 0, speed);
|
||||
setPwm(14, 0, speed2);
|
||||
|
||||
//pins.digitalWritePin(DigitalPin.P16, 0);
|
||||
//pins.analogWritePin(AnalogPin.P1, speed); //速度控制
|
||||
|
|
@ -648,19 +662,27 @@ namespace mbit_Robot {
|
|||
//pins.digitalWritePin(DigitalPin.P8, 1);
|
||||
}
|
||||
|
||||
function Car_left(speed: number) {
|
||||
function Car_left(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350 && speed != 0) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
setPwm(12, 0, 0);
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, speed1);
|
||||
setPwm(13, 0, 0);
|
||||
|
||||
setPwm(15, 0, speed);
|
||||
setPwm(15, 0, speed2);
|
||||
setPwm(14, 0, 0);
|
||||
|
||||
//pins.analogWritePin(AnalogPin.P0, speed);
|
||||
|
|
@ -670,19 +692,27 @@ namespace mbit_Robot {
|
|||
//pins.digitalWritePin(DigitalPin.P1, 0);
|
||||
}
|
||||
|
||||
function Car_right(speed: number) {
|
||||
function Car_right(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350 && speed != 0) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
setPwm(12, 0, speed);
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, speed1);
|
||||
setPwm(13, 0, 0);
|
||||
|
||||
setPwm(15, 0, 0);
|
||||
setPwm(15, 0, speed2);
|
||||
setPwm(14, 0, 0);
|
||||
//pins.digitalWritePin(DigitalPin.P0, 0);
|
||||
//pins.digitalWritePin(DigitalPin.P8, 0);
|
||||
|
|
@ -704,19 +734,27 @@ namespace mbit_Robot {
|
|||
//pins.digitalWritePin(DigitalPin.P1, 0);
|
||||
}
|
||||
|
||||
function Car_spinleft(speed: number) {
|
||||
function Car_spinleft(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350 && speed != 0) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, 0);
|
||||
setPwm(13, 0, speed);
|
||||
setPwm(13, 0, speed1);
|
||||
|
||||
setPwm(15, 0, speed);
|
||||
setPwm(15, 0, speed2);
|
||||
setPwm(14, 0, 0);
|
||||
|
||||
//pins.analogWritePin(AnalogPin.P0, speed);
|
||||
|
|
@ -726,20 +764,28 @@ namespace mbit_Robot {
|
|||
//pins.analogWritePin(AnalogPin.P1, speed);
|
||||
}
|
||||
|
||||
function Car_spinright(speed: number) {
|
||||
function Car_spinright(speed1: number, speed2: number) {
|
||||
|
||||
speed = speed * 16; // map 350 to 4096
|
||||
if (speed >= 4096) {
|
||||
speed = 4095
|
||||
speed1 = speed1 * 16; // map 350 to 4096
|
||||
speed2 = speed2 * 16;
|
||||
if (speed1 >= 4096) {
|
||||
speed1 = 4095
|
||||
}
|
||||
if (speed <= 350 && speed != 0) {
|
||||
speed = 350
|
||||
if (speed1 <= 350) {
|
||||
speed1 = 350
|
||||
}
|
||||
setPwm(12, 0, speed);
|
||||
if (speed2 >= 4096) {
|
||||
speed2 = 4095
|
||||
}
|
||||
if (speed2 <= 350) {
|
||||
speed2 = 350
|
||||
}
|
||||
|
||||
setPwm(12, 0, speed1);
|
||||
setPwm(13, 0, 0);
|
||||
|
||||
setPwm(15, 0, 0);
|
||||
setPwm(14, 0, speed);
|
||||
setPwm(14, 0, speed2);
|
||||
//pins.analogWritePin(AnalogPin.P0, 1023-speed);
|
||||
//pins.digitalWritePin(DigitalPin.P8, 1);
|
||||
|
||||
|
|
@ -1005,13 +1051,13 @@ namespace mbit_Robot {
|
|||
//% name.fieldEditor="gridpicker" name.fieldOptions.columns=10
|
||||
export function CarCtrl(index: CarState): void {
|
||||
switch (index) {
|
||||
case CarState.Car_Run: Car_run(255); break;
|
||||
case CarState.Car_Back: Car_back(255); break;
|
||||
case CarState.Car_Left: Car_left(255); break;
|
||||
case CarState.Car_Right: Car_right(255); break;
|
||||
case CarState.Car_Run: Car_run(255, 255); break;
|
||||
case CarState.Car_Back: Car_back(255, 255); break;
|
||||
case CarState.Car_Left: Car_left(255, 255); break;
|
||||
case CarState.Car_Right: Car_right(255, 255); break;
|
||||
case CarState.Car_Stop: Car_stop(); break;
|
||||
case CarState.Car_SpinLeft: Car_spinleft(255); break;
|
||||
case CarState.Car_SpinRight: Car_spinright(255); break;
|
||||
case CarState.Car_SpinLeft: Car_spinleft(255, 255); break;
|
||||
case CarState.Car_SpinRight: Car_spinright(255, 255); break;
|
||||
}
|
||||
}
|
||||
//% blockId=mbit_CarCtrlSpeed block="CarCtrlSpeed|%index|speed %speed"
|
||||
|
|
@ -1022,13 +1068,30 @@ namespace mbit_Robot {
|
|||
//% name.fieldEditor="gridpicker" name.fieldOptions.columns=10
|
||||
export function CarCtrlSpeed(index: CarState, speed: number): void {
|
||||
switch (index) {
|
||||
case CarState.Car_Run: Car_run(speed); break;
|
||||
case CarState.Car_Back: Car_back(speed); break;
|
||||
case CarState.Car_Left: Car_left(speed); break;
|
||||
case CarState.Car_Right: Car_right(speed); break;
|
||||
case CarState.Car_Run: Car_run(speed, speed); break;
|
||||
case CarState.Car_Back: Car_back(speed, speed); break;
|
||||
case CarState.Car_Left: Car_left(speed, speed); break;
|
||||
case CarState.Car_Right: Car_right(speed, speed); break;
|
||||
case CarState.Car_Stop: Car_stop(); break;
|
||||
case CarState.Car_SpinLeft: Car_spinleft(speed); break;
|
||||
case CarState.Car_SpinRight: Car_spinright(speed); break;
|
||||
case CarState.Car_SpinLeft: Car_spinleft(speed, speed); break;
|
||||
case CarState.Car_SpinRight: Car_spinright(speed, speed); break;
|
||||
}
|
||||
}
|
||||
//% blockId=mbit_CarCtrlSpeed2 block="CarCtrlSpeed2|%index|speed1 %speed1|speed2 %speed2"
|
||||
//% weight=91
|
||||
//% blockGap=10
|
||||
//% speed1.min=0 speed1.max=255 speed2.min=0 speed2.max=255
|
||||
//% color="#006400"
|
||||
//% name.fieldEditor="gridpicker" name.fieldOptions.columns=10
|
||||
export function CarCtrlSpeed2(index: CarState, speed1: number, speed2: number): void {
|
||||
switch (index) {
|
||||
case CarState.Car_Run: Car_run(speed1, speed2); break;
|
||||
case CarState.Car_Back: Car_back(speed1, speed2); break;
|
||||
case CarState.Car_Left: Car_left(speed1, speed2); break;
|
||||
case CarState.Car_Right: Car_right(speed1, speed2); break;
|
||||
case CarState.Car_Stop: Car_stop(); break;
|
||||
case CarState.Car_SpinLeft: Car_spinleft(speed1, speed2); break;
|
||||
case CarState.Car_SpinRight: Car_spinright(speed1, speed2); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue