Skip to content

Commit 869b9aa

Browse files
committed
adding custom blocks for microservo (work in progress)
1 parent 6016f19 commit 869b9aa

File tree

5 files changed

+74
-9
lines changed

5 files changed

+74
-9
lines changed

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "75", "move_fw_elapse": "1.5", "show_page_program": "true", "load_at_start": "", "move_tr_elapse": "90", "sound_start": "$startup.mp3", "sound_stop": "$shutdown.mp3", "camera_exposure_mode": "auto", "prog_move_motion": "no", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "ctrl_fw_speed": "100", "move_fw_speed": "100", "show_page_control": "true", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "prog_maxblocks": "-1", "ctrl_hud_image": "", "button_func": "none", "move_motor_mode": "servo", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "20", "move_power_angle_3": "20", "ctrl_tr_speed": "80", "move_power_angle_1": "15"}
1+
{"move_tr_speed": "75", "move_fw_elapse": "1.5", "show_page_program": "true", "load_at_start": "", "move_tr_elapse": "90", "sound_start": "$startup.mp3", "sound_stop": "$shutdown.mp3", "camera_exposure_mode": "auto", "prog_move_motion": "no", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "ctrl_fw_speed": "100", "move_fw_speed": "100", "show_page_control": "true", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "prog_maxblocks": "-1", "ctrl_hud_image": "", "button_func": "none", "move_motor_mode": "servo", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "20", "move_power_angle_3": "20", "ctrl_tr_speed": "80", "move_power_angle_1": "15","arm_angle_raised": "60","arm_angle_lowered": "120"}

coderbot.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
PIN_MOTOR_ENABLE = 22
66
PIN_LEFT_FORWARD = 25
7-
PIN_LEFT_BACKWARD = 24
7+
PIN_LEFT_BACKWARD = 24 # NOT USED FOR SERVOS
88
PIN_RIGHT_FORWARD = 4
9-
PIN_RIGHT_BACKWARD = 17
9+
PIN_RIGHT_BACKWARD = 17 # NOT USED FOR SERVOS
1010
PIN_PUSHBUTTON = 18
1111
PIN_SERVO_3 = 9
1212
PIN_SERVO_4 = 10
1313

14-
PWM_FREQUENCY = 100 #Hz
14+
PWM_FREQUENCY = 50 #Hz
1515
PWM_RANGE = 100 #0-100
1616

1717
def coderbot_callback(gpio, level, tick):
@@ -114,15 +114,15 @@ def _servo_motor_control(self, pin, speed):
114114
self._is_moving = True
115115
speed = ((speed + 100) * 50 / 200) + 52
116116

117-
self.pi.set_PWM_range(pin, 1000)
118-
self.pi.set_PWM_frequency(pin, 50)
117+
self.pi.set_PWM_range(pin, PWM_RANGE)
118+
self.pi.set_PWM_frequency(pin, PWM_FREQUENCY)
119119
self.pi.set_PWM_dutycycle(pin, speed)
120120

121121
def _servo_control(self, pin, angle):
122122
duty = ((angle + 90) * 100 / 180) + 25
123123

124-
self.pi.set_PWM_range(pin, 1000)
125-
self.pi.set_PWM_frequency(pin, 50)
124+
self.pi.set_PWM_range(pin, PWM_RANGE)
125+
self.pi.set_PWM_frequency(pin, PWM_FREQUENCY)
126126
self.pi.set_PWM_dutycycle(pin, duty)
127127

128128
def stop(self):

