Jump to content



Photo
- - - - -

Preview release: Pinscape Pico


  • Please log in to reply
180 replies to this topic

#101 FredBear

FredBear

    Enthusiast

  • Gold Supporter
  • 50 posts

  • Flag: Australia

  • Favorite Pinball: Eight Ball Deluxe

Posted 10 June 2025 - 08:30 AM

That's EXACTLY what I was after, mjr - thanks a heap!

 

I'm quite challenged when it comes to coding, so I really do appreciate you providing me with those code snippits as I never would have working it out on my own. I too use shifted buttons for system volume control via PinVol however I use the Start button for Shift. I makes it easy to keep the peace when told to "turn that damn thing down" :)

 

FYI there appears to be a typo in your example - for Right Flipper shifted the source is referenced as GP 9, whereas for Right Flipper regular it is GP 11.



#102 Gal a

Gal a

    Neophyte

  • Members
  • Pip
  • 6 posts

  • Flag: Hungary

  • Favorite Pinball: Cirqus Voltaire

Posted 12 June 2025 - 06:06 PM

Sorry for the absolutely noob question, but the MPU-6050 can be used with the Pinscape Pico? I'm guessing it is not, but not sure. Should I order an LIS3DSH module instead? Thank you in advance!



#103 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 12 June 2025 - 08:38 PM

Sorry for the absolutely noob question, but the MPU-6050 can be used with the Pinscape Pico? I'm guessing it is not, but not sure. Should I order an LIS3DSH module instead? Thank you in advance!

 

Right, MPU-6050 isn't currently supported.  You can find the list of devices that the software can handle in the Config Ref under Peripheral Devices > Accelerometers - the current list is LIS3DH, LIS3DSH, MC3416, and MXC6655XA.  Of those, LIS3DSH is probably the highest quality device in terms of resolution and noise, but it's long out of production and seems to be quite difficult to find.  LIS3DH has the next best specs and is easy to source.

 

It would certainly be possible to add a driver for MPU-6050 in the future, although I haven't really been considering that one since it's out of production.


Edited by mjr, 12 June 2025 - 08:42 PM.


#104 Gal a

Gal a

    Neophyte

  • Members
  • Pip
  • 6 posts

  • Flag: Hungary

  • Favorite Pinball: Cirqus Voltaire

Posted 13 June 2025 - 05:21 AM

Sorry for the absolutely noob question, but the MPU-6050 can be used with the Pinscape Pico? I'm guessing it is not, but not sure. Should I order an LIS3DSH module instead? Thank you in advance!

 
Right, MPU-6050 isn't currently supported.  You can find the list of devices that the software can handle in the Config Ref under Peripheral Devices > Accelerometers - the current list is LIS3DH, LIS3DSH, MC3416, and MXC6655XA.  Of those, LIS3DSH is probably the highest quality device in terms of resolution and noise, but it's long out of production and seems to be quite difficult to find.  LIS3DH has the next best specs and is easy to source.
 
It would certainly be possible to add a driver for MPU-6050 in the future, although I haven't really been considering that one since it's out of production.

Thank you! As I said I am an absolute noob. In Hungary the 6050 was easily attainable for me, I didn’t know that is out of production. I never considered the driver would be the problem, since I thought the pico reads raw data from the I2C. But that clearly shows how much I have to learn. Anyway I just ordered a lis3dsh from aliexpress. Thank you for this awesome program!

#105 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 13 June 2025 - 05:46 PM

since I thought the pico reads raw data from the I2C. 

 

The Pico does indeed happily connect to anything I2C natively, but I2C is just a bus that moves bits.  You still need software specific to each peripheral that sends and receives the correct series of bit commands specific to the device at the other end of the I2C wire.  Pinscape has an internal abstraction for accelerometers in general, but it has to be specialized for each concrete device's command set, which is unique for every device (there's no "standard command set" for accelerometers; the manufacturers all just make up their own peculiar rules for each individual sensor.) That's the "driver" I mentioned.  I should add that this isn't like Windows device drivers where you download something from Microsoft and install it on your system; it's just an abstraction inside Pinscape that has to be implemented per peripheral device.


Edited by mjr, 13 June 2025 - 05:56 PM.


#106 Gal a

Gal a

    Neophyte

  • Members
  • Pip
  • 6 posts

  • Flag: Hungary

  • Favorite Pinball: Cirqus Voltaire

Posted 14 June 2025 - 04:16 PM

 

since I thought the pico reads raw data from the I2C. 

 

