From 83e4c406f5ca631592d8d184539278e22ecc497e Mon Sep 17 00:00:00 2001 From: lzty634158 <398310535@qq.com> Date: Mon, 26 Mar 2018 10:07:21 +0800 Subject: [PATCH] first commit --- .gitignore | 7 + .vscode/settings.json | 19 + .vscode/tasks.json | 36 ++ LICENSE | 20 + Makefile | 10 + README.md | 12 + _locales/zh/mbit-strings.json | 33 ++ icon.png | Bin 0 -> 95956 bytes main.ts | 1034 +++++++++++++++++++++++++++++++++ pxt.json | 23 + pxt.json.bak | 23 + test.ts | 1 + tsconfig.json | 9 + 13 files changed, 1227 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 _locales/zh/mbit-strings.json create mode 100644 icon.png create mode 100644 main.ts create mode 100644 pxt.json create mode 100644 pxt.json.bak create mode 100644 test.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6c0108 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +built +node_modules +yotta_modules +yotta_targets +pxt_modules +*.db +*.tgz diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e431228 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "editor.formatOnType": true, + "files.autoSave": "afterDelay", + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/built/**": true, + "**/node_modules/**": true, + "**/yotta_modules/**": true, + "**/yotta_targets": true, + "**/pxt_modules/**": true + }, + "search.exclude": { + "**/built": true, + "**/node_modules": true, + "**/yotta_modules": true, + "**/yotta_targets": true, + "**/pxt_modules": true + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..441d7d1 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,36 @@ + +// A task runner that calls the PXT compiler and +{ + "version": "0.1.0", + + // The command is pxt. Assumes that PXT has been installed using npm install -g pxt + "command": "pxt", + + // The command is a shell script + "isShellCommand": true, + + // Show the output window always. + "showOutput": "always", + + "tasks": [{ + "taskName": "deploy", + "isBuildCommand": true, + "problemMatcher": "$tsc", + "args": [""] + }, { + "taskName": "build", + "isTestCommand": true, + "problemMatcher": "$tsc", + "args": [""] + }, { + "taskName": "clean", + "isTestCommand": true, + "problemMatcher": "$tsc", + "args": [""] + }, { + "taskName": "serial", + "isTestCommand": true, + "problemMatcher": "$tsc", + "args": [""] + }] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..03bfe0a --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2017 Riven + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9068464 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +all: deploy + +build: + pxt build + +deploy: + pxt deploy + +test: + pxt test diff --git a/README.md b/README.md new file mode 100644 index 0000000..da3e8dc --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# mbit + +Extension for Yahboom mbit + +## License + +MIT + +## Supported targets + +* for PXT/microbit +(The metadata above is needed for package search.) diff --git a/_locales/zh/mbit-strings.json b/_locales/zh/mbit-strings.json new file mode 100644 index 0000000..dc61f16 --- /dev/null +++ b/_locales/zh/mbit-strings.json @@ -0,0 +1,33 @@ +{ + + "mbit_显示类.LED1|block": "LED灯|引脚 %pin|状态 %value", + "mbit_显示类.LED2|block": "LED灯|引脚 %pin|亮度 %value", + "mbit_显示类.BreathLED|block": "呼吸灯|引脚 %pin", + "mbit_显示类.RGB|block": "RGB七彩灯|引脚R %pin1|引脚G %pin2|引脚B %pin3|红色 %value1|绿色 %value2|蓝色 %value3", + "mbit_显示类.RGB2|block": "RGB七彩灯|引脚R %pin1|引脚G %pin2|引脚B %pin3|显示 %value", + + "mbit_输入类.TouchPad|block": "触摸开关|引脚 %pin|返回 %value", + "mbit_输入类.Rocker|block": "遥杆|VRX %pin1|VRY %pin2|SW %pin3|返回 %value", + "mbit_输入类.Button|block": "按键|引脚 %pin|返回 %value", + + "mbit_传感器类.Voice_Sensor|block": "声音传感器|引脚 %pin|返回 %value", + "mbit_传感器类.IR_Sensor|block": "红外传感器|引脚 %pin| |%value|障碍物", + "mbit_传感器类.IR_Send|block": "红外发射|引脚 %pin", + "mbit_传感器类.Ultrasonic|block": "超声波|发射管脚 %Trig|接收管脚 %Echo", + + "mbit_音乐类.Buzzer|block": "有源蜂鸣器|引脚 %pin|值 %value", + + "mbit_电机类.Fan|block": "风扇|引脚 %pin|速度 %value", + "mbit_电机类.Servo|block": "舵机|引脚 %pin|角度 %value", + + "mbit_小车类.RGB_Car_Big|block": "小车RGB探照灯|红色 %value1|绿色 %value2|蓝色 %value3", + "mbit_小车类.RGB_Car_Big2|block": "小车RGB探照灯|选择车灯颜色 %value", + "mbit_小车类.Ultrasonic_Car|block": "超声波返回(cm)", + "mbit_小车类.RGB_Car_Program|block": "七彩流水灯", + "mbit_小车类.Music_Car|block": "小车音乐播放|%index", + "mbit_小车类.Line_Sensor|block": "巡线传感器|位置 %direct|检测到 %value", + "mbit_小车类.Avoid_Sensor|block": "避障传感器|检测到 %value", + "mbit_小车类.Servo_Car|block": "小车舵机|编号 %num|角度 %value", + "mbit_小车类.CarCtrl|block": "小车控制|%index", + "mbit_小车类.CarCtrlSpeed|block": "小车控制|%index|速度 %speed" +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..96d472665502568ee1d574b933f0410f84da07a9 GIT binary patch literal 95956 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 z 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�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 0; i--) { + pins.analogWritePin(pin, i); + //basic.pause(1); + control.waitMicros(1000); + } + + } + + //% blockId=mbit_RGB block="RGB|pin1 %pin1|pin2 %pin2|pin3 %pin3|value1 %value1|value2 %value2|value3 %value3" + //% weight=2 + //% blockGap=8 + //% color="#C814B8" + //% value1.min=0 value1.max=255 value2.min=0 value2.max=255 value3.min=0 value3.max=255 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function RGB(pin1: AnalogPin, pin2: AnalogPin, pin3: AnalogPin, value1: number, value2: number, value3: number): void { + + pins.analogWritePin(pin1, value1 * 1024 / 256); + pins.analogWritePin(pin2, value2 * 1024 / 256); + pins.analogWritePin(pin3, value3 * 1024 / 256); + + } + //% blockId=mbit_RGB2 block="RGB|pin1 %pin1|pin2 %pin2|pin3 %pin3|value %value" + //% weight=1 + //% blockGap=8 + //% color="#C814B8" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function RGB2(pin1: DigitalPin, pin2: DigitalPin, pin3: DigitalPin, value: enColor): void { + + switch (value) { + case enColor.OFF: { + pins.digitalWritePin(pin1, 0); + pins.digitalWritePin(pin2, 0); + pins.digitalWritePin(pin3, 0); + break; + } + case enColor.Red: { + pins.digitalWritePin(pin1, 1); + pins.digitalWritePin(pin2, 0); + pins.digitalWritePin(pin3, 0); + break; + } + case enColor.Green: { + pins.digitalWritePin(pin1, 0); + pins.digitalWritePin(pin2, 1); + pins.digitalWritePin(pin3, 0); + break; + } + case enColor.Blue: { + pins.digitalWritePin(pin1, 0); + pins.digitalWritePin(pin2, 0); + pins.digitalWritePin(pin3, 1); + break; + } + case enColor.White: { + pins.digitalWritePin(pin1, 1); + pins.digitalWritePin(pin2, 1); + pins.digitalWritePin(pin3, 1); + break; + } + case enColor.Cyan: { + pins.digitalWritePin(pin1, 0); + pins.digitalWritePin(pin2, 1); + pins.digitalWritePin(pin3, 1); + break; + } + case enColor.Pinkish: { + pins.digitalWritePin(pin1, 1); + pins.digitalWritePin(pin2, 0); + pins.digitalWritePin(pin3, 1); + break; + } + case enColor.Yellow: { + pins.digitalWritePin(pin1, 1); + pins.digitalWritePin(pin2, 1); + pins.digitalWritePin(pin3, 0); + break; + } + } + + } + +} +/***************************************************************************************************************************************** + * 传感器类 ***************************************************************************************************************************** + ****************************************************************************************************************************************/ + +//% color="#87CEEB" weight=24 icon="\uf1b6" +namespace mbit_传感器类 { + + export enum enVoice { + //% blockId="Voice" block="有声音" + Voice = 0, + //% blockId="NoVoice" block="无声音" + NoVoice = 1 + } + + export enum enIR { + //% blockId="Get" block="检测到" + Get = 0, + //% blockId="NoVoice" block="未检测" + NoGet = 1 + } + + + //% blockId=mbit_Voice_Sensor block="Voice_Sensor|pin %pin|value %value" + //% weight=100 + //% blockGap=10 + //% color="#87CEEB" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function Voice_Sensor(pin: DigitalPin, value: enVoice): boolean { + + pins.setPull(pin, PinPullMode.PullUp); + if (pins.digitalReadPin(pin) == value) { + return true; + } + else { + return false; + } + + } + + function IR_send_38k() { + for (let i: number = 0; i < 8; i++) { + pins.digitalWritePin(DigitalPin.P9, 1); + control.waitMicros(13); + pins.digitalWritePin(DigitalPin.P9, 0); + control.waitMicros(13); + } + } + //% blockId=mbit_IR_Sensor block="IR_Sensor|pin %pin| |%value|障碍物" + //% weight=100 + //% blockGap=10 + //% color="#87CEEB" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function IR_Sensor(pin: DigitalPin, value: enIR): boolean { + + pins.setPull(pin, PinPullMode.PullUp); + //IR_send_38k(); + if (pins.digitalReadPin(pin) == value) { + return true; + } + else { + return false; + } + + } + + //% blockId=mbit_IR_Send block="IR_Send|pin %pin" + //% weight=100 + //% blockGap=10 + //% color="#87CEEB" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function IR_Send(pin: DigitalPin): void { + + + IR_send_38k(); + + } + + //% blockId=mbit_ultrasonic block="Ultrasonic|Trig %Trig|Echo %Echo" + //% color="#87CEEB" + //% weight=100 + //% blockGap=10 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function Ultrasonic(Trig: DigitalPin, Echo: DigitalPin): number { + + // send pulse + pins.setPull(Trig, PinPullMode.PullNone); + pins.digitalWritePin(Trig, 0); + control.waitMicros(2); + pins.digitalWritePin(Trig, 1); + control.waitMicros(10); + pins.digitalWritePin(Trig, 0); + + // read pulse + let d = pins.pulseIn(Echo, PulseValue.High, 23200); + return d / 58; + } +} + +/***************************************************************************************************************************************** + * 输入类 ***************************************************************************************************************************** + ****************************************************************************************************************************************/ + +//% color="#808080" weight=23 icon="\uf11c" +namespace mbit_输入类 { + + export enum enRocker { + //% blockId="Nostate" block="无" + Nostate = 0, + //% blockId="Up" block="上" + Up, + //% blockId="Down" block="下" + Down, + //% blockId="Left" block="左" + Left, + //% blockId="Right" block="右" + Right, + //% blockId="Press" block="按下" + Press + } + + export enum enTouch { + //% blockId="NoTouch" block="未触摸" + NoTouch = 0, + //% blockId="Touch" block="触摸" + Touch = 1 + } + export enum enButton { + //% blockId="Press" block="按下" + Press = 0, + //% blockId="Realse" block="松开" + Realse = 1 + } + + //% blockId=mbit_TouchPad block="TouchPad|pin %pin|value %value" + //% weight=100 + //% blockGap=10 + //% color="#808080" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=5 + export function TouchPad(pin: DigitalPin, value: enTouch): boolean { + + pins.setPull(pin, PinPullMode.PullUp); + if (pins.digitalReadPin(pin) == value) { + return true; + } + else { + return false; + } + + } + //% blockId=mbit_Rocker block="Rocker|VRX %pin1|VRY %pin2|SW %pin3|value %value" + //% weight=100 + //% blockGap=10 + //% color="#808080" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=6 + export function Rocker(pin1: AnalogPin, pin2: AnalogPin, pin3: DigitalPin, value: enRocker): boolean { + + pins.setPull(pin3, PinPullMode.PullUp); + let x = pins.analogReadPin(pin1); + let y = pins.analogReadPin(pin2); + let z = pins.digitalReadPin(pin3); + let now_state = enRocker.Nostate; + + if (x < 100) // 上 + { + + now_state = enRocker.Up; + + } + else if (x > 700) // + { + + now_state = enRocker.Down; + } + else // 左右 + { + if (y < 100) //右 + { + now_state = enRocker.Right; + } + else if (y > 700) //左 + { + now_state = enRocker.Left; + } + } + if (z == 0) + now_state = enRocker.Press; + if (now_state == value) + return true; + else + return false; + + } + + //% blockId=mbit_Button block="Button|pin %pin|value %value" + //% weight=100 + //% blockGap=10 + //% color="#808080" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=5 + export function Button(pin: DigitalPin, value: enButton): boolean { + + pins.setPull(pin, PinPullMode.PullUp); + if (pins.digitalReadPin(pin) == value) { + return true; + } + else { + return false; + } + + } +} + +/***************************************************************************************************************************************** + * 音乐类 ***************************************************************************************************************************** + ****************************************************************************************************************************************/ + +//% color="#D2691E" weight=22 icon="\uf001" +namespace mbit_音乐类 { + export enum enBuzzer { + + //% blockId="NoBeep" block="不响" + NoBeep = 0, + //% blockId="Beep" block="响" + Beep + } + + //% blockId=mbit_Buzzer block="Buzzer|pin %pin|value %value" + //% weight=100 + //% blockGap=10 + //% color="#D2691E" + //% value.min=0 value.max=1 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=8 + export function Buzzer(pin: DigitalPin, value: enBuzzer): void { + + pins.setPull(pin, PinPullMode.PullNone); + pins.digitalWritePin(pin, value); + + } + +} + +/***************************************************************************************************************************************** + * 电机类 ***************************************************************************************************************************** + ****************************************************************************************************************************************/ + +//% color="#0000CD" weight=21 icon="\uf185" +namespace mbit_电机类 { + + //% blockId=mbit_Fan block="Fan|pin %pin|speed %value" + //% weight=100 + //% blockGap=10 + //% color="#0000CD" + //% value.min=0 value.max=1023 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=9 + export function Fan(pin: AnalogPin, value: number): void { + + pins.analogWritePin(pin, value); + + } + + //% blockId=mbit_Servo block="Servo|pin %pin|value %value" + //% weight=100 + //% blockGap=10 + //% color="#0000CD" + //% value.min=0 value.max=180 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=9 + export function Servo(pin: AnalogPin, value: number): void { + + pins.servoWritePin(pin, value); + + } + +} + +//% color="#006400" weight=20 icon="\uf1b9" +namespace mbit_小车类 { + + const PCA9685_ADD = 0x41 + const MODE1 = 0x00 + const MODE2 = 0x01 + const SUBADR1 = 0x02 + const SUBADR2 = 0x03 + const SUBADR3 = 0x04 + + const LED0_ON_L = 0x06 + const LED0_ON_H = 0x07 + const LED0_OFF_L = 0x08 + const LED0_OFF_H = 0x09 + + const ALL_LED_ON_L = 0xFA + const ALL_LED_ON_H = 0xFB + const ALL_LED_OFF_L = 0xFC + const ALL_LED_OFF_H = 0xFD + + const PRESCALE = 0xFE + + let initialized = false + let yahStrip: neopixel.Strip; + + export enum enColor { + + //% blockId="OFF" block="灭" + OFF = 0, + //% blockId="Red" block="红色" + Red, + //% blockId="Green" block="绿色" + Green, + //% blockId="Blue" block="蓝色" + Blue, + //% blockId="White" block="白色" + White, + //% blockId="Cyan" block="青色" + Cyan, + //% blockId="Pinkish" block="品红" + Pinkish, + //% blockId="Green" block="黄色" + Yellow, + + } + export enum enMusic { + + dadadum = 0, + entertainer, + prelude, + ode, + nyan, + ringtone, + funk, + blues, + + birthday, + wedding, + funereal, + punchline, + baddy, + chase, + ba_ding, + wawawawaa, + jump_up, + jump_down, + power_up, + power_down + } + export enum enPos { + + //% blockId="LeftState" block="左边状态" + LeftState = 0, + //% blockId="RightState" block="右边状态" + RightState = 1 + } + + export enum enLineState { + //% blockId="White" block="白线" + White = 0, + //% blockId="Black" block="黑线" + Black = 1 + + } + + export enum enAvoidState { + //% blockId="OBSTACLE" block="有障碍物" + OBSTACLE = 0, + //% blockId="NOOBSTACLE" block="无障碍物" + NOOBSTACLE = 1 + + } + + + export enum enServo { + + S1 = 1, + S2, + S3 + } + export enum CarState { + //% blockId="Car_Run" block="前行" + Car_Run = 1, + //% blockId="Car_Back" block="后退" + Car_Back = 2, + //% blockId="Car_Left" block="左转" + Car_Left = 3, + //% blockId="Car_Right" block="右转" + Car_Right = 4, + //% blockId="Car_Stop" block="停止" + Car_Stop = 5, + //% blockId="Car_SpinLeft" block="原地左旋" + Car_SpinLeft = 6, + //% blockId="Car_SpinRight" block="原地右旋" + Car_SpinRight = 7 + } + + function i2cwrite(addr: number, reg: number, value: number) { + let buf = pins.createBuffer(2) + buf[0] = reg + buf[1] = value + pins.i2cWriteBuffer(addr, buf) + } + + function i2ccmd(addr: number, value: number) { + let buf = pins.createBuffer(1) + buf[0] = value + pins.i2cWriteBuffer(addr, buf) + } + + function i2cread(addr: number, reg: number) { + pins.i2cWriteNumber(addr, reg, NumberFormat.UInt8BE); + let val = pins.i2cReadNumber(addr, NumberFormat.UInt8BE); + return val; + } + + function initPCA9685(): void { + i2cwrite(PCA9685_ADD, MODE1, 0x00) + setFreq(50); + initialized = true + } + + function setFreq(freq: number): void { + // Constrain the frequency + let prescaleval = 25000000; + prescaleval /= 4096; + prescaleval /= freq; + prescaleval -= 1; + let prescale = prescaleval; //Math.Floor(prescaleval + 0.5); + let oldmode = i2cread(PCA9685_ADD, MODE1); + let newmode = (oldmode & 0x7F) | 0x10; // sleep + i2cwrite(PCA9685_ADD, MODE1, newmode); // go to sleep + i2cwrite(PCA9685_ADD, PRESCALE, prescale); // set the prescaler + i2cwrite(PCA9685_ADD, MODE1, oldmode); + control.waitMicros(5000); + i2cwrite(PCA9685_ADD, MODE1, oldmode | 0xa1); + } + + function setPwm(channel: number, on: number, off: number): void { + if (channel < 0 || channel > 15) + return; + if (!initialized) { + initPCA9685(); + } + let buf = pins.createBuffer(5); + buf[0] = LED0_ON_L + 4 * channel; + buf[1] = on & 0xff; + buf[2] = (on >> 8) & 0xff; + buf[3] = off & 0xff; + buf[4] = (off >> 8) & 0xff; + pins.i2cWriteBuffer(PCA9685_ADD, buf); + } + + + function Car_run(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350) { + speed = 350 + } + + setPwm(12, 0, speed); + setPwm(13, 0, 0); + + setPwm(15, 0, speed); + setPwm(14, 0, 0); + //pins.digitalWritePin(DigitalPin.P16, 1); + // pins.analogWritePin(AnalogPin.P1, 1023-speed); //速度控制 + + // pins.analogWritePin(AnalogPin.P0, speed);//速度控制 + // pins.digitalWritePin(DigitalPin.P8, 0); + } + + function Car_back(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350 && speed != 0) { + speed = 350 + } + + setPwm(12, 0, 0); + setPwm(13, 0, speed); + + setPwm(15, 0, 0); + setPwm(14, 0, speed); + + //pins.digitalWritePin(DigitalPin.P16, 0); + //pins.analogWritePin(AnalogPin.P1, speed); //速度控制 + + //pins.analogWritePin(AnalogPin.P0, 1023 - speed);//速度控制 + //pins.digitalWritePin(DigitalPin.P8, 1); + } + + function Car_left(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350 && speed != 0) { + speed = 350 + } + setPwm(12, 0, 0); + setPwm(13, 0, 0); + + setPwm(15, 0, speed); + setPwm(14, 0, 0); + + //pins.analogWritePin(AnalogPin.P0, speed); + //pins.digitalWritePin(DigitalPin.P8, 0); + + //pins.digitalWritePin(DigitalPin.P16, 0); + //pins.digitalWritePin(DigitalPin.P1, 0); + } + + function Car_right(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350 && speed != 0) { + speed = 350 + } + setPwm(12, 0, speed); + setPwm(13, 0, 0); + + setPwm(15, 0, 0); + setPwm(14, 0, 0); + //pins.digitalWritePin(DigitalPin.P0, 0); + //pins.digitalWritePin(DigitalPin.P8, 0); + + //pins.digitalWritePin(DigitalPin.P16, 1); + // pins.analogWritePin(AnalogPin.P1, 1023 - speed); + } + + function Car_stop() { + + setPwm(12, 0, 0); + setPwm(13, 0, 0); + + setPwm(15, 0, 0); + setPwm(14, 0, 0); + //pins.digitalWritePin(DigitalPin.P0, 0); + //pins.digitalWritePin(DigitalPin.P8, 0); + //pins.digitalWritePin(DigitalPin.P16, 0); + //pins.digitalWritePin(DigitalPin.P1, 0); + } + + function Car_spinleft(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350 && speed != 0) { + speed = 350 + } + setPwm(12, 0, 0); + setPwm(13, 0, speed); + + setPwm(15, 0, speed); + setPwm(14, 0, 0); + + //pins.analogWritePin(AnalogPin.P0, speed); + //pins.digitalWritePin(DigitalPin.P8, 0); + + //pins.digitalWritePin(DigitalPin.P16, 0); + //pins.analogWritePin(AnalogPin.P1, speed); + } + + function Car_spinright(speed: number) { + + speed = speed * 16; // map 350 to 4096 + if (speed >= 4096) { + speed = 4095 + } + if (speed <= 350 && speed != 0) { + speed = 350 + } + setPwm(12, 0, speed); + setPwm(13, 0, 0); + + setPwm(15, 0, 0); + setPwm(14, 0, speed); + //pins.analogWritePin(AnalogPin.P0, 1023-speed); + //pins.digitalWritePin(DigitalPin.P8, 1); + + //pins.digitalWritePin(DigitalPin.P16, 1); + //pins.analogWritePin(AnalogPin.P1, 1023-speed); + + } + + /** + * ***************************************************************** + * @param index + */ + //% blockId=mbit_RGB_Car_Big2 block="RGB_Car_Big2|value %value" + //% weight=101 + //% blockGap=10 + //% color="#C814B8" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function RGB_Car_Big2(value: enColor): void { + + switch (value) { + case enColor.OFF: { + setPwm(0, 0, 0); + setPwm(1, 0, 0); + setPwm(2, 0, 0); + break; + } + case enColor.Red: { + setPwm(0, 0, 4095); + setPwm(1, 0, 0); + setPwm(2, 0, 0); + break; + } + case enColor.Green: { + setPwm(0, 0, 0); + setPwm(1, 0, 4095); + setPwm(2, 0, 0); + break; + } + case enColor.Blue: { + setPwm(0, 0, 0); + setPwm(1, 0, 0); + setPwm(2, 0, 4095); + break; + } + case enColor.White: { + setPwm(0, 0, 4095); + setPwm(1, 0, 4095); + setPwm(2, 0, 4095); + break; + } + case enColor.Cyan: { + setPwm(0, 0, 0); + setPwm(1, 0, 4095); + setPwm(2, 0, 4095); + break; + } + case enColor.Pinkish: { + setPwm(0, 0, 4095); + setPwm(1, 0, 0); + setPwm(2, 0, 4095); + break; + } + case enColor.Yellow: { + setPwm(0, 0, 4095); + setPwm(1, 0, 4095); + setPwm(2, 0, 0); + break; + } + } + } + //% blockId=mbit_RGB_Car_Big block="RGB_Car_Big|value1 %value1|value2 %value2|value3 %value3" + //% weight=100 + //% blockGap=10 + //% color="#C814B8" + //% value1.min=0 value1.max=255 value2.min=0 value2.max=255 value3.min=0 value3.max=255 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function RGB_Car_Big(value1: number, value2: number, value3: number): void { + + let R = value1 * 16; + let G = value2 * 16; + let B = value3 * 16; + + if (R > 4096) + R = 4095; + if (G > 4096) + G = 4095; + if (B > 4096) + B = 4095; + + setPwm(0, 0, R); + setPwm(1, 0, G); + setPwm(2, 0, B); + + } + + //% blockId=mbit_RGB_Car_Program block="RGB_Car_Program" + //% weight=99 + //% blockGap=10 + //% color="#C814B8" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function RGB_Car_Program(): neopixel.Strip { + + if (!yahStrip) { + yahStrip = neopixel.create(DigitalPin.P16, 3, NeoPixelMode.RGB); + } + return yahStrip; + } + + + //% blockId=mbit_ultrasonic_car block="ultrasonic return distance(cm)" + //% color="#006400" + //% weight=98 + //% blockGap=10 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function Ultrasonic_Car(): number { + + // send pulse + pins.setPull(DigitalPin.P14, PinPullMode.PullNone); + pins.digitalWritePin(DigitalPin.P14, 0); + control.waitMicros(2); + pins.digitalWritePin(DigitalPin.P14, 1); + control.waitMicros(10); + pins.digitalWritePin(DigitalPin.P14, 0); + + // read pulse + let d = pins.pulseIn(DigitalPin.P15, PulseValue.High, 43200); + return d / 58; + } + + //% blockId=mbit_Music_Car block="Music_Car|%index" + //% weight=97 + //% blockGap=10 + //% color="#006400" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=4 + export function Music_Car(index: enMusic): void { + switch (index) { + case enMusic.dadadum: music.beginMelody(music.builtInMelody(Melodies.Dadadadum), MelodyOptions.Once); break; + case enMusic.birthday: music.beginMelody(music.builtInMelody(Melodies.Birthday), MelodyOptions.Once); break; + case enMusic.entertainer: music.beginMelody(music.builtInMelody(Melodies.Entertainer), MelodyOptions.Once); break; + case enMusic.prelude: music.beginMelody(music.builtInMelody(Melodies.Prelude), MelodyOptions.Once); break; + case enMusic.ode: music.beginMelody(music.builtInMelody(Melodies.Ode), MelodyOptions.Once); break; + case enMusic.nyan: music.beginMelody(music.builtInMelody(Melodies.Nyan), MelodyOptions.Once); break; + case enMusic.ringtone: music.beginMelody(music.builtInMelody(Melodies.Ringtone), MelodyOptions.Once); break; + case enMusic.funk: music.beginMelody(music.builtInMelody(Melodies.Funk), MelodyOptions.Once); break; + case enMusic.blues: music.beginMelody(music.builtInMelody(Melodies.Blues), MelodyOptions.Once); break; + case enMusic.wedding: music.beginMelody(music.builtInMelody(Melodies.Wedding), MelodyOptions.Once); break; + case enMusic.funereal: music.beginMelody(music.builtInMelody(Melodies.Funeral), MelodyOptions.Once); break; + case enMusic.punchline: music.beginMelody(music.builtInMelody(Melodies.Punchline), MelodyOptions.Once); break; + case enMusic.baddy: music.beginMelody(music.builtInMelody(Melodies.Baddy), MelodyOptions.Once); break; + case enMusic.chase: music.beginMelody(music.builtInMelody(Melodies.Chase), MelodyOptions.Once); break; + case enMusic.ba_ding: music.beginMelody(music.builtInMelody(Melodies.BaDing), MelodyOptions.Once); break; + case enMusic.wawawawaa: music.beginMelody(music.builtInMelody(Melodies.Wawawawaa), MelodyOptions.Once); break; + case enMusic.jump_up: music.beginMelody(music.builtInMelody(Melodies.JumpUp), MelodyOptions.Once); break; + case enMusic.jump_down: music.beginMelody(music.builtInMelody(Melodies.JumpDown), MelodyOptions.Once); break; + case enMusic.power_up: music.beginMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.Once); break; + case enMusic.power_down: music.beginMelody(music.builtInMelody(Melodies.PowerDown), MelodyOptions.Once); break; + } + } + //% blockId=mbit_Servo_Car block="Servo_Car|num %num|value %value" + //% weight=96 + //% blockGap=10 + //% color="#006400" + //% num.min=1 num.max=3 value.min=0 value.max=180 + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=9 + export function Servo_Car(num: enServo, value: number): void { + + // 50hz: 20,000 us + let us = (value * 1800 / 180 + 600); // 0.6 ~ 2.4 + let pwm = us * 4096 / 20000; + setPwm(num + 2, 0, pwm); + + } + + //% blockId=mbit_Avoid_Sensor block="Avoid_Sensor|value %value" + //% weight=95 + //% blockGap=10 + //% color="#006400" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=12 + export function Avoid_Sensor(value: enAvoidState): boolean { + + let temp: boolean = false; + pins.digitalWritePin(DigitalPin.P9, 0); + switch (value) { + case enAvoidState.OBSTACLE: { + if (pins.analogReadPin(AnalogPin.P3) < 800) { + + temp = true; + setPwm(8, 0, 0); + } + else { + temp = false; + setPwm(8, 0, 4095); + } + break; + } + + case enAvoidState.NOOBSTACLE: { + if (pins.analogReadPin(AnalogPin.P3) > 800) { + + temp = true; + setPwm(8, 0, 4095); + } + else { + temp = false; + setPwm(8, 0, 0); + } + break; + } + } + pins.digitalWritePin(DigitalPin.P9, 1); + return temp; + + } + //% blockId=mbit_Line_Sensor block="Line_Sensor|direct %direct|value %value" + //% weight=94 + //% blockGap=10 + //% color="#006400" + //% name.fieldEditor="gridpicker" name.fieldOptions.columns=12 + export function Line_Sensor(direct: enPos, value: enLineState): boolean { + + let temp: boolean = false; + + switch (direct) { + case enPos.LeftState: { + if (pins.analogReadPin(AnalogPin.P2) < 500) { + if (value == enLineState.White) { + temp = true; + } + setPwm(7, 0, 4095); + } + else { + if (value == enLineState.Black) { + temp = true; + } + setPwm(7, 0, 0); + } + break; + } + + case enPos.RightState: { + if (pins.analogReadPin(AnalogPin.P1) < 500) { + if (value == enLineState.White) { + temp = true; + } + setPwm(6, 0, 4095); + } + else { + if (value == enLineState.Black) { + temp = true; + } + setPwm(6, 0, 0); + } + break; + } + } + return temp; + + } + //% blockId=mbit_CarCtrl block="CarCtrl|%index" + //% weight=93 + //% blockGap=10 + //% color="#006400" + //% 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_Stop: Car_stop(); break; + case CarState.Car_SpinLeft: Car_spinleft(255); break; + case CarState.Car_SpinRight: Car_spinright(255); break; + } + } + //% blockId=mbit_CarCtrlSpeed block="CarCtrlSpeed|%index|speed %speed" + //% weight=92 + //% blockGap=10 + //% speed.min=0 speed.max=255 + //% color="#006400" + //% 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_Stop: Car_stop(); break; + case CarState.Car_SpinLeft: Car_spinleft(speed); break; + case CarState.Car_SpinRight: Car_spinright(speed); break; + } + } +} diff --git a/pxt.json b/pxt.json new file mode 100644 index 0000000..a4870a3 --- /dev/null +++ b/pxt.json @@ -0,0 +1,23 @@ +{ + "name": "mbit", + "version": "1.1.0", + "description": "Extension for YahBoom m:bit", + "license": "MIT", + "dependencies": { + "core": "*", + "neopixel": "github:microsoft/pxt-neopixel#v0.3.10", + "Mbit_IR": "github:lzty634158/yahboom_mbit_IR" + + + }, + "files": [ + "README.md", + "main.ts", + "_locales/zh/mbit-strings.json" + + ], + "testFiles": [ + "test.ts" + ], + "public": true +} \ No newline at end of file diff --git a/pxt.json.bak b/pxt.json.bak new file mode 100644 index 0000000..b210eca --- /dev/null +++ b/pxt.json.bak @@ -0,0 +1,23 @@ +{ + "name": "mbit", + "version": "1.1.0", + "description": "Extension for YahBoom m:bit", + "license": "MIT", + "dependencies": { + "core": "*", + "neopixel": "github:microsoft/pxt-neopixel#v0.3.10", + "Mbit_IR": "github:lzty634158/yahboom_mbit_IR#v1.0.0" + + + }, + "files": [ + "README.md", + "main.ts", + "_locales/zh/mbit-strings.json" + + ], + "testFiles": [ + "test.ts" + ], + "public": true +} \ No newline at end of file diff --git a/test.ts b/test.ts new file mode 100644 index 0000000..34fc63d --- /dev/null +++ b/test.ts @@ -0,0 +1 @@ +// tests go here; this will not be compiled when this package is used as a library diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a2079ff --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es5", + "noImplicitAny": true, + "outDir": "built", + "rootDir": "." + }, + "exclude": ["pxt_modules/**/*test.ts"] +}