title: How to perform read and write between Raspberry Pi 4 and Arduino Nano BLE Via Bluetooth?
body: <p>I am able to connect a Raspberry Pi 4 an and Arduino Nano BLE through bluepy for Rpi4 and ArduinoBLE.h for Arduino Nano BLE. Unfortunately when I try to write from Rpi4 to Arduino Nano BLE, I'm not seeing the expected output for Read and Write. I don't see any perfect example for Arduino Nano BLE since it is recently released hardware with built-in BLE. It would be very helpful if  anyone could help me achieve communication between them. Thanks in advance. Below is my code for Raspberry Pi.</p>
  
  <pre><code>import bluepy.btle as btle
  p = btle.Peripheral("de:fc:54:87:b0:04")
  services=p.getServices()
  s = p.getServiceByUUID(list(services)[2].uuid)
  c = s.getCharacteristics()[0]
  c.write(bytes("2", "utf-8"))
  p.disconnect()
  </code></pre>
  
  <p>And I'm using the Arduino built-in example from the Arduino Nano BLE Library.</p>
  
  <pre><code>#include &lt;ArduinoBLE.h&gt;
  
  BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service
  // BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
  BLEByteCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
  
  const int ledPin = LED_BUILTIN; // pin to use for the LED
  
  void setup() {
    Serial.begin(9600);
    while (!Serial);
    // set LED pin to output mode
    pinMode(ledPin, OUTPUT);
    // begin initialization
    if (!BLE.begin()) {
      Serial.println("starting BLE failed!");
      while (1);
    }
    // set advertised local name and service UUID:
    BLE.setLocalName("LED");
    BLE.setAdvertisedService(ledService);
    // add the characteristic to the service
    ledService.addCharacteristic(switchCharacteristic);
    // add service
    BLE.addService(ledService);
    // set the initial value for the characeristic:
    switchCharacteristic.writeValue(0);
    // start advertising
    BLE.advertise();
    Serial.println("BLE LED Peripheral");
  }
  
  void loop() {
    // listen for BLE peripherals to connect:
    BLEDevice central = BLE.central();
    // if a central is connected to peripheral:
    if (central) {
      Serial.print("Connected to central: ");
      //prints the centrals MAC address:
      Serial.println(central.address());
      // while the central is still connected to peripheral:
      while (central.connected()) {
        // if the remote device wrote to the characteristic,
        // use the value to control the LED:
        if (switchCharacteristic.written()) {
          if (switchCharacteristic.value()) { // any value other than 0
            Serial.println("LED on");
            digitalWrite(ledPin, HIGH); // will turn the LED on
          } else { // a 0 value
            Serial.println(F("LED off"));
            digitalWrite(ledPin, LOW); // will turn the LED off
          }
        }
      }
      // when the central disconnects, print it out:
      Serial.print(F("Disconnected from central: "));
      Serial.println(central.address());
    }
  }
  </code></pre>