The Pico does indeed happily connect to anything I2C natively, but I2C is just a bus that moves bits.  You still need software specific to each peripheral that sends and receives the correct series of bit commands specific to the device at the other end of the I2C wire.  Pinscape has an internal abstraction for accelerometers in general, but it has to be specialized for each concrete device's command set, which is unique for every device (there's no "standard command set" for accelerometers; the manufacturers all just make up their own peculiar rules for each individual sensor.) That's the "driver" I mentioned.  I should add that this isn't like Windows device drivers where you download something from Microsoft and install it on your system; it's just an abstraction inside Pinscape that has to be implemented per peripheral device.

 

Thank you for the explanations! It is much cleaner now.



#107 mkotek

mkotek

    Neophyte

  • Members
  • Pip
  • 9 posts

  • Flag: Poland

  • Favorite Pinball: Dragon's Lair

Posted 15 June 2025 - 03:48 PM

@mjr

Following the topic and starting build on Pico myself (having burned my last KL25Z today), I thought, it would be great if you could post a fully working copy of your config file. I don't mind use of any specific hardware modules for accelerometer or anything, but having a full working example would greatly speed up things. Especially I am thinking about buttons config with default config used for KL25Z (nighmode and shift keys) as well as a couple of toys defined for output (say beacons, gear motor and shaker motor + solenoids). I do not think about expansion boards at the moment, just basic configuration, where PWM outputs control green modules with MOSFETs.

Would you be able to post something like that?



#108 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 15 June 2025 - 07:28 PM

Following the topic and starting build on Pico myself (having burned my last KL25Z today), I thought, it would be great if you could post a fully working copy of your config file.

 

The template configurations provided with the Config Tool were meant to serve that purpose.  The template for the DIY expansion boards is exactly that, a full copy of the concrete settings for that configuration.  The generic "Starter" config is more of a template for ANY configuration, with copy-and-paste examples that you have to go through and select from, to match your hardware setup.  It's in that abstract format because I have no idea how you want to arrange your various devices and GPIO inputs and so on - there are bazillions of possible ways to do that, so I can't just assume you're going to connect a button to GPIO7 and a particular accelerometer to GPIO2 and GPIO3, etc.  So I wrote it in the form of examples that you can select from and customize to fit your hardware setup.

 

I'm hoping at some point to add some Build Guide sections for the Pico, and when I do that, I'm thinking I'll include a chapter that goes through a concrete example of a standalone setup, with specific selections for button inputs and peripheral devices, showing the wiring needed and the corresponding JSON settings.  It wouldn't be THE standalone setup, it would just be one of the gazilliion possible standalone setups, but it would at least be a concrete entry point for seeing how things fit together.  That's kind of a big documentation job, though, and I haven't gotten to it yet.  The bare JSON file from such a setup wouldn't be very helpful on its own, since you'd have to also know how to wire things to achieve the physical configuration it's describing.


Edited by mjr, 15 June 2025 - 07:30 PM.


#109 mkotek

mkotek

    Neophyte

  • Members
  • Pip
  • 9 posts

  • Flag: Poland

  • Favorite Pinball: Dragon's Lair

Posted 15 June 2025 - 08:33 PM

Well, I haven't meant this to be the template for configuration, rather a real work example to see, how it works on an actual board (fully working, real life config). If you do not like the idea of putting it on a GitHub as a reference, can you post it here?

#110 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 17 June 2025 - 03:37 PM

Hello,

I have a lis3dsh accelerometer and I get this error in log:

PinscapePico v0.1.13, build 202505272235
 
0000/01/01 00:00:00 Info:    Flash JEDEC ID recognized as Winbond W25Q16JV-IQ/JQ, capacity 2097152 bytes
0000/01/01 00:00:00 Info:    SFDP basic parameters table found, capacity entry found [4:7]{ ff ff ff 00 }, 2097152 bytes
0000/01/01 00:00:00 Info:    Flash file system mounted; 266240 bytes allocated to 4 files
0000/01/01 00:00:00 Debug:   File "config.json" opened for read, 32881 us
0000/01/01 00:00:00 Config:  Config file loaded OK; parsed JSON memory usage: 5,848 bytes
0000/01/01 00:00:00 Info:    I2C0 bus reset OK, 0 clocks sent
0000/01/01 00:00:00 Config:  I2C0 configured on SDA=GP20, SCL=GP21; speed: 400000; DMA channels: TX 0, RX 1
0000/01/01 00:00:00 Error:   LIS3DSH device initialization failed; interrupt GP7, dynamic range +/- 2g
0000/01/01 00:00:00 Config:  Pico ADC configured; 1 channel, GPIO 28,
0000/01/01 00:00:00 Config:  Open Pinball Device HID configured
0000/01/01 00:00:00 Config:  USB CDC console enabled, output buffer size 8192, history size 256
0000/01/01 00:00:00 Config:  Button 0: Pushbutton created, action Key(0xE1), source GP6, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 1: Pushbutton created, action Key(0xE5), source GP19, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 2: Pushbutton created, action Key(0xE4), source GP26, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 3: Pushbutton created, action Key(0x28), source GP22, shift(mask 00, bits 00)
0000/01/01 00:00:00 Info:    Flash struct 'lis3dsh.acc' not found (flash storage status code -1); using defaults
0000/01/01 00:00:00 Config:  Nudge input configured on LIS3DSH; nudge x = device +X, y = +Y, z = +Z
0000/01/01 00:00:00 Config:  Plunger: Potentiomter(Pico on-board ADC channel 0) sensor source selected
0000/01/01 00:00:00 Info:    Pico ADC configured; clock div 95.00, DMA channels 2,3, round-robin mask 0x04
0000/01/01 00:00:00 Config:  Plunger configured, sensor data source is Potentiomter(Pico on-board ADC channel 0)
0000/01/01 00:00:00 Info:    Kb LED 01
 
connections are ok and Json config is the following:

     lis3dsh: {
        i2c: 0,
        addr: 0x1D,
        interrupt: 7,
        gRange: 2,
  
     },

what's wrong here? this is the module I'm using (purple color): https://www.aliexpre....37fd1802ADDvQf
 
Thanks

Edited by parallaxx, 17 June 2025 - 03:52 PM.


#111 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 17 June 2025 - 04:29 PM

It'll help to turn on debug in the logging.filter string to get some more detail in the log.

 

Next, in the config tool, you can go to the menu and select Device > I2C Bus Scan.

 

If a device shows up there at address $1D, you can go into the console (see serialPorts in the Config Reference) to run some more advanced I2C diagnostics, such as:

 

i2c0 --rx $1D $0F 1

 

That will attempt to read the WHOAMI register from the device, which should be 0x33 for a LIS3DH.



#112 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 17 June 2025 - 04:47 PM

It'll help to turn on debug in the logging.filter string to get some more detail in the log.

 

Next, in the config tool, you can go to the menu and select Device > I2C Bus Scan.

 

If a device shows up there at address $1D, you can go into the console (see serialPorts in the Config Reference) to run some more advanced I2C diagnostics, such as:

 

i2c0 --rx $1D $0F 1

 

That will attempt to read the WHOAMI register from the device, which should be 0x33 for a LIS3DH.

This is what I get from serial output:

 

===========================================
PinscapePico v0.1.13, build 202505272235
 
0000/01/01 00:00:00 Info:    Flash JEDEC ID recognized as Winbond W25Q16JV-IQ/JQ, capacity 2097152 bytes
0000/01/01 00:00:00 Info:    SFDP basic parameters table found, capacity entry found [4:7]{ ff ff ff 00 }, 2097152 bytes
0000/01/01 00:00:00 Info:    Flash file system mounted; 266240 bytes allocated to 4 files
0000/01/01 00:00:00 Debug:   File "config.json" opened for read, 32900 us
0000/01/01 00:00:00 Config:  Config file loaded OK; parsed JSON memory usage: 5,832 bytes
0000/01/01 00:00:00 Info:    I2C0 bus reset OK, 0 clocks sent
0000/01/01 00:00:00 Config:  I2C0 configured on SDA=GP20, SCL=GP21; speed: 400000; DMA channels: TX 0, RX 1
0000/01/01 00:00:00 Error:   LIS3DSH device initialization failed; interrupt GP7, dynamic range +/- 2g
0000/01/01 00:00:00 Config:  Pico ADC configured; 1 channel, GPIO 28,
0000/01/01 00:00:00 Config:  Open Pinball Device HID configured
0000/01/01 00:00:00 Config:  USB CDC console enabled, output buffer size 8192, history size 256
0000/01/01 00:00:00 Config:  Button 0: Pushbutton created, action Key(0xE1), source GP6, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 1: Pushbutton created, action Key(0xE5), source GP19, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 2: Pushbutton created, action Key(0xE4), source GP26, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 3: Pushbutton created, action Key(0x28), source GP22, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Plunger: Potentiomter(Pico on-board ADC channel 0) sensor source selected
0000/01/01 00:00:00 Info:    Pico ADC configured; clock div 95.00, DMA channels 2,3, round-robin mask 0x04
0000/01/01 00:00:00 Debug:   File "PotPlunger.cal" opened for read, 150 us
0000/01/01 00:00:00 Config:  Plunger configured, sensor data source is Potentiomter(Pico on-board ADC channel 0)
0000/01/01 00:00:00 Info:    Kb LED 01
2025/06/17 18:45:37 Debug:   File "config.json" opened for read, 36438 us
 
