I got a battery attached to my Seeed Studio XIAO nrf52840 and once I plug in USB-c cable the charging LED goes on. Is there a way in code to detect if the USB-c cable has been plugged in so I can run some code when that happens?
Good question I have not seen a specific answer, but it leaves me to believe you should be able to read the charging state? and get the same result. Maybe one of the other GREAT seeed Hive mind members could reply. I’m somewhat skeptical however, because of reading the battery charge level is broken in 2.9.x board files and seeed engineering is not responding to it.
What about reading an analog input pin connected to a voltage divider circuit from the +5V source to determine if the USB is connected? The charging state can be determined by reading P0_17, eg:
charging = ! digitalRead(P0_17); // negated so 0=not charging 1=charging
However, once a battery is fully charged, even if the USB cable remains connected the charging LED will go out and the variable “charging” in the example above will be zero.
So long as the USB cable is connected, the battery charge will be maintained but the charging LED will never go back on nor will the charging state change.
Yes, it is possible to detect whether the USB-C cable has been plugged in or not by monitoring the status of the USB connection using the nRF52840 microcontroller on the Seeed Studio XIAO board. You can achieve this by utilizing the USB API provided by the nRF SDK (Software Development Kit).
No examples exist for the Arduino IDE and Xiao Nrf52840 that I know of or have seen, So SDK may be the only method.
I’m working with the Seeed Studio XIAO nrf52840 board and have a specific requirement related to detecting the status of the USB-C cable connection. I have a battery attached to the board, and whenever I plug in the USB-C cable, the charging LED turns on. I’m wondering if there’s a way to detect this USB-C cable connection in my code so that I can execute certain actions or run specific code when the cable is plugged in. Thanks
You may consider to use Vbus of the USB port to fire an interrupt. However the Vbus voltage is too high for Xiao and you need to add a divider circuit before connecting to Xiao. In other words you have to modify Xiao otherwise there is no way to detect the USB port.