     
     //TODO: Allow for writing custom matrices
     public func writeMatrix(matrix: String?) {
-        // Do not send same matrix again if already shown
-        if matrix == currentMatrix {
-            return
-        }
+        // Do not write same matrix again that is already shown unless the display interval has timed out
+        guard matrix != currentMatrix || NSDate().timeIntervalSinceDate(lastWriteMatrixDate ?? NSDate()) >= matrixDisplayTimeout else {return}
+        
         currentMatrix = matrix
         
         // Send matrix later when the write response from previous write request is not yet received

        // Write matrix
        let matrixData = NSMutableData(bytes: matrixBytes, length: matrixBytes.count)
        if firmwareVersion >= 0.1 {
            let matrixAdditionalBytes: [UInt8] = [0xff /* Highest brightness */, 10 /* Display timeout */]
            matrixData.appendBytes(matrixAdditionalBytes, length: matrixAdditionalBytes.count)
        }
        peripheral.writeValue(matrixData, forCharacteristic: ledMatrixCharacteristic, type: .WithResponse)
        isWaitingForLedMatrixWriteResponse = true
        
        // When the matrix write response is not retrieved within 100ms we assume the response to have timed out

    
    private func writeMatrixNow(matrix: String?) {
        assert(!isWaitingForLedMatrixWriteResponse, "Cannot write matrix now, response from previous write request not yet received")
        guard let ledMatrixCharacteristic = ledMatrixCharacteristic else { return }
        
        // Convert matrix string representation into byte representation
        let matrixBytes = NuimoLEDMatrix.matrixBytesForString(matrix ?? "")