Pinscape Pico command console - Firmware v0.1.13, build 202505272235
Unit #1, Main Pico
> i2c0 --rx $1D $0F 1
2025/06/17 18:46:06 Error:   Ad hoc I2C TX to 0x1d (1 bytes) failed, error code -1 (generic error)
>
 
 
seems that no devices are present at that address

Edited by parallaxx, 17 June 2025 - 04:55 PM.


#113 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 17 June 2025 - 06:14 PM

Yep, it looks like the device isn't working.  I assume that the bus scan didn't turn up anything either. 

 

If all of the GPIO and power/ground connections to the accelerometer board look good, I'd guess the device is just DOA.  Do you have any equipment for testing it separately from the Pico, such as a Bus Pirate board?  I'm pretty suspicious of the quality of anything from AliExpress, eBay, and Amazon third-party sellers these days, since I've had a number of bad buys myself and heard several similar anecdotes lately.  If you were in the US, I'd point you straight to the Adafruit web site, where you can get a LIS3DH that will definitely work, but the international shipping is probably prohibitive.  You might take a look at Farnell to see if they sell the Adafruit board.  Mouser definitely does, and they have an EU site that might have more reasonable shipping costs - search for part number 485-2809.



#114 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 17 June 2025 - 07:48 PM

Thank you. I will try an Adafruit module.

 

I have a question: is there a way to trigger output devices like in old Pinscape?


Edited by parallaxx, 17 June 2025 - 08:32 PM.


#115 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 17 June 2025 - 08:44 PM

> I have a question: is there a way to trigger output devices like in old Pinscape?

 

Is the Output Ports tab in the Config Tool what you're looking for, or are you talking about something else?



#116 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 17 June 2025 - 08:53 PM

Yes, how can I trigger a solenoid in the Output Ports tab?

 

EDIT: Solved (you just need to move sliders)


Edited by parallaxx, 17 June 2025 - 09:31 PM.


#117 Billiam

Billiam

    Neophyte

  • Members
  • Pip
  • 1 posts

  • Flag: ---------

  • Favorite Pinball: Stargate

Posted 28 June 2025 - 05:39 PM

You mentioned that the Pro/JLCPCB assembly version of the expansion board(s) wasn't cost effective in small numbers. Do you remember roughly what the cost looked like?



#118 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 28 June 2025 - 09:40 PM

You mentioned that the Pro/JLCPCB assembly version of the expansion board(s) wasn't cost effective in small numbers. Do you remember roughly what the cost looked like?

 

I wasn't able to get a full quote, because they don't have some of the parts in their inventory.  For parts they don't stock, you have to have them pre-buy the parts before you can price the order, which means there's some up-front cost (and lead time) before you can even start pricing out an order.  With that in mind, JLCPCB is by far the most cost-effective option for small lots, since they have a minimum PCBA order size of 2 copies.  I don't recall the exact numbers on the partial boards, but I think it's in the $200 ballpark per board, so you'd be looking at a minimum order cost around $400.


To compare to quantity orders, when I quoted with Aisler, my recollection is that the full Pro board came out to about $50 in lots of 100 units.



#119 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 29 June 2025 - 08:54 PM

I'm trying to use another Pico as a PWMWorker, but I got these errors in log. I flashed the pwmworker firmware, connected GPIO 26, GPIO 27 (added 2 resistors (2.7Kohm) for SCL and SDA also) to main Pico i2c1. PWM pico is powered with USB cable.

What could be wrong here?

 

Thanks

 

===========================================
PinscapePico v0.1.15, build 202506261003
 
0000/01/01 00:00:00 Info:    Flash JEDEC ID recognized as Winbond W25Q16JV-IQ/JQ, capacity 2097152 bytes
0000/01/01 00:00:00 Info:    SFDP basic parameters table found, capacity entry found [4:7]{ ff ff ff 00 }, 2097152 bytes
0000/01/01 00:00:00 Info:    Flash file system mounted; 270336 bytes allocated to 5 files
0000/01/01 00:00:00 Debug:   File "config.json" opened for read, 34457 us
0000/01/01 00:00:00 Config:  Config file loaded OK; parsed JSON memory usage: 11,984 bytes
0000/01/01 00:00:00 Info:    I2C0 bus reset OK, 0 clocks sent
0000/01/01 00:00:00 Config:  I2C0 configured on SDA=GP20, SCL=GP21; speed: 400000; DMA channels: TX 0, RX 1
0000/01/01 00:00:00 Info:    I2C1 bus reset OK, 0 clocks sent
0000/01/01 00:00:00 Config:  I2C1 configured on SDA=GP2, SCL=GP3; speed: 400000; DMA channels: TX 2, RX 3
0000/01/01 00:00:00 Config:  workerPico[0] configured on I2C1 addr 0x30
0000/01/01 00:00:00 Error:   WorkerPico[0]: I2C error requesting register reset (CTRL0_RESET_REGS)
0000/01/01 00:00:00 Error:   WorkerPico[784]: I2C error reading device ID registers
0000/01/01 00:00:00 Error:   WorkerPico[784]: I2C error setting PWM frequency
0000/01/01 00:00:00 Error:   WorkerPico[0], I2C1 address 0x30: device initialization failedrkerPico[0]
0000/01/01 00:00:00 Info:    LIS3DH: WHO_AM_I (reg 0x0F)=0x33 (OK)
0000/01/01 00:00:00 Config:  LIS3DH device initialization OK; I2C0 address 0x19, interrupt GP17, dynamic range +/- 2g
0000/01/01 00:00:00 Config:  Pico ADC configured; 1 channel, GPIO 28,
0000/01/01 00:00:00 Config:  Open Pinball Device HID configured
0000/01/01 00:00:00 Config:  USB CDC console enabled, output buffer size 8192, history size 256
0000/01/01 00:00:00 Config:  Button 0: Pushbutton created, action Key(0xE0), source GP15, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 1: Pushbutton created, action Key(0xE1), source GP14, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 2: Pushbutton created, action Key(0x22), source GP13, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 3: Pushbutton created, action Key(0x1E), source GP12, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 4: Pushbutton created, action Key(0x1F), source GP11, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 5: Pushbutton created, action Key(0x29), source GP10, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 6: Pushbutton created, action Key(0x1B), source GP9, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 7: Pushbutton created, action Key(0xE5), source GP19, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 8: Pushbutton created, action Key(0x28), source GP22, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Button 9: Pushbutton created, action Key(0x15), source GP16, shift(mask 00, bits 00)
0000/01/01 00:00:00 Config:  Output[1]: device GP18 [Digital], time limit 50000, reduced power 0, cooling 0
0000/01/01 00:00:00 Error:   WorkerPico[0]: I2C error writing CONFn for port 16
0000/01/01 00:00:00 Error:   WorkerPico[0]: I2C error writing LIMITn, TIMELIMITn for port 16
0000/01/01 00:00:00 Config:  Output[2]: device WorkerPico[0] OUT16, time limit 50000, reduced power 0, cooling 0
0000/01/01 00:00:00 Config:  Nudge device: LIS3DH selected as accelerometer input
0000/01/01 00:00:00 Debug:   File "lis3dh.acc" opened for read, 134 us
0000/01/01 00:00:00 Config:  Nudge input configured on LIS3DH; nudge x = device +X, y = +Y, z = +Z
0000/01/01 00:00:00 Config:  Plunger: Potentiomter(Pico on-board ADC channel 0) sensor source selected
0000/01/01 00:00:00 Info:    Pico ADC configured; clock div 95.00, DMA channels 4,5, round-robin mask 0x04
0000/01/01 00:00:00 Debug:   File "PotPlunger.cal" opened for read, 124 us
0000/01/01 00:00:00 Config:  Plunger configured, sensor data source is Potentiomter(Pico on-board ADC channel 0)
0000/01/01 00:00:00 Debug:   Keyboard rollover error
0000/01/01 00:00:00 Info:    Kb LED 01

Edited by parallaxx, 29 June 2025 - 09:00 PM.


#120 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 29 June 2025 - 10:14 PM

I'd always start debugging I2C issues with the console.  First step is to run a bus scan, which you can do from the Config Tool (Device > I2C Bus Scan).  See if there's a device at address 0x30 on I2C1.  If there is, you can try reading the device ID register with a console command:

 

i2c1 --rx $30 $1f 1

 

That reads register $1F (WHOAMI), which should reply $24 for a PWMWorker Pico.

 

You can also look at the LED on the PWMWorker Pico to see what it thinks its status is.  See Status LED in the PWM Worker Data Sheet. Quick summary: solid ON = initializing, short blinks every two seconds = standby (no I2C commands received), slow (1 Hz) blink = normal.


My off-hand guess from the error log is that it's just not wired up properly, since all I2C communications seem to be failing.