/*const int numLEDs = 4;
const int GPIO_Pins[] = {2, 3, 1, 0};

void setup() {
  for (int led = 0; led < numLEDs; led++) {
    pinMode(GPIO_Pins[led], OUTPUT);
    digitalWrite(GPIO_Pins[led], LOW);
  }
}

void loop() {
  for (int i = 1; i <= 15; i += 2) { // Counting odd numbers only
    binaryleds(i);
    delay(1000);
  }
}

void binaryleds(int num) {
  for (int i = 0; i < numLEDs; i++) {
    int bit = num & (1 << i);
    digitalWrite(GPIO_Pins[i], bit ? HIGH : LOW);
  }
}

const int ledPins[] = {2,3,1,0};
const int numLEDs = sizeof(ledPins) / sizeof(ledPins[0]);
int arr[4];

void setup() {
  Serial1.begin(115200);
  Serial1.println("Hello");
  for (int i = 0; i < numLEDs; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {

  for (int num = 2; num < 15; num += 2) 
  { 
    displayBinary(num);
    Serial1.println();
    delay(1000); 
  }
  
  delay(2000);
  
  
}

void displayBinary(int num) {
  for (int i = 0; i < numLEDs; i++) 
  {
    arr[i]=num%2;
    num/=2; 
    if (arr[i] == 1)
    digitalWrite(ledPins[i], HIGH);
    else
    digitalWrite(ledPins[i], LOW);
    
  }
  for(int i=3;i>=0;i--)
  Serial1.print(arr[i]);
}*/

const int ledPins[] = {2, 3, 1, 0};
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);
const int delayTime = 1000;
const int maxDelay = 2000;

void setup() {
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  for (int num = 0; num <= 15; num++) {
    displayBinary(num);
    delay(delayTime);
    displayComplement(num);
    delay(delayTime);
  }
  delay(maxDelay);
}
void displayBinary(int number) {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], bitRead(number, i));
  }
}
void displayComplement(int number) {
  int complement = 15 - number; 
  displayBinary(complement);
}
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT