diff --git a/Arduino/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813.ino b/Arduino/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813.ino
index 3b1d6db746135bec8391de46530535e8963ff30a..01920671d69764d457117e2ab0ed558eedb1481e 100644
--- a/Arduino/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813.ino
+++ b/Arduino/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813/18_vl53l7cx_clean_with_STlibrary_Shift_register_20250127154813.ino
@@ -340,6 +340,109 @@ void processSensorData(VL53L7CX &sensor, VL53L7CX_ResultsData &results, const Js
for (int x = 0; x <= imageWidth - 1; x++) {
sensorData.add(results.distance_mm[VL53L7CX_NB_TARGET_PER_ZONE * (x + y)]);
}
+ void I2C_RST(int dataPin, int latchPin, int clockPin){
+ uint8_t Pin_byte1 = 0b11111111; // For pins 0-7
+ uint8_t Pin_byte2 = 0b11111111; // For pins 8-15
+ uint8_t Pin_byte3 = 0b11111111; // For pins 16-23
+ // Update the correct byte based on Pin
+
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte3); // Send byte for pins 16-23
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_void I2C_RST(int dataPin, int latchPin, int clockPin){
+ uint8_t Pin_byte1 = 0b11111111; // For pins 0-7
+ uint8_t Pin_byte2 = 0b11111111; // For pins 8-15
+ uint8_t Pin_byte3 = 0b11111111; // For pins 16-23
+ // Update the correct byte based on Pin
+
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte3); // Send byte for pins 16-23
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin, HIGH);
+ delay(200);
+}
+
+void LPn0(uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin0, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin0, clockPin0, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin0, clockPin0, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin0, HIGH);
+}
+
+void LPn1(uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin1, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin1, clockPin1, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin1, clockPin1, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin1, HIGH);
+}byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin, HIGH);
+ delay(200);
+}
+
+void LPn0(uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin0, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin0, clockPin0, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin0, clockPin0, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin0, HIGH);
+}
+
+void LPn1(uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin1, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin1, clockPin1, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin1, clockPin1, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin1, HIGH);
+}
}
}
diff --git a/Arduino/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18.ino b/Arduino/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18.ino
new file mode 100644
index 0000000000000000000000000000000000000000..3ac807313c5833ee521af2a6c77ddbd03649d86e
--- /dev/null
+++ b/Arduino/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18/4_vl53l7cx_clean_with_STlibrary_Shift_register_scalebal_to_18.ino
@@ -0,0 +1,309 @@
+#include <Arduino.h>
+#include <Wire.h>
+#include <ArduinoJson.h>
+#include <vl53l7cx_class.h>
+#include "74HC154.h"
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <assert.h>
+#include <stdlib.h>
+
+#define DEV_I2C1 Wire1
+#define DEV_I2C0 Wire
+
+#ifndef LED_BUILTIN
+ #define LED_BUILTIN 13
+#endif
+#define LedPin LED_BUILTIN
+
+#define Fake_I2C_RST_PIN 99
+#define Fake_LPN 99
+
+#define LPN_PIN0 0
+#define LPN_PIN1 1
+#define LPN_PIN2 2
+#define LPN_PIN3 3
+#define LPN_PIN4 4
+#define LPN_PIN5 5
+#define LPN_PIN6 6
+#define LPN_PIN7 7
+#define LPN_PIN8 8
+#define LPN_PIN9 9
+#define LPN_PIN10 10
+#define LPN_PIN11 11
+#define LPN_PIN12 12
+#define LPN_PIN13 13
+#define LPN_PIN14 14
+#define LPN_PIN15 15
+#define LPN_PIN16 16
+#define LPN_PIN17 17
+
+
+pin_size_t dataPin0 = 18;
+pin_size_t latchPin0 = 17;
+pin_size_t clockPin0 = 16;
+
+pin_size_t dataPin1 = 13;
+pin_size_t latchPin1 = 14;
+pin_size_t clockPin1 = 15;
+
+
+uint16_t sensoraddress0 = 0x30;
+uint16_t sensoraddress1 = 0x31;
+uint16_t sensoraddress2 = 0x32;
+uint16_t sensoraddress3 = 0x33;
+uint16_t sensoraddress4 = 0x34;
+uint16_t sensoraddress5 = 0x35;
+uint16_t sensoraddress6 = 0x36;
+uint16_t sensoraddress7 = 0x37;
+uint16_t sensoraddress8 = 0x38;
+
+uint16_t sensoraddress9 = 0x40;
+uint16_t sensoraddress10 = 0x41;
+uint16_t sensoraddress11 = 0x42;
+uint16_t sensoraddress12 = 0x43;
+uint16_t sensoraddress13 = 0x44;
+uint16_t sensoraddress14 = 0x45;
+uint16_t sensoraddress15 = 0x46;
+uint16_t sensoraddress16 = 0x47;
+uint16_t sensoraddress17 = 0x48;
+
+uint16_t wait_for_i2c = 50;
+uint16_t imageWidth = 8;
+uint16_t ranging_frequency = 15;
+pin_size_t SCL_PIN0 = 21;
+pin_size_t SDA_PIN0 = 20;
+pin_size_t SDA_PIN1 = 2;
+pin_size_t SCL_PIN1 = 3;
+JsonDocument doc;
+
+// Components.
+VL53L7CX sensor0(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor1(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor2(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor3(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor4(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor5(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor6(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor7(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor8(&DEV_I2C0, Fake_LPN, Fake_I2C_RST_PIN);
+
+VL53L7CX sensor9(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor10(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor11(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor12(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor13(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor14(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor15(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor16(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+VL53L7CX sensor17(&DEV_I2C1, Fake_LPN, Fake_I2C_RST_PIN);
+
+
+void blink_led_loop(void);
+
+void setup() {
+ // put your setup code here, to run once:
+ delay(7000);
+ pinMode(dataPin0, OUTPUT);
+ pinMode(latchPin0, OUTPUT);
+ pinMode(clockPin0, OUTPUT);
+ pinMode(dataPin1, OUTPUT);
+ pinMode(latchPin1, OUTPUT);
+ pinMode(clockPin1, OUTPUT);
+
+ Serial.begin(115200);
+ Serial.println("Initialize... Please wait, it may take few seconds...");
+
+ // Initialize I2C bus.
+ DEV_I2C0.setSCL(SCL_PIN0);
+ DEV_I2C0.setSDA(SDA_PIN0);
+ DEV_I2C0.begin();
+ DEV_I2C0.setClock(1000000);
+ delay(50);
+
+ DEV_I2C1.setSCL(SCL_PIN1);
+ DEV_I2C1.setSDA(SDA_PIN1);
+ DEV_I2C1.begin();
+ DEV_I2C1.setClock(1000000);
+ delay(50);
+
+ // Initialize and configure sensors
+ Serial.println("Initializing sensors...");
+
+ initializeSensorInterface0(sensor0, sensoraddress0, LPN_PIN0);
+ i2cScanner(); // Perform I2C scan
+
+ initializeSensorInterface0(sensor1, sensoraddress1, LPN_PIN1);
+ i2cScanner(); // Perform I2C scan
+
+ initializeSensorInterface0(sensor2, sensoraddress2, LPN_PIN2);
+ i2cScanner(); // Perform I2C scan
+
+ initializeSensorInterface0(sensor3, sensoraddress3, LPN_PIN3);
+ i2cScanner(); // Perform I2C scan
+
+ Serial.println("All sensors initialized successfully.");
+}
+
+void loop() {
+ // Declare the result data variables for each sensor
+ VL53L7CX_ResultsData Results0;
+ VL53L7CX_ResultsData Results1;
+ VL53L7CX_ResultsData Results2;
+ VL53L7CX_ResultsData Results3;
+
+ // Process each sensor data and save to respective JSON arrays
+ processSensorData(sensor0, Results0, doc["sensor0"].to<JsonArray>(), "sensor0");
+ processSensorData(sensor1, Results1, doc["sensor1"].to<JsonArray>(), "sensor1");
+ processSensorData(sensor2, Results2, doc["sensor2"].to<JsonArray>(), "sensor2");
+ processSensorData(sensor3, Results3, doc["sensor3"].to<JsonArray>(), "sensor3");
+
+ // Serialize the JSON document and print to Serial
+ serializeJson(doc, Serial);
+ Serial.println();
+}
+
+void LPn(uint16_t dataPin, uint16_t latchPin, uint16_t clockPin, uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+ Serial.print(Pin_byte1,BIN);
+ Serial.println(Pin_byte2,BIN);
+ digitalWrite(latchPin, HIGH);
+}
+
+void I2C_RST(uint16_t dataPin, uint16_t latchPin, uint16_t clockPin){
+ uint8_t Pin_byte1 = 0b11111111; // For pins 0-7
+ uint8_t Pin_byte2 = 0b11111111; // For pins 8-15
+ // Update the correct byte based on Pin
+
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin, HIGH);
+ delay(200);
+}
+
+void processSensorData(VL53L7CX &sensor, VL53L7CX_ResultsData &results, const JsonArray& data, const char* sensorKey) {
+ uint8_t NewDataReady = 0;
+ uint8_t status;
+
+ // Wait for data to be ready
+ do {
+ status = sensor.vl53l7cx_check_data_ready(&NewDataReady);
+ } while (!NewDataReady);
+
+ // Turn LED on to indicate data processing
+ digitalWrite(LedPin, HIGH);
+
+ // If data is ready, get the ranging data and store it in the JSON array
+ if ((!status) && (NewDataReady != 0)) {
+ status = sensor.vl53l7cx_get_ranging_data(&results);
+ JsonArray sensorData = doc[sensorKey].to<JsonArray>();
+
+ // Process the results and add them to the JSON array
+ for (int y = imageWidth * (imageWidth - 1); y >= 0; y -= imageWidth) {
+ for (int x = 0; x <= imageWidth - 1; x++) {
+ sensorData.add(results.distance_mm[VL53L7CX_NB_TARGET_PER_ZONE * (x + y)]);
+ }
+ }
+ }
+
+ // Turn LED off to indicate processing is done
+ digitalWrite(LedPin, LOW);
+}
+
+void initializeSensorInterface0(VL53L7CX &sensor, uint16_t sensorAddress, int lpnPin) {
+ LPn(dataPin0, latchPin0, clockPin0, lpnPin, true); // Activate sensor power
+ delay(wait_for_i2c);
+ sensor.begin();
+ delay(wait_for_i2c);
+ sensor.init_sensor();
+ delay(wait_for_i2c);
+
+ // Set I2C address
+ sensor.vl53l7cx_set_i2c_address(sensorAddress << 1);
+ delay(wait_for_i2c);
+
+ // Set resolution and frequency
+ sensor.vl53l7cx_set_resolution(VL53L7CX_RESOLUTION_8X8);
+ delay(wait_for_i2c);
+ sensor.vl53l7cx_set_ranging_frequency_hz(ranging_frequency);
+ delay(wait_for_i2c);
+
+ // Start ranging
+ sensor.vl53l7cx_start_ranging();
+ delay(wait_for_i2c);
+
+ // Reset LPN and I2C pins
+ LPn(dataPin0, latchPin0, clockPin0, lpnPin, false);
+}
+
+void initializeSensorInterface1(VL53L7CX &sensor, uint16_t sensorAddress, int lpnPin) {
+ LPn(dataPin1, latchPin1, clockPin1, lpnPin, true); // Activate sensor power
+ delay(wait_for_i2c);
+ sensor.begin();
+ delay(wait_for_i2c);
+ sensor.init_sensor();
+ delay(wait_for_i2c);
+
+ // Set I2C address
+ sensor.vl53l7cx_set_i2c_address(sensorAddress << 1);
+ delay(wait_for_i2c);
+
+ // Set resolution and frequency
+ sensor.vl53l7cx_set_resolution(VL53L7CX_RESOLUTION_8X8);
+ delay(wait_for_i2c);
+ sensor.vl53l7cx_set_ranging_frequency_hz(ranging_frequency);
+ delay(wait_for_i2c);
+
+ // Start ranging
+ sensor.vl53l7cx_start_ranging();
+ delay(wait_for_i2c);
+
+ // Reset LPN and I2C pins
+ LPn(dataPin1, latchPin1, clockPin1, lpnPin, false);
+}
+
+
+void i2cScanner()
+{
+ for (byte address = 1; address < 127; address++ )
+ {
+ Wire.beginTransmission(address);
+ if (Wire.endTransmission() == 0)
+ {
+ Serial.print("Device found at address 0x");
+ if (address < 0x10)
+ Serial.print("0");
+ Serial.println(address, HEX);
+ }
+ }
+ Serial.println();
+ delay(wait_for_i2c);
+}
+
+void blink_led_loop(void)
+{
+ do {
+ // Blink the led forever
+ digitalWrite(LedPin, HIGH);
+ delay(wait_for_i2c);
+ digitalWrite(LedPin, LOW);
+ } while (1);
+}
\ No newline at end of file
diff --git a/Arduino/VL53L5CX_first_try_with_shiftand_one_sensor/VL53L5CX_first_try_with_shiftand_one_sensor.ino b/Arduino/VL53L5CX_first_try_with_shiftand_one_sensor/VL53L5CX_first_try_with_shiftand_one_sensor.ino
new file mode 100644
index 0000000000000000000000000000000000000000..ac581e12dbfaae6aebb4b89afd52fb4f1926b378
--- /dev/null
+++ b/Arduino/VL53L5CX_first_try_with_shiftand_one_sensor/VL53L5CX_first_try_with_shiftand_one_sensor.ino
@@ -0,0 +1,52 @@
+
+#include <Arduino.h>
+#include <Wire.h>
+#include <vl53l5cx_class.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <assert.h>
+#include <stdlib.h>
+
+
+#define DEV_I2C Wire
+
+#define SerialPort Serial
+
+#ifndef LED_BUILTIN
+ #define LED_BUILTIN 13
+#endif
+#define LedPin LED_BUILTIN
+
+#define LPN_PIN 99
+#define I2C_RST_PIN 99
+#define PWREN_PIN 99
+
+// Components.
+VL53L5CX sensor_vl53l5cx_sat(&DEV_I2C, LPN_PIN, I2C_RST_PIN);
+
+void blink_led_loop(void);
+
+void blink_led_loop(void)
+{
+ do {
+ // Blink the led forever
+ digitalWrite(LedPin, HIGH);
+ delay(500);
+ digitalWrite(LedPin, LOW);
+ } while (1);
+}
+
+/* Setup ---------------------------------------------------------------------*/
+
+void setup()
+{
+
+}
+
+void loop()
+{
+
+
+}
diff --git a/Arduino/arduino-ide_2.3.4_Linux_64bit.AppImage b/Arduino/arduino-ide_2.3.4_Linux_64bit.AppImage
new file mode 100755
index 0000000000000000000000000000000000000000..8e5553f19b12ca3cb3f96129bb3526bc788a06f0
Binary files /dev/null and b/Arduino/arduino-ide_2.3.4_Linux_64bit.AppImage differ
diff --git a/Arduino/sketch_to_test_the_shift_register/sketch_to_test_the_shift_register.ino b/Arduino/sketch_to_test_the_shift_register/sketch_to_test_the_shift_register.ino
new file mode 100644
index 0000000000000000000000000000000000000000..5b23df265ee6d7a308813835bdc19486f9c78418
--- /dev/null
+++ b/Arduino/sketch_to_test_the_shift_register/sketch_to_test_the_shift_register.ino
@@ -0,0 +1,56 @@
+uint16_t dataPin = 18;
+uint16_t latchPin = 17;
+uint16_t clockPin = 16;
+
+#define LPN_PIN0 0
+#define LPN_PIN1 1
+#define LPN_PIN2 2
+#define LPN_PIN3 3
+
+
+void setup() {
+ // put your setup code here, to run once:
+ delay(7000);
+ pinMode(dataPin, OUTPUT);
+ pinMode(latchPin, OUTPUT);
+ pinMode(clockPin, OUTPUT);
+ LPn(dataPin, latchPin, clockPin, 1, true); // Activate sensor I2C
+ Ranging(dataPin, latchPin, clockPin)
+}
+
+void loop() {
+ // put your main code here, to run repeatedly:
+}
+
+void LPn(uint16_t dataPin, uint16_t latchPin, uint16_t clockPin, uint16_t Pin, bool on) {
+ uint8_t Pin_byte1 = 0b00000000; // For pins 0-7
+ uint8_t Pin_byte2 = 0b00000000; // For pins 8-15
+ // Update the correct byte based on Pin
+ if (Pin <= 7) {
+ Pin_byte1 |= (on << Pin); // Set the corresponding bit in Pin_byte1
+ } else if (Pin <= 15) {
+ Pin_byte2 |= (on << (Pin - 8)); // Set the corresponding bit in Pin_byte2
+ }
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin, HIGH);
+}
+
+void Ranging(uint16_t dataPin, uint16_t latchPin, uint16_t clockPin){
+ uint8_t Pin_byte1 = 0b11111111; // For pins 0-7
+ uint8_t Pin_byte2 = 0b11111111; // For pins 8-15
+ // Update the correct byte based on Pin
+
+ digitalWrite(latchPin, LOW);
+
+ // Shift out the bits
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte2); // Send byte for pins 8-15
+ shiftOut(dataPin, clockPin, MSBFIRST, Pin_byte1); // Send byte for pins 0-7
+
+ digitalWrite(latchPin, HIGH);
+ delay(200);
+}
\ No newline at end of file