diff --git a/docs/boards.md b/docs/boards.md
index fcdf5c58e..48c312ec4 100644
--- a/docs/boards.md
+++ b/docs/boards.md
@@ -41,7 +41,10 @@ This editor supports various maker boards, based on SAMD21, SAMD51, NRF52.
* imageUrl: /static/libs/redbear-ble-nano.jpg
---
-
+* name: Arduino_lilypad
+* url: /boards/Arduino_lilypad
+* imageUrl: /static/libs/redbear-ble-nano.jpg
+---
* name: Add your board
* url: /boards/add-a-new-board
* imageUrl: /static/libs/bead-servo.jpg
diff --git a/docs/boards/arduino_lilypad.md b/docs/boards/arduino_lilypad.md
new file mode 100644
index 000000000..df678a961
--- /dev/null
+++ b/docs/boards/arduino_lilypad.md
@@ -0,0 +1,9 @@
+```sim
+forever(function() {
+
+})
+```
+
+```package
+Arduino-lilypad
+```
\ No newline at end of file
diff --git a/docs/static/libs/lily_board_bb.png b/docs/static/libs/lily_board_bb.png
new file mode 100644
index 000000000..2232caeb4
Binary files /dev/null and b/docs/static/libs/lily_board_bb.png differ
diff --git a/libs/Arduino_lilypad/README.md b/libs/Arduino_lilypad/README.md
new file mode 100644
index 000000000..4aed180e2
--- /dev/null
+++ b/libs/Arduino_lilypad/README.md
@@ -0,0 +1,5 @@
+# arduino lily
+
+The arduino library.
+
+i reclaim no rights for this board- this is only for educational purpose
diff --git a/libs/Arduino_lilypad/board .json b/libs/Arduino_lilypad/board .json
new file mode 100644
index 000000000..0f1a841a0
--- /dev/null
+++ b/libs/Arduino_lilypad/board .json
@@ -0,0 +1,171 @@
+{
+ "driveDisplayName": "",
+ "visual": {
+ "image": "pkg://board.svg",
+ "useCrocClips": false,
+ "width": 208.2989959716797,
+ "height": 118.42015838623047,
+ "pinDist": 15,
+ "pinBlocks": [
+ {
+ "x": 132.46370717003558,
+ "y": 4.3731580708149,
+ "labels": [
+ "VBAT"
+ ]
+ },
+ {
+ "x": 112.72703733849399,
+ "y": 4.3731580708149,
+ "labels": [
+ "GND"
+ ]
+ },
+ {
+ "x": 92.99038595914656,
+ "y": 4.3731580708149,
+ "labels": [
+ "A4_D4_TX_MOSI"
+ ]
+ },
+ {
+ "x": 73.25372535370205,
+ "y": 4.3731580708149,
+ "labels": [
+ "A3_D3_RX_SCK"
+ ]
+ },
+ {
+ "x": 53.517050909111944,
+ "y": 102.85925227952634,
+ "labels": [
+ "3V3"
+ ]
+ },
+ {
+ "x": 73.25372535370205,
+ "y": 102.85925227952634,
+ "labels": [
+ "A1_D2_SCL_MISO"
+ ]
+ },
+ {
+ "x": 92.99038595914656,
+ "y": 102.85925227952634,
+ "labels": [
+ "A0_D1"
+ ]
+ },
+ {
+ "x": 112.72703733849399,
+ "y": 102.85925227952634,
+ "labels": [
+ "A2_D0_SDA"
+ ]
+ }
+ ],
+ "leds": [
+ {
+ "x": 185.376333394688,
+ "y": 99.02860797644898,
+ "w": 6.217042416665318,
+ "h": 6.2170332202557015,
+ "color": "#ff0000",
+ "label": "LED"
+ },
+ {
+ "x": 92.0207047046369,
+ "y": 38.39268871460768,
+ "w": 11.120971341395725,
+ "h": 10.030683027224555,
+ "color": "neopixel",
+ "label": "NEOPIXEL"
+ }
+ ],
+ "touchPads": [
+ {
+ "x": 92.99038595914656,
+ "y": 4.3731580708149,
+ "w": 11.385096048386105,
+ "h": 11.385112998295973,
+ "label": "A4"
+ },
+ {
+ "x": 73.25372535370205,
+ "y": 4.3731580708149,
+ "w": 11.385086822289031,
+ "h": 11.385112998295973,
+ "label": "A3"
+ },
+ {
+ "x": 92.99038595914656,
+ "y": 102.85925227952634,
+ "w": 11.385096048386105,
+ "h": 11.385094546074358,
+ "label": "A0"
+ }
+ ],
+ "buttons": [],
+ "reset": {
+ "x": 17.83250718937794,
+ "y": 45.50404575993516,
+ "w": 13.596367783800709,
+ "h": 13.596390332336691
+ }
+ },
+ "gpioPinMap": {
+ "VBAT": "VBAT",
+ "GND": "GND",
+ "A4_D4_TX_MOSI": "A4_D4_TX_MOSI",
+ "A4": "A4_D4_TX_MOSI",
+ "D4": "A4_D4_TX_MOSI",
+ "TX": "A4_D4_TX_MOSI",
+ "MOSI": "A4_D4_TX_MOSI",
+ "JACK_TX": "A4_D4_TX_MOSI",
+ "A3_D3_RX_SCK": "A3_D3_RX_SCK",
+ "A3": "A3_D3_RX_SCK",
+ "D3": "A3_D3_RX_SCK",
+ "RX": "A3_D3_RX_SCK",
+ "SCK": "A3_D3_RX_SCK",
+ "3V3": "3V3",
+ "A1_D2_SCL_MISO": "A1_D2_SCL_MISO",
+ "A1": "A1_D2_SCL_MISO",
+ "D2": "A1_D2_SCL_MISO",
+ "SCL": "A1_D2_SCL_MISO",
+ "MISO": "A1_D2_SCL_MISO",
+ "A0_D1": "A0_D1",
+ "A0": "A0_D1",
+ "D1": "A0_D1",
+ "A2_D0_SDA": "A2_D0_SDA",
+ "A2": "A2_D0_SDA",
+ "D0": "A2_D0_SDA",
+ "SDA": "A2_D0_SDA",
+ "LED": "LED",
+ "RESET": "RESET",
+ "NEOPIXEL": "NEOPIXEL"
+ },
+ "groundPins": [
+ "GND"
+ ],
+ "threeVoltPins": [
+ "3V3"
+ ],
+ "i2cPins": {
+ "SDA": "SDA",
+ "SCL": "SCL"
+ },
+ "onboardComponents": [
+ "pixel"
+ ],
+ "marginWhenBreadboarding": [
+ 0,
+ 0,
+ 80,
+ 0
+ ],
+ "spiPins": {
+ "MOSI": "MOSI",
+ "MISO": "MISO",
+ "SCK": "SCK"
+ }
+}
\ No newline at end of file
diff --git a/libs/Arduino_lilypad/board.svg b/libs/Arduino_lilypad/board.svg
new file mode 100644
index 000000000..760025f3a
--- /dev/null
+++ b/libs/Arduino_lilypad/board.svg
@@ -0,0 +1,280 @@
+
+
+
\ No newline at end of file
diff --git a/libs/Arduino_lilypad/boardhd.svg b/libs/Arduino_lilypad/boardhd.svg
new file mode 100644
index 000000000..760025f3a
--- /dev/null
+++ b/libs/Arduino_lilypad/boardhd.svg
@@ -0,0 +1,280 @@
+
+
+
\ No newline at end of file
diff --git a/libs/Arduino_lilypad/config.ts b/libs/Arduino_lilypad/config.ts
new file mode 100644
index 000000000..e3d1fc6e6
--- /dev/null
+++ b/libs/Arduino_lilypad/config.ts
@@ -0,0 +1,43 @@
+
+namespace config {
+ export const PIN_ONBOARD_DOTSTAR_DATA = DAL.PA00;
+ export const PIN_ONBOARD_DOTSTAR_CLOCK = DAL.PA01;
+
+
+ export const PIN_D0 = DAL.PD0;
+ export const PIN_D1 = DAL.PD1;
+ export const PIN_D2 = DAL.PD2;
+ export const PIN_D3 = DAL.PD3;
+ export const PIN_D4 = DAL.PD4;
+ export const PIN_D5 = DAL.PD5;
+ export const PIN_D6 = DAL.PD6;
+ export const PIN_D7 = DAL.PD7;
+ export const PIN_D8 = DAL.PB0;
+ export const PIN_D9 = DAL.PB1;
+ export const PIN_D10 = DAL.PB2;
+ export const PIN_D11 = DAL.PB3;
+ export const PIN_D12 = DAL.PB4;
+ export const PIN_D13 = DAL.PB5;
+
+ export const PIN_A0 = PIN_PC0;
+ export const PIN_A1 = PIN_PC1;
+ export const PIN_A2 = PIN_PC2;
+ export const PIN_A3 = PIN_PC3;
+ export const PIN_A4 = PIN_PC4;
+ export const PIN_A5 = PIN_PC5;
+
+ export const PIN_LED = DAL.PD2;
+
+ export const PIN_SDA = PIN_A4;
+ export const PIN_SCL = PIN_A5;
+
+ export const PIN_SCK = PIN_D13;
+ export const PIN_MISO = PIN_D12;
+ export const PIN_MOSI = PIN_D11;
+
+ export const PIN_RX = PIN_D0;
+ export const PIN_TX = PIN_D1;
+
+ // not supported
+ export const PIN_JACK_TX = PIN_TX;
+}
diff --git a/libs/Arduino_lilypad/device.d.ts b/libs/Arduino_lilypad/device.d.ts
new file mode 100644
index 000000000..eb261a1c0
--- /dev/null
+++ b/libs/Arduino_lilypad/device.d.ts
@@ -0,0 +1,131 @@
+declare namespace pins {
+ //% fixedInstance shim=pxt::getPin(PIN_LED)
+ const LED: PwmOnlyPin;
+
+ //% fixedInstance shim=pxt::getPin(PIN_D0)
+ const D0: PwmPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D1)
+ const D1: AnalogOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D2)
+ const D2: PwmPin;
+ //% 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: AnalogOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D7)
+ const D7: PwmPin;
+ //% 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: PwmPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D11)
+ const D11: PwmPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D12)
+ const D12: PwmPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D13)
+ const D13: PwmPin;
+ //% fixedInstance shim=pxt::getPin(PIN_A0)
+ const A0: AnalogOutPin;
+ //% 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_D13)
+ const D13: DigitalInOutPin;
+
+ //% fixedInstance shim=pxt::getPin(PIN_D4)
+ const SDA: DigitalInOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D5)
+ const SCL: DigitalInOutPin;
+
+ //% fixedInstance shim=pxt::getPin(PIN_D13)
+ const SCK: DigitalInOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D12)
+ const MISO: DigitalInOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D11)
+ const MOSI: DigitalInOutPin;
+
+ //% fixedInstance shim=pxt::getPin(PIN_D0)
+ const RX: DigitalInOutPin;
+ //% fixedInstance shim=pxt::getPin(PIN_D1)
+ const TX: DigitalInOutPin;
+}
+
+declare namespace input {
+ /**
+ * Capacitive pin D1
+ */
+ //% block="touch D1" fixedInstance shim=pxt::getTouchButton(PIN_D1)
+ const touchD1: TouchButton;
+
+ /**
+ * Capacitive pin D3
+ */
+ //% block="touch D3" fixedInstance shim=pxt::getTouchButton(PIN_D3)
+ const touchD3: TouchButton;
+
+ /**
+ * Capacitive pin D4
+ */
+ //% block="touch D4" fixedInstance shim=pxt::getTouchButton(PIN_D4)
+ const touchD4: TouchButton;
+
+ /**
+ * 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;
+}
+
+
diff --git a/libs/Arduino_lilypad/pxt.json b/libs/Arduino_lilypad/pxt.json
new file mode 100644
index 000000000..7d867a62a
--- /dev/null
+++ b/libs/Arduino_lilypad/pxt.json
@@ -0,0 +1,57 @@
+{
+ "name": "arduino lilypad",
+ "description": "Support for lilypad arduino board",
+ "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",
+ "mixer---samd": "file:../mixer---samd",
+ "touch": "file:../touch",
+ "pixel": "file:../pixel"
+ },
+ "public": true,
+ "compileServiceVariant": "samd21",
+ "firmwareUrl":"https://www.microchip.com/sitesearch/search/All/Atmega32",
+ "features": [
+ "uf2",
+
+ "i2c",
+ "pixel",
+ "pinled",
+ "pind0",
+ "pind1",
+ "pind2",
+ "pind3",
+ "pind4",
+ "pind5",
+ "pind6",
+ "pind7",
+ "pind8",
+ "pind9",
+ "pind10",
+ "pind11",
+ "pind12",
+ "pind13",
+ "pina0",
+ "pina1",
+ "pina2",
+ "pina3",
+ "pina4",
+ "pina5",
+ "buttond0",
+ "buttond1",
+ "touchd0",
+ "touchd1",
+ "light",
+ "jacdac",
+ "music"
+ ]
+}
\ No newline at end of file
diff --git a/libs/Arduino_lilypad/svg_mini.bib b/libs/Arduino_lilypad/svg_mini.bib
new file mode 100644
index 000000000..4210ba245
--- /dev/null
+++ b/libs/Arduino_lilypad/svg_mini.bib
@@ -0,0 +1,2 @@
+
+svgo --config=svgo.yml libs/arduino_lilypad/boardhd.svg -o libs/arduino_lilypad/board.svg
diff --git a/libs/Arduino_lilypad/test.md b/libs/Arduino_lilypad/test.md
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/libs/Arduino_lilypad/test.md
@@ -0,0 +1 @@
+
diff --git a/libs/adafruit-trinket-m0/pxt.json b/libs/adafruit-trinket-m0/pxt.json
index 5612360ce..2b192f809 100644
--- a/libs/adafruit-trinket-m0/pxt.json
+++ b/libs/adafruit-trinket-m0/pxt.json
@@ -19,7 +19,7 @@
},
"public": true,
"compileServiceVariant": "samd21",
- "firmwareUrl": "https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-circuitpython/uf2-bootloader-details#updating-the-bootloader",
+ "firmwareUrl":" https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-circuitpython/uf2-bootloader-details#updating-the-bootloader",
"features": [
"uf2",
"i2c",
diff --git a/pxtarget.json b/pxtarget.json
index 5f67a3a9b..bb4d28ea7 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",
+ "Arduino_lilypad"
],
"serial": {
"useHF2": true,