// pi_picoCharting_BLE.ino //Send CSV data via BLE /* (c)2026 Forward Computing and Control Pty. Ltd. NSW Australia, www.forward.com.au This code is not warranted to be fit for any purpose. You may only use it at your own risk. This code may be freely used for both private and commercial use Provided this copyright is maintained. */ #include #include "millisDelay.h" BLEServiceUART uart; BLEServiceBattery batt; millisDelay plotDataDelay; unsigned long PLOT_DATA_DELAY_MS = 200; float tempC; float tempF; int ADC_reading; const int ADC_pin = 26; class BLEuartConnection : public BLEServerCallbacks { public: BLEuartConnection() : connected(false) {} inline bool isConnected() { return connected; } inline void onConnect(BLEServer *p) { connected = true; } inline void onDisconnect(BLEServer *p) { connected = false; } private: bool connected; }; BLEuartConnection bleConnection; void setup() { Serial.begin(115200); BLE.begin("PicoUART"); BLE.server()->setCallbacks(&bleConnection); BLE.server()->addService(&batt); BLE.server()->addService(&uart); BLE.startAdvertising(); plotDataDelay.start(PLOT_DATA_DELAY_MS); } int cnt = 0; void loop() { if (plotDataDelay.justFinished()) { plotDataDelay.restart(); if (bleConnection.isConnected()) { unsigned long ms = millis(); ADC_reading = analogRead(ADC_pin); tempC = analogReadTemp(); // Get internal temperature tempF = tempC * 9.0 / 5.0 + 32.0; // Fahrenheit conversion uart.print(ms); uart.print(','); uart.print(ADC_reading); uart.print(','); uart.print(tempC); uart.print(','); uart.println(tempF); uart.flush(); } } }