/*EX 2.2:Write a program to display the numbers in the increasing and
decreasing order from 1 to 15 and vice versa in binary form, using 4 LEDs,
with a delay of 1 sec. When it reaches the maximum value (15), start
counting down to 1, then again begin counting up to 15, then start from 1.
Whenever it comes to the Max or Min value, wait for 2 seconds.
const int numLEDs = 4;
static int arr[5];
const int GPIO_Pins[] = {3,2,1,0};
void setup() {
// put your setup code here, to run once:
for (int led = 0; led < numLEDs; led++)
{
pinMode(GPIO_Pins[led], OUTPUT);
digitalWrite(GPIO_Pins[led],LOW);
}
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 1; i <= 15; i++) {
binaryLEDs(i);
delay(1000);
}
delay(2000);
for (int i = 15; i > 0; i--) {
binaryLEDs(i);
delay(1000);
}
}
void binaryLEDs(int num)
{
for (int i = 0; i < 4; i++) {
arr[i] = num % 2;
num = num / 2;
if (arr[i] == 1)
digitalWrite(GPIO_Pins[i], HIGH);
else
digitalWrite(GPIO_Pins[i], LOW);
}
}
*/
/* EX 2.3:Write a program to display only odd numbers in binary form,
using 4 LEDs, with a delay of 1 sec. When it reaches the maximum value,
wait 2 seconds and start from the minimum.
const int numLEDs = 4;
const int GPIO_Pins[] = {0,1,2,3};
void setup() {
// put your setup code here, to run once:
for (int led = 0; led < numLEDs; led++) {
pinMode(GPIO_Pins[led], OUTPUT);
digitalWrite(GPIO_Pins[led], LOW);
}
}
void loop() {
// put your main code here, to run repeatedly:
// Display odd numbers in binary
for (int i = 1; i <= 15; i += 2) {
binaryLEDs(i);
delay(1000);
}
// Wait 2 seconds
delay(2000);
// Reset LEDs to display minimum value
binaryLEDs(1);
delay(1000);
}
void binaryLEDs(int num) {
for (int i = 0; i < 4; i++) {
int bit = num % 2;
digitalWrite(GPIO_Pins[i], bit);
num /= 2;
}
}
*/
/*ex2.4 : Write a program to display only even numbers in binary form,
using 4 LEDs, with a delay of 1 sec. When it reaches the maximum value,
wait 2 seconds and start from the minimum.*/
const int ledPin[] = {0,1, 2, 3};
int currentLED = 0;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPin[i], OUTPUT);
}
}
void loop() {
for (int num = 0; num <= 15; num += 2) {
displayBinary(num);
delay(1000);
}
}
void displayBinary(int num) {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPin[i], LOW);
}
for (int i = 0; i < 4; i++) {
int bit = (num >> i) & 1;
digitalWrite(ledPin[i], bit);
}
}