Commit Graph

327 Commits

Author SHA1 Message Date
jon 0aa7eb1141 added ability to set/get the free ram byte on pcf85063a 2022-06-27 16:49:10 +01:00
Phil Howard b0cfb12b20 SH1107: Support for alternate i2c address.
Add `i2c_address` option to MicroPython PicoGraphics.
2022-06-27 14:18:24 +01:00
Phil Howard de967fd528 fatfs: Enable FF_USE_STRFUNC for f_gets. 2022-06-24 12:41:29 +01:00
Phil Howard b497b87c95 UC8159: Port to PicoGraphics/DisplayDriver. 2022-06-24 11:03:29 +01:00
Phil Howard f1f3d55a8c UC8159: Fix nibble order properly this time. 2022-06-23 16:35:33 +01:00
Phil Howard c428329a19 UC8159: Swap nibbles. Add colours enum. 2022-06-23 16:35:33 +01:00
Phil Howard c6074963fa UC8159: Basic driver 2022-06-23 16:35:32 +01:00
Phil Howard 0e72369c7b UC8151: Rotation support. 2022-06-23 16:30:42 +01:00
Phil Howard 6b232ddb30 UC8151: Invert by default.. 2022-06-23 16:12:58 +01:00
Phil Howard 04d8d66390 UC8151: New DisplayDriver based UC8151 driver.
HACK: Adds PicoGraphics_Pen1BitY to work around the UC8151 weird addressing.

TODO: Replace hack with an in-place transform to UC8151 pixel order from Pen1Bit.
2022-06-23 14:30:36 +01:00
Phil Howard 646bd1a9b0 UC8151: Refactor to uc8151_legacy. 2022-06-23 13:57:25 +01:00
Phil Howard 76715e45f8 ST7789: Convert Parallel IO to PIO + DMA.
Make display updates around 4x faster. Requires a PIO + SM to run Tufty 2040.
2022-06-17 11:03:55 +01:00
jon 360bf4310c SH1107: Add driver and example.
Add 1bit pen mode to PicoGraphics.

TODO:

* Rotation support
* Sizes other than 128x128 support
2022-06-15 16:57:40 +01:00
Phil Howard 1b68e498d4 ST7789/PicoGraphics: Update docs. 2022-06-13 20:12:03 +01:00
Phil Howard 62818a5f49 PicoGraphics: Palettes as RGB, Scanline convert with callback. 2022-06-13 20:12:03 +01:00
Phil Howard a558d35cab PicoGraphics: Remove last vestiges of template approach. 2022-06-13 20:12:03 +01:00
Phil Howard 1d32b967c2 ST7789: Separate code paths for future DMA/PIO support. 2022-06-13 20:12:03 +01:00
Phil Howard 3d489a9383 ST7789: 240x240 Handle unsupported rotations gracefully. 2022-06-13 20:12:03 +01:00
Phil Howard 4585e5ec0f ST7789: Fix 240x240 display rotations. 2022-06-13 20:12:03 +01:00
Phil Howard 4848e7ba59 PicoGraphics/ST7789/ST3375: Fixup C++ examples and libraries. 2022-06-13 20:12:03 +01:00
Phil Howard 67f1331b23 ST7789 -> PicoGraphics
* Absorb ST7735 support into the generic ST7789 driver and rename to PicoGraphics
* Delete obsolete MicroPython modules
* Refactor PicoGraphics to inherited class for each pen type
* Refactor ST7789 and ST7735 to derive from DisplayDriver
* Allow user to set pen_type in MicroPython constructor for RGB565, RGB332, P8 and P4 modes
2022-06-13 20:11:49 +01:00
Phil Howard 1a251822f5 ST7735: Update 160x80 LCD to new PicoGraphics<PenRGB565> 2022-06-13 20:11:09 +01:00
Phil Howard 7e4725d1cd ST7789/PicoGraphics: Templated framebuffer formats. 2022-06-13 20:11:09 +01:00
Phil Howard 13f0813d8a ST7789/PicoDisplay: Collapse make_new into one using pimoroni_bus. 2022-06-13 20:11:09 +01:00
Phil Howard a483b2aad4 ST7789/PicoGraphics: Refactor for init & rotation. 2022-06-13 20:11:09 +01:00
Phil Howard ef6179e77d ST7789/PicoGraphics: Refactor & make modes more explicit. 2022-06-13 20:11:09 +01:00
Phil Howard 51ad7edb09 Prefer RGB332, add palette management functions 2022-06-13 20:11:09 +01:00
Phil Howard 7abe4aae7f ST7789: Experimental 8bit framebuffer. 2022-06-13 20:11:09 +01:00
Jonathan Williamson 7f5546f29a Tufty2040: Initial screen bringup. 2022-06-13 20:11:09 +01:00
Phil Howard c526c3ce6e PMS5003: Basic PMS5003 active-mode only driver. 2022-06-13 18:45:58 +01:00
Philip Howard 8d329ccdd4
Merge pull request #378 from pimoroni/pcf85063a
Support for PCF85063A RTC
2022-06-13 18:41:49 +01:00
Phil Howard 496c1a3b45 BME280: Correctly set device settings. 2022-06-10 11:37:13 +01:00
ZodiusInfuser f791fa1b64 Tidied and reordered rtc class 2022-05-30 14:40:36 +01:00
Phil Howard 83b6331094 Drop obsolete MicroPython binding compat constructors. 2022-05-30 11:52:37 +01:00
Jonathan Williamson 755da537dd fixed bug in set_timer() 2022-05-30 09:59:29 +01:00
Jonathan Williamson 4a5df45573 finishing rtc driver and demo 2022-05-30 09:59:29 +01:00
Jonathan Williamson 48c502c3a1 initial rtc driver and example 2022-05-30 09:59:29 +01:00
Phil Howard bc0390b86c MicroPython: Use placement new to alloc classes on GC_HEAP 2022-05-23 15:34:49 +01:00
Philip Howard db60553322
Merge pull request #327 from pimoroni/feature/merged-st7789
ST7789: Create generic display driver
2022-05-18 13:37:56 +01:00
Philip Howard 698dd4d2c7
Merge pull request #360 from pimoroni/patch-vl53l5cx-firmware-sideload
Sideload vl53l5cx firmware to avoid bloating MicroPython binary
2022-05-18 13:13:37 +01:00
ZodiusInfuser dbb4b9d3fd Fix for broken asserts in ServoCluster 2022-05-18 12:41:39 +01:00
Phil Howard aeceefea59 VL53L5CX: Sideload firmware from user-supplied .bin 2022-05-17 12:33:07 +01:00
Phil Howard 8e1e9df002 ST7789: Refactor and Bugfixes
* Make ST7789 accept only full config with SPI pins
* Make Generic ST7789 wrapper library handle "slot"
* Update Round LCD and 240x240 Square LCD
* Remove Python Round LCD and 240x240 LCD modules (we need the space!)
* Remove C++ Round LCD and 240x240 LCD libraries (they're a little redundant!)
* Fix garbage collected framebuffer bug in Python ST7789
* Deprecate "flip" in favour of "configure_display"
* Tidy up ST7789, remove dead/unused/commented code
2022-05-12 18:58:33 +01:00
ZodiusInfuser 305462d33c
Merge branch 'main' into motor-and-encoder 2022-05-12 17:02:50 +01:00
Phil Howard 813b7a401a ST7789: Support rotation for PD and PD2. 2022-05-12 12:04:55 +01:00
ZodiusInfuser b26d13bab1 Fix for motor duty cycle not obeying direction 2022-05-10 18:34:59 +01:00
ZodiusInfuser b782287c63 Added readme for encoder 2022-05-05 16:54:02 +01:00
ZodiusInfuser 71a7a80218 Finalise motor API 2022-04-29 13:02:00 +01:00
ZodiusInfuser 22f29743c1 Missing brace 2022-04-29 00:27:27 +01:00
ZodiusInfuser 898e4bace4 Finalised motor cluster frequency, and disabled loading zone 2022-04-29 00:09:19 +01:00
ZodiusInfuser 15e5eaa890 Finished C++ examples and tweaked MP examples 2022-04-28 21:23:18 +01:00
Phil Howard 3afead416a VL53L5CX: Bringup Motion and add example. 2022-04-28 14:38:34 +01:00
ZodiusInfuser 415a1e559a Setup and partial implementations of C++ examples 2022-04-26 23:15:13 +01:00
ZodiusInfuser 0efe210c4c Added in PH_EN motor driver, and zeropoint support 2022-04-25 16:16:02 +01:00
ZodiusInfuser 7608e3f293 Encoder driver finalising 2022-04-25 12:28:42 +01:00
ZodiusInfuser 2eb6a0cf3e Changed encoder folder and gave it a namespace 2022-04-22 16:23:45 +01:00
ZodiusInfuser ba076ccc7b Renamed Snapshot back to Capture 2022-04-22 16:06:54 +01:00
ZodiusInfuser 652612fc31 Removed old C++ motor implementation 2022-04-22 13:59:40 +01:00
Phil Howard 4b86faaf12 VL53L5CX: Fix memory leak. Add get_resolution. 2022-04-20 19:18:53 +01:00
ZodiusInfuser 8ef0d33f0c Finalised more examples 2022-04-20 18:55:39 +01:00
Phil Howard fcd4914cbb VL53L5CX: MicroPython bindings. 2022-04-20 14:33:00 +01:00
Phil Howard f79b2efa9e VL53L5CX: Fix 32k runtime allocation in platform i2c WrMulti 2022-04-20 14:32:13 +01:00
Phil Howard 637f6d18ca VL53L5CX: Class wrapper 2022-04-19 17:24:06 +01:00
ZodiusInfuser 180df9e085 Merge branch 'motor-pio' into motor-and-encoder 2022-04-19 16:28:12 +01:00
ZodiusInfuser 9472a1f109 Fix for hard lock when taking many snapshots 2022-04-19 15:44:31 +01:00
Phil Howard 6028bc16b6 VL53L5CX: Initial bringup 2022-04-19 13:01:54 +01:00
ZodiusInfuser 0bbd07164d Removed unneeded include 2022-04-17 16:52:16 +01:00
ZodiusInfuser 90fd4b8fb9 Encoder mostly implemented, now with MP support 2022-04-17 16:16:59 +01:00
ZodiusInfuser 70b589d431 Fixed inability to use more than one encode, plus other things 2022-04-13 20:12:44 +01:00
ZodiusInfuser a5572e5e44 Fixes post rebase 2022-04-13 11:29:40 +01:00
ZodiusInfuser 55ee058d3e Created a quadrature encoder reader using the Pico's PIO 2022-04-13 10:46:38 +01:00
ZodiusInfuser 5f6e4a3096 Finalised C++ motor implementation 2022-04-11 13:35:53 +01:00
ZodiusInfuser f3c0a305f2 Improvements to MotorState 2022-04-09 01:41:42 +01:00
ZodiusInfuser ac3edafbf4 Contined motor dev 2022-04-05 16:53:36 +01:00
ZodiusInfuser 9a9c3832a2 Various motor work 2022-04-04 20:00:03 +01:00
ZodiusInfuser e59bdc34c4 Added initial structure of new motor classes 2022-03-30 15:50:12 +01:00
ZodiusInfuser 8a36102c53 Merged in old motor implementation 2022-03-30 15:50:12 +01:00
Phil Howard 732e59b314 Pico Wireless: Driver Rewrite
* Use a single common function prototype for all (but two) commands
* Remove "last param" from every param, in favour of an "end_cmd"
* Rename "send_cmd" to "start_cmd" to better reflect what it does
* Replace hard-coded param counts with macro (sizeof(params) / sizeof(inParam))
* Eliminate common causes of bugs
* Try to document some functions
* Correct some types (wl_enc_type, peek as bool)
* Handle timeouts & sleep states
* Successful command exits sleep
2022-03-30 15:30:11 +01:00
ZodiusInfuser 2e2b2002c3 Fix for CI compiler error 2022-03-30 14:52:53 +01:00
ZodiusInfuser 5f3ac9411b Minor internal function rename, and var assignment 2022-03-30 14:29:02 +01:00
ZodiusInfuser 5192e8bc87 Tidied up some debug code 2022-03-30 14:29:02 +01:00
ZodiusInfuser 8d0ae57f2a Changed type to uint8_t 2022-03-30 14:29:02 +01:00
ZodiusInfuser 1efa75a590 Renamed C++ Servo functions to match MP 2022-03-30 14:29:02 +01:00
ZodiusInfuser c5be5be759 Made calibration C++ better match MP 2022-03-30 14:29:02 +01:00
ZodiusInfuser f9a1979d8d Added AnalogMux to C++ 2022-03-30 14:29:02 +01:00
ZodiusInfuser 1b79e85be7 Added offset parameter to Analog, and fixed it not switching between ADC pins 2022-03-30 14:29:02 +01:00
ZodiusInfuser 00408d3b2b Improved servocluster teardown 2022-03-30 14:29:02 +01:00
ZodiusInfuser 44412365b8 Tidying up of calibration 2022-03-30 14:29:02 +01:00
ZodiusInfuser 09e69ff8d9 Improvements to calibration and a calib example 2022-03-30 14:29:02 +01:00
ZodiusInfuser 6f41834082 Various changes to handle class cleanup 2022-03-30 14:29:02 +01:00
ZodiusInfuser 6c16611e88 Much optimisation of PWM generation code 2022-03-30 14:29:02 +01:00
ZodiusInfuser f83521d3ff Expanded list/tuple support to more functions 2022-03-30 14:29:02 +01:00
ZodiusInfuser e1317f432b Expanded options for enabling and disabling servos, and fixed some off-by-one errors. 2022-03-30 14:29:02 +01:00
ZodiusInfuser c352a795a8 Fix for servo cluster frequency being inaccurate at the upper end 2022-03-30 14:29:02 +01:00
ZodiusInfuser 65268098c6 Fix for pulse width bug when changing from high to low frequencies if there was an overrun 2022-03-30 14:29:02 +01:00
ZodiusInfuser d96db62353 Fix for frequency changes enabling servo PWM 2022-03-30 14:29:02 +01:00
ZodiusInfuser 2819fb0020 Exposed servo value loading 2022-03-30 14:29:02 +01:00
ZodiusInfuser 59014f1e86 MP now supports assigning a new calibration to a servo 2022-03-30 14:29:02 +01:00
ZodiusInfuser 176362a49b Updated MP bindings to support latest servo features 2022-03-30 14:29:02 +01:00
ZodiusInfuser e07e248d9e Big refactor of clusters to reduce memory and improve usability 2022-03-30 14:29:02 +01:00