@mixly/micropython
Version:
适用于mixly的micropython模块
684 lines (627 loc) • 36.4 kB
JavaScript
import { Boards } from 'mixly';
export const servo_init = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
generator.definitions_['import_board'] = 'import board';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = v + ' = servo.Servo(board.' + dropdown_pin + ')\n';
return code;
}
export const servo_speed_360 = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'SPEED', generator.ORDER_ATOMIC);
var code = v + '.set_speed(' + speed + ')\n';
return code;
}
export const servo_set_angle = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
var code = 'servo.servo180_angle(' + dropdown_pin + ', ' + num + ')\n';
return code;
}
export const servo_set_speed = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
var code = 'servo.servo360_speed(' + dropdown_pin + ', ' + num + ')\n';
return code;
}
export const servo_get_angle = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'servo.servo180_angle(' + dropdown_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const servo_get_speed = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'servo.servo360_speed(' + dropdown_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const actuator_ms32006_init = function (_, generator) {
generator.definitions_['import ms32006'] = 'import ms32006';
var address = this.getFieldValue('mode')
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var sub1 = generator.valueToCode(this, 'SUB1', generator.ORDER_ATOMIC);
var code = sub + '=ms32006.MS32006(' + sub1 + ', addr=' + address + ')\n';
return code;
}
export const actuator_ms32006_dcmotor = function (_, generator) {
generator.definitions_['import ms32006'] = 'import ms32006';
var direction = this.getFieldValue('direction')
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var code = sub + '.dc_motor(' + direction + ', ' + speed + ')\n';
return code;
}
export const actuator_ms32006_stepper = function (_, generator) {
generator.definitions_['import ms32006'] = 'import ms32006';
var mode = this.getFieldValue('mode')
var direction = this.getFieldValue('direction')
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var steps = generator.valueToCode(this, 'steps', generator.ORDER_ATOMIC);
var code = sub + '.move(' + mode + ', ' + direction + ', ' + speed + ', ' + steps + ')\n';
return code;
}
export const esp32_music_pitch_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
generator.definitions_['import_music'] = 'import music';
var code = v + ' = music.MIDI(' + dropdown_rgbpin + ')\n';
return code;
}
export const esp32_music_pitch = function (block, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
var code = v + '.pitch(' + number_pitch + ')\n';
return code;
}
export const esp32_music_pitch_with_time = function (block, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
var number_time = generator.valueToCode(block, 'time', generator.ORDER_ATOMIC);
var code = v + '.pitch_time(' + number_pitch + ', ' + number_time + ')\n';
return code;
}
export const esp32_music_stop = function (block, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.stop(' + ')\n';
return code;
}
export const esp32_music_set_tempo_extern = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);
var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);
var code = v + ".set_tempo(" + ticks + ", " + bpm + ")\n";
return code;
}
export const esp32_music_get_tempo_extern = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + ".get_tempo()";
return [code, generator.ORDER_ATOMIC];
}
export const esp32_music_play_list = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + ".play(" + v + '.' + lst + ")\n";
return code;
}
export const esp32_music_reset_extern = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
return v + ".reset()\n";
}
export const servo_move = function (_, generator) {
generator.definitions_['import_servo'] = 'import servo';
generator.definitions_['import_machine'] = 'import machine';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
var code = 'servo.servo_write_angle(' + dropdown_pin + ', ' + value_degree + ')\n';
return code;
}
export const actuator_extern_led_bright = function (_, generator) {
generator.definitions_['import_mixgo'] = 'import mixgo';
var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
// var bright = this.getFieldValue('bright');
var code = "mixgo.LED(" + pin + ").setonoff(" + bright + ")\n";
return code;
}
export const actuator_extern_get_led_bright = function (_, generator) {
generator.definitions_['import_mixgo'] = 'import mixgo';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = "mixgo.LED(" + pin + ").getbrightness(" + ")";
return [code, generator.ORDER_ATOMIC];
}
export const actuator_extern_get_led_state = function (_, generator) {
generator.definitions_['import_mixgo'] = 'import mixgo';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = "mixgo.LED(" + pin + ").getonoff(" + ")";
return [code, generator.ORDER_ATOMIC];
}
export const actuator_extern_led_brightness = function (_, generator) {
generator.definitions_['import_mixgo'] = 'import mixgo';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);
var code = 'mixgo.LED(' + pin + ').setbrightness(' + flag + ')\n';
return code;
}
export const actuator_neopixel_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_neopixel'] = 'import neopixel';
var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ')\n';
return code;
}
export const actuator_neopixel_rgb_all = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);
var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);
var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);
var code = v + '.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n';
return code;
}
export const actuator_neopixel_write = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_neopixel'] = 'import neopixel';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.write()\n';
return code;
}
export const actuator_neopixel_rgb = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_neopixel'] = 'import neopixel';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);
var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);
var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);
var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n';
return code;
}
export const actuator_use_uart_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var key2 = this.getFieldValue('key2');
if (key2 == 'SYN6288') {
generator.definitions_['import_syn6288'] = 'import syn6288';
var code = v + '=syn6288.SYN6288(' + key + ')\n';
return code;
} else if (key2 == 'NS9300') {
generator.definitions_['import_ns9300'] = 'import ns9300';
var code = v + '=ns9300.NS9300(' + key + ')\n';
return code;
}
}
export const player_whether_stop = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = v + '.status(' + key + ')';
return [code, generator.ORDER_ATOMIC];
}
export const player_set_play = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = v + '.control(' + key + ')\n';
return code;
}
export const player_set_volume = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var vol = generator.valueToCode(this, 'volume', generator.ORDER_ATOMIC);
var code = v + '.volume(' + vol + ')\n';
return code;
}
export const player_set_mode = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = v + '.mode(' + key + ')\n';
return code;
}
export const player_play_music = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var s = generator.valueToCode(this, 'song', generator.ORDER_ATOMIC);
var code = v + '.' + key + '(' + s + ')\n';
return code;
}
export const syn6288_set_voice = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);
var code = v + ".volume(" + voice + ")\n";
return code;
}
export const syn6288_get_voice = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + ".volume()";
return [code, generator.ORDER_ATOMIC];
}
export const syn6288_builtin_voice = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var mode = this.getFieldValue('mode');
var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);
var code = v + ".hint_tones(" + voice + ', blocking=' + mode + ")\n";
return code;
}
export const syn6288_tts_play = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var mode = this.getFieldValue('mode');
var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".synthesis(" + data + ', music=' + voice + ', blocking=' + mode + ")\n";
return code;
}
//mixbot extern below:
export const mixbot_addr_extern = function (_, generator) {
var code = this.getFieldValue('PIN');
return [code, generator.ORDER_ATOMIC];
}
export const robot_motor_extern = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_motor'] = 'from mixbot_ext import ext_motor';
var code = 'ext_motor.run(' + mode + ',' + speed + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)';
var code = 'ext_motor_left.run(0,' + speed + ')\n';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)';
var code = 'ext_motor_right.run(0,' + speed + ')\n';
}
return code;
}
}
export const robot_motor_extern_get_speed = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
if (version == 'mixbot') {
var code = 'ext_motor.run(' + mode + ")";
return [code, generator.ORDER_ATOMIC];
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)';
var code = 'ext_motor_left.run()';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)';
var code = 'ext_motor_right.run()';
}
return [code, generator.ORDER_ATOMIC];
}
}
export const robot_traffic_light_extern = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var light = this.getFieldValue('light');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_traffic'] = 'from mixbot_ext import ext_traffic';
var mode = this.getFieldValue('mode');
var light = this.getFieldValue('light');
var code = 'ext_traffic.led(' + mode + ', ';
if (light == '0' || light == '1' || light == '2') { code += '0' + ', ' }
else if (light == '3' || light == '4') { code += '1' + ',' }
else if (light == '5' || light == '6') { code += '2' + ',' }
if (light == '0') { code += '0' }
else if (light == '1' || light == '3' || light == '5') { code += '1' }
else if (light == '2' || light == '4' || light == '6') { code += '-1' }
code += ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_traffic'] = 'ext_traffic_left = i2cdevice.Traffic_LED(ext_i2c_left)';
var code = 'ext_traffic_left.led(0,';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_traffic'] = 'ext_traffic_right = i2cdevice.Traffic_LED(ext_i2c_right)';
var code = 'ext_traffic_right.led(0,';
}
if (light == '0' || light == '1' || light == '2') { code += '0' + ',' }
else if (light == '3' || light == '4') { code += '1' + ',' }
else if (light == '5' || light == '6') { code += '2' + ',' }
if (light == '0') { code += '0' }
else if (light == '1' || light == '3' || light == '5') { code += '1' }
else if (light == '2' || light == '4' || light == '6') { code += '-1' }
code += ")\n";
return code;
}
}
export const robot_led_extern = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var color = this.getFieldValue('color');
var value = generator.valueToCode(this, 'value', generator.ORDER_ATOMIC);
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED';
var code = color + '_LED.brightness(' + mode + ', ' + value + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)';
var code = 'ext_' + color + '_LED_left.brightness(' + '0, ' + value + ")\n";
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)';
var code = 'ext_' + color + '_LED_right.brightness(' + '0, ' + value + ")\n";
}
return code;
}
}
export const robot_led_extern_get_value = function (_, generator) {
var mode = this.getFieldValue('mode');
var color = this.getFieldValue('color');
var version = Boards.getSelectedBoardKey().split(':')[2]
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED';
var code = color + '_LED.brightness(' + mode + ")";
return [code, generator.ORDER_ATOMIC];
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)';
var code = 'ext_' + color + '_LED_left.brightness(0)';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)';
var code = 'ext_' + color + '_LED_right.brightness(0)';
}
return [code, generator.ORDER_ATOMIC];
}
}
export const robot_servo_extern_get_status = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var status = this.getFieldValue('status');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.state(' + mode + ")" + status;
return [code, generator.ORDER_ATOMIC];
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.state(0)' + status;
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.state(0)' + status;
}
return [code, generator.ORDER_ATOMIC];
}
}
export const robot_servo_extern_stop_mode = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var status = this.getFieldValue('status');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.stop_mode(' + mode + ", " + status + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left=i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.stop_mode(' + "0, " + status + ")\n";
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.stop_mode(' + "0, " + status + ")\n";
}
return code;
}
}
export const robot_servo_extern_stop = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.stop(' + mode + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.stop(0)\n';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.stop(0)\n';
}
return code;
}
}
export const robot_servo_extern_absolute_run = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var status = this.getFieldValue('status');
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var direction = this.getFieldValue('direction');
var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC);
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.absolute_run(' + mode + ", " + status + ", " + speed + ", " + direction + ", " + angle + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.absolute_run(' + "0, " + status + ", " + speed + ", " + direction + ", " + angle + ")\n";
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.absolute_run(' + "0, " + status + ", " + speed + ", " + direction + ", " + angle + ")\n";
}
return code;
}
}
export const robot_servo_extern_relative_origin = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.relative_origin(' + mode + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.relative_origin(0)\n';
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.relative_origin(0)\n';
}
return code;
}
}
export const robot_servo_extern_relative_run = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var status = this.getFieldValue('status');
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC);
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.relative_run(' + mode + ", " + status + ", " + speed + ", " + angle + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.relative_run(' + "0, " + status + ", " + speed + ", " + angle + ")\n";
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.relative_run(' + "0, " + status + ", " + speed + ", " + angle + ")\n";
}
return code;
}
}
export const robot_servo_extern_relative_continue = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var mode = this.getFieldValue('mode');
var status = this.getFieldValue('status');
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var direction = this.getFieldValue('direction');
if (version == 'mixbot') {
generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';
var code = 'ext_servo.relative_continue(' + mode + ", " + status + ", " + speed + ", " + direction + ")\n";
return code;
} else if (version == 'feiyi') {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_i2cdevice'] = 'import i2cdevice';
if (mode == "0") {
generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl=machine.Pin(0), sda=machine.Pin(1), freq=10000)';
generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';
var code = 'ext_servo_left.relative_continue(' + "0, " + status + ", " + speed + ", " + direction + ")\n";
} else if (mode == "1") {
generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl=machine.Pin(2), sda=machine.Pin(3), freq=10000)';
generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';
var code = 'ext_servo_right.relative_continue(' + "0, " + status + ", " + speed + ", " + direction + ")\n";
}
return code;
}
}
export const mixbot_actuator_extern_get_addr = function (_, generator) {
var name = this.getFieldValue('name');
generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;
var code = name + '.addr_get()';
return [code, generator.ORDER_ATOMIC];
}
export const mixbot_actuator_extern_set_addr = function (_, generator) {
var name = this.getFieldValue('name');
generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;
var oldaddr = generator.valueToCode(this, 'old', generator.ORDER_ATOMIC);
var newaddr = generator.valueToCode(this, 'new', generator.ORDER_ATOMIC);
var code = name + '.addr_set(' + oldaddr + ', ' + newaddr + ')\n';
return code;
}
//educore
export const PIN_init = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + 'pin'] = 'from ' + version + ' import pin';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'pin(' + dropdown_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const pin_led_bright = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);
generator.definitions_['import_' + version + 'pin'] = 'from ' + version + ' import pin';
var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);
var code = pin + ".write_digital(value=" + bright + ")\n";
return code;
}
export const servo_PIN_init = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + 'servo'] = 'from ' + version + ' import servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'servo(' + dropdown_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const servo_move_angle = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + 'servo'] = 'from ' + version + ' import servo';
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var a = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC);
var code = sub + '.angle(' + a + ')\n';
return code;
}
export const parrot_PIN_init = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + 'parrot'] = 'from ' + version + ' import parrot';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'parrot(' + dropdown_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const parrot_move_speed = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + 'parrot'] = 'from ' + version + ' import parrot';
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var code = sub + '.speed(' + speed + ')\n';
return code;
}