static/js/blockly/blocks.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,3 +760,63 @@ Blockly.Python['coderbot_adv_findLogo'] = function(block) {
760760
var code = 'get_cam().find_logo()';
761761
return [code, Blockly.Python.ORDER_ATOMIC];
762762
};
763+
764+
Blockly.Blocks['coderbot_armRaise'] = {
765+
/**
766+
* Block for armRaise function.
767+
* @this Blockly.Block
768+
*/
769+
init: function() {
770+
this.setHelpUrl(Blockly.Msg.CODERBOT_ARM_RAISE_HELPURL);
771+
this.setColour(40);
772+
var di = this.appendDummyInput()
773+
if (CODERBOT_PROG_LEVEL.indexOf("basic")>=0) {
774+
di.appendField(new Blockly.FieldImage('/images/blocks/arm_raise.png', 32, 32, '*'));
775+
} else {
776+
di.appendField(Blockly.Msg.CODERBOT_ARM_RAISE)
777+
}
778+
this.setPreviousStatement(true);
779+
this.setNextStatement(true);
780+
this.setTooltip('Coderbot_armRaiseTooltip');
781+
}
782+
};
783+
784+
Blockly.JavaScript['coderbot_armRaise'] = function(block) {
785+
// Generate JavaScript for raising the arm
786+
return 'get_bot()..servo3(' + CODERBOT_ARM_ANGLE_RAISED + ');\n';
787+
};
788+
789+
Blockly.Python['coderbot_armRaise'] = function(block) {
790+
// Generate Python code for raising the arm
791+
return 'get_bot()..servo3(' + CODERBOT_ARM_ANGLE_RAISED + ')\n';
792+
};
793+
794+
Blockly.Blocks['coderbot_armLower'] = {
795+
/**
796+
* Block for armLower function.
797+
* @this Blockly.Block
798+
*/
799+
init: function() {
800+
this.setHelpUrl(Blockly.Msg.CODERBOT_ARM_RAISE_HELPURL);
801+
this.setColour(40);
802+
var di = this.appendDummyInput()
803+
if (CODERBOT_PROG_LEVEL.indexOf("basic")>=0) {
804+
di.appendField(new Blockly.FieldImage('/image/blocks/arm_lower.png', 32, 32, '*'));
805+
} else {
806+
di.appendField(Blockly.Msg.CODERBOT_ARM_LOWER)
807+
}
808+
this.setPreviousStatement(true);
809+
this.setNextStatement(true);
810+
this.setTooltip('Coderbot_armLowerTooltip');
811+
}
812+
};
813+
814+
Blockly.JavaScript['coderbot_armLower'] = function(block) {
815+
// Generate JavaScript code for lowering the arm
816+
return 'get_bot().servo3(' + CODERBOT_ARM_ANGLE_LOWERED + ');\n';
817+
};
818+
819+
Blockly.Python['coderbot_armLower'] = function(block) {
820+
// Generate Python code for lowering the arm
821+
return 'get_bot().servo3(' + CODERBOT_ARM_ANGLE_LOWERED + ')\n';
822+
};

templates/blocks_std.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
</value>
5959
</block>
6060
</category>
61+
<category name ="{% trans %}Arm{% endtrans %}">
62+
<block type="coderbot_armRaise"></block>
63+
<block type="coderbot_armLower"></block>
64+
</category>
6165
<category name="{% trans %}Sensor{% endtrans %}">
6266
<block type="coderbot_adv_pathAhead"></block>
6367
<block type="coderbot_adv_findLine"></block>

templates/config_params.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
var CODERBOT_CTRL_TR_ELAPSE="{{config.ctrl_tr_elapse}}";
1616
var CODERBOT_CTRL_COUNTER="{{config.ctrl_counter}}"=="yes";
1717
var CODERBOT_CTRL_MOVE_MOTION="{{config.ctrl_move_motion}}"=="yes";
18-
18+
var CODERBOT_ARM_ANGLE_LOWERED="{{config.arm_angle_lowered}}";
19+
var CODERBOT_ARM_ANGLE_RAISED="{{config.arm_angle_raised}}";
1920
var BotMessages = Object();
2021
BotMessages.Input = "{%trans%}Say what:{%endtrans%}";
2122
BotMessages.Saved = "{%trans%}Saved{%endtrans%}";

0 commit comments

Comments
 (0)