diff --git a/.gitignore b/.gitignore index cb1ad9c6..a90906d5 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ lib/ _locales **/*.DS_Store +package-lock.json +package.json diff --git a/docs/boards/aebo-joystick.md b/docs/boards/aebo-joystick.md new file mode 100644 index 00000000..f57479f4 --- /dev/null +++ b/docs/boards/aebo-joystick.md @@ -0,0 +1,11 @@ +# Aebo Joystick + +```sim +forever(function() { + +}) +``` + +```package +aebo-joystick +``` diff --git a/docs/static/libs/aebo-joystick.jpg b/docs/static/libs/aebo-joystick.jpg new file mode 100644 index 00000000..61f8d2c8 Binary files /dev/null and b/docs/static/libs/aebo-joystick.jpg differ diff --git a/libs/aebo-joystick/README.md b/libs/aebo-joystick/README.md new file mode 100644 index 00000000..beb89b46 --- /dev/null +++ b/libs/aebo-joystick/README.md @@ -0,0 +1,4 @@ +# Aerobotics Global AEBO Joystick + + + diff --git a/libs/aebo-joystick/board.json b/libs/aebo-joystick/board.json new file mode 100644 index 00000000..05b67290 --- /dev/null +++ b/libs/aebo-joystick/board.json @@ -0,0 +1,130 @@ +{ + "driveDisplayName": "AEBOBOOT", + "visual": { + "image": "pkg://board.svg", + "useCrocClips": false, + "width": 500, + "height": 343, + "pinDist": 15, + "pinBlocks": [ + { + "x": 89, + "y": 183, + "labels": [ + "D5" + ] + }, + { + "x": 102, + "y": 195, + "labels": [ + "A1" + ] + }, + { + "x": 111, + "y": 207, + "labels": [ + "A0" + ] + }, + { + "x": 346, + "y": 231, + "labels": [ + "D4" + ] + }, + { + "x": 359, + "y": 220, + "labels": [ + "D9" + ] + }, + { + "x": 372, + "y": 209, + "labels": [ + "D8" + ] + } + ], + "leds": [ + { + "x": 329, + "y": 138, + "w": 14, + "h": 14, + "color": "#ffffff", + "label": "LED" + } + ], + "touchPads": [], + "buttons": [], + "reset": { + "x": 17.83250718937794, + "y": 45.50404575993516, + "w": 13.596367783800709, + "h": 13.596390332336691 + } + + }, + "gpioPinMap": { + "A5": "A5", + "A4": "A4", + "A3": "A3", + "A2": "A2", + "A1": "A1", + "JACK_TX": "TX", + "A0": "A0", + "AREF": "AREF", + "+3V3": "+3V3", + "!RESET": "!RESET", + "VBAT": "VBAT", + "EN": "EN", + "VBUS": "VBUS", + "D12": "D12", + "D11": "D11", + "D10": "D10", + "D9": "D9", + "D8": "D8", + "D7":"D7", + "D6": "D6", + "D5": "D5", + "SCL": "SCL", + "SDA": "SDA", + "LED": "D13", + "NEOPIXEL": "NEOPIXEL", + "RESET": "RESET", + "DISPLAY_CS": "A2", + "DISPLAY_SCK": "SCK", + "DISPLAY_MOSI": "MOSI", + "DISPLAY_DC": "A5", + "DISPLAY_RST": "A4", + "DISPLAY_MISO": "MISO", + "ACCELEROMETER_INT": "D5" + }, + "groundPins": [ + "GND" + ], + "threeVoltPins": [ + "+3V3" + ], + "spiPins": { + "MOSI": "MOSI", + "MISO": "MISO", + "SCK": "SCK" + }, + "i2cPins": { + "SDA": "SDA", + "SCL": "SCL" + }, + "onboardComponents": ["pixel"], + "marginWhenBreadboarding": [ + 0, + 0, + 80, + 0 + ] + } \ No newline at end of file diff --git a/libs/aebo-joystick/board.svg b/libs/aebo-joystick/board.svg new file mode 100644 index 00000000..9379c7d8 --- /dev/null +++ b/libs/aebo-joystick/board.svg @@ -0,0 +1,1191 @@ + + + + + + + + + + + + + + + + + + + D5 + A1 + LED + D8 + D8 + D9 + D4 + D9 + A0 + + diff --git a/libs/aebo-joystick/boardhd.svg b/libs/aebo-joystick/boardhd.svg new file mode 100644 index 00000000..9379c7d8 --- /dev/null +++ b/libs/aebo-joystick/boardhd.svg @@ -0,0 +1,1191 @@ + + + + + + + + + + + + + + + + + + + D5 + A1 + LED + D8 + D8 + D9 + D4 + D9 + A0 + + diff --git a/libs/aebo-joystick/config.ts b/libs/aebo-joystick/config.ts new file mode 100644 index 00000000..bed408a7 --- /dev/null +++ b/libs/aebo-joystick/config.ts @@ -0,0 +1,61 @@ +namespace config { + export const NUM_NEOPIXELS = 1; + + export const PIN_A0 = DAL.PA02; + export const PIN_A1 = DAL.PB08; + export const PIN_A2 = DAL.PB09; + export const PIN_A3 = DAL.PA04; + export const PIN_A4 = DAL.PA05; + export const PIN_A5 = DAL.PB02; + + export const PIN_D0 = DAL.PA11; + export const PIN_D1 = DAL.PA10; + export const PIN_D2 = DAL.PA14; + export const PIN_D3 = DAL.PA09; + export const PIN_D4 = DAL.PA08; + export const PIN_D5 = DAL.PA15; + export const PIN_D6 = DAL.PA20; + export const PIN_D7 = DAL.PA21; + export const PIN_D8 = DAL.PA06; + export const PIN_D9 = DAL.PA07; + export const PIN_D10 = DAL.PA18; + export const PIN_D11 = DAL.PA16; + export const PIN_D12 = DAL.PA19; + export const PIN_D13 = DAL.PA17; + export const PIN_LED = PIN_D13; + export const PIN_RX = DAL.PA11; + export const PIN_TX = DAL.PA10; + export const PIN_MISO = DAL.PA12; + export const PIN_MOSI = DAL.PB10; + export const PIN_SCK = DAL.PB11; + export const PIN_SCL = DAL.PA23; + export const PIN_SDA = DAL.PA22; + export const PIN_RXLED = DAL.PB03; + export const PIN_TXLED = DAL.PA27; + export const PIN_NEOPIXEL = DAL.PA06; + + export const PIN_FLASH_MISO = DAL.PA14; + export const PIN_FLASH_MOSI = DAL.PA08; + export const PIN_FLASH_SCK = DAL.PA09; + export const PIN_FLASH_CS = DAL.PA13; + + export const PIN_ACCELEROMETER_INT = PIN_D5; + + export const PIN_JACK_TX = PIN_TX; + export const PIN_JACK_COMMLED = PIN_TXLED; + + export const PIN_DISPLAY_CS = PIN_A2; + export const PIN_DISPLAY_SCK = PIN_SCK; + export const PIN_DISPLAY_MOSI = PIN_MOSI; + export const PIN_DISPLAY_DC = PIN_A4; + export const PIN_DISPLAY_RST = PIN_A5; + export const PIN_DISPLAY_MISO = PIN_MISO; + // export const PIN_DISPLAY_BL = PIN_D4; plugged to power + export const DISPLAY_CFG0 = 0x00000090; + export const DISPLAY_CFG1 = 0x000e14ff; + export const DISPLAY_CFG2 = 24; + export const DISPLAY_WIDTH = 160; + export const DISPLAY_HEIGHT = 128; +} + + diff --git a/libs/aebo-joystick/device.d.ts b/libs/aebo-joystick/device.d.ts new file mode 100644 index 00000000..8b5c6eb7 --- /dev/null +++ b/libs/aebo-joystick/device.d.ts @@ -0,0 +1,275 @@ +declare namespace pins { + //% fixedInstance shim=pxt::getPin(PIN_LED) + const LED: PwmOnlyPin; + //% fixedInstance shim=pxt::getPin(PIN_A0) + const A0: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_A1) + const A1: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_A2) + const A2: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_A3) + const A3: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_A4) + const A4: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_A5) + const A5: PwmPin; + + //% fixedInstance shim=pxt::getPin(PIN_D0) + const D0: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D1) + const D1: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D2) + const D2: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_D3) + const D3: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D4) + const D4: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D5) + const D5: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D6) + const D6: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_D7) + const D7: DigitalInOutPin; + + //% fixedInstance shim=pxt::getPin(PIN_D8) + const D8: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D9) + const D9: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_D10) + const D10: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_D11) + const D11: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_D12) + const D12: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_D13) + const D13: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_RX) + const RX: PwmPin; + //% fixedInstance shim=pxt::getPin(PIN_TX) + const TX: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_MISO) + const MISO: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_MOSI) + const MOSI: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SCK) + const SCK: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SCL) + const SCL: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_SDA) + const SDA: DigitalInOutPin; + + // TODO only checked the following two for Metro M0 + //% fixedInstance shim=pxt::getPin(PIN_RXLED) + const RXLED: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_TX) + const TXLED: DigitalInOutPin; + //% fixedInstance shim=pxt::getPin(PIN_NEOPIXEL) + const NEOPIXEL: DigitalInOutPin; +} + + + +declare namespace input { + /** + * Capacitive pin A0 + */ + //% block="touch A0" fixedInstance shim=pxt::getTouchButton(PIN_A0) + const touchA0: TouchButton; + + /** + * Capacitive pin A1 + */ + //% block="touch A1" fixedInstance shim=pxt::getTouchButton(PIN_A1) + const touchA1: TouchButton; + + /** + * Capacitive pin A2 + */ + //% block="touch A2" fixedInstance shim=pxt::getTouchButton(PIN_A2) + const touchA2: TouchButton; + + /** + * Capacitive pin A3 + */ + //% block="touch A3" fixedInstance shim=pxt::getTouchButton(PIN_A3) + const touchA3: TouchButton; + + /** + * Capacitive pin A4 + */ + //% block="touch A4" fixedInstance shim=pxt::getTouchButton(PIN_A4) + const touchA4: TouchButton; + + /** + * Capacitive pin A5 + */ + //% block="touch A5" fixedInstance shim=pxt::getTouchButton(PIN_A5) + const touchA5: TouchButton; + + /** + * Capacitive pin D8 + */ + //% block="touch D8" fixedInstance shim=pxt::getTouchButton(PIN_D8) + const touchD8: TouchButton; + + /** + * Capacitive pin D9 + */ + //% block="touch D9" fixedInstance shim=pxt::getTouchButton(PIN_D9) + const touchD9: TouchButton; +} + +declare namespace input { + + /** + * Button connecting A0 to GND. + */ + //% block="button A0" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A0,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA0: Button; + + /** + * Button connecting A1 to GND. + */ + //% block="button A1" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A1,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA1: Button; + + /** + * Button connecting A2 to GND. + */ + //% block="button A2" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A2,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA2: Button; + + /** + * Button connecting A3 to GND. + */ + //% block="button A3" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A3,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA3: Button; + + /** + * Button connecting A4 to GND. + */ + //% block="button A4" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A4,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA4: Button; + + /** + * Button connecting A5 to GND. + */ + //% block="button A5" fixedInstance + //% shim=pxt::getButtonByPin(PIN_A5,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonA5: Button; + + /** + * Button connecting D0 to GND. + */ + //% block="button D0" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D0,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD0: Button; + + /** + * Button connecting D1 to GND. + */ + //% block="button D1" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D1,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD1: Button; + + /** + * Button connecting D2 to GND. + */ + //% block="button D2" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D2,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD2: Button; + + /** + * Button connecting D3 to GND. + */ + //% block="button D3" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D3,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD3: Button; + + /** + * Button connecting D4 to GND. + */ + //% block="button D4" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D4,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD4: Button; + + /** + * Button connecting D5 to GND. + */ + //% block="button D5" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D5,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD5: Button; + + /** + * Button connecting D6 to GND. + */ + //% block="button D6" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D6,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD6: Button; + + /** + * Button connecting D7 to GND. + */ + //% block="button D7" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D7,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD7: Button; + + /** + * Button connecting D8 to GND. + */ + //% block="button D8" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D8,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD8: Button; + + /** + * Button connecting D9 to GND. + */ + //% block="button D9" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D9,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD9: Button; + + /** + * Button connecting D10 to GND. + */ + //% block="button D10" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D10,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD10: Button; + + /** + * Button connecting D11 to GND. + */ + //% block="button D11" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D11,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD11: Button; + + /** + * Button connecting D12 to GND. + */ + //% block="button D12" fixedInstance + //% shim=pxt::getButtonByPin(PIN_D12,BUTTON_ACTIVE_LOW_PULL_UP) + //% parts="buttons" + const buttonD12: Button; +} \ No newline at end of file diff --git a/libs/aebo-joystick/pxt.json b/libs/aebo-joystick/pxt.json new file mode 100644 index 00000000..92bc7399 --- /dev/null +++ b/libs/aebo-joystick/pxt.json @@ -0,0 +1,47 @@ +{ + "name": "aebo-joystick", + "description": "Support for AEBO Joystick", + "files": [ + "README.md", + "device.d.ts", + "config.ts", + "board.json", + "board.svg" + ], + "core": true, + "dependencies": { + "core---samd": "file:../core---samd", + "buttons": "file:../buttons", + "light": "file:../light", + "accelerometer": "file:../accelerometer", + "mixer---samd": "file:../mixer---samd", + "touch": "file:../touch", + "pixel": "file:../pixel", + "serial": "file:../serial", + "storage": "file:../storage" + }, + "public": true, + "compileServiceVariant": "samd21", + "firmwareUrl": "https://www.aeroboticsglobal.com", + "weight": 100, + "features": [ + "uf2", + "pixel", + "pinled", + "pind0", + "pind1", + "pina0", + "pina1", + "buttond0", + "buttond1", + "toucha0", + "toucha1", + "storage", + "light", + "screen", + "jacdac", + "music", + "accelerometer", + "lcd" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 199eee2b..12043667 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pxt-maker", - "version": "0.15.63", + "version": "0.15.62", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pxt-maker", - "version": "0.15.63", + "version": "0.15.62", "license": "MIT", "dependencies": { "pxt-common-packages": "9.5.1", @@ -3315,7 +3315,7 @@ "node_modules/lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==" + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -3479,7 +3479,7 @@ "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "node_modules/minimatch": { "version": "3.0.4", @@ -9754,7 +9754,7 @@ "lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==" + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" }, "lodash.uniq": { "version": "4.5.0", @@ -9875,7 +9875,7 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimatch": { "version": "3.0.4", diff --git a/package.json b/package.json index 98a8acf0..2b043267 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-maker", - "version": "0.15.63", + "version": "0.15.62", "description": "Microsoft MakeCode Maker Boards", "public": true, "keywords": [ @@ -43,7 +43,7 @@ "typescript": "^4.2.3" }, "dependencies": { - "pxt-common-packages": "9.5.10", + "pxt-common-packages": "9.5.1", "pxt-core": "7.5.27", "webusb": "^1.1.1" }, diff --git a/pxtarget.json b/pxtarget.json index 5f67a3a9..1f360587 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -104,7 +104,8 @@ "libs/jacdac-nrfbrain", "libs/jacdac-brain-f4", "libs/jacdac-brain-rp2040", - "libs/jacdac-iot-s2" + "libs/jacdac-iot-s2","libs/aebo-joystick" + ], "serial": { "useHF2": true,