START A BIT > Projects Library > This page
Connect the external red-blue LED, understand physical wiring in practice
Use digitalWrite to output a digital (0 or 1) signal
Alternate the Red-Blue LEDs in a steady pattern
Bi -> Bo -> Bi -> Bo -> ...
def on_forever():
# Red ON, Blue OFF
pins.digital_write_pin(DigitalPin.P1, 1)
pins.digital_write_pin(DigitalPin.P2, 0)
basic.pause(500)
# Red OFF, Blue ON
pins.digital_write_pin(DigitalPin.P1, 0)
pins.digital_write_pin(DigitalPin.P2, 1)
basic.pause(500)
basic.forever(on_forever)
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH); // Red ON
digitalWrite(3, LOW); // Blue OFF
delay(500);
digitalWrite(2, LOW); // Red OFF
digitalWrite(3, HIGH); // Blue ON
delay(500);
}
Challenging fun task, motivating using looping and function
Blink in realistic police light pattern:
Red-Red-Red (Fast) -> Blue-Blue-Blue (Fast) -> ...
def on_forever():
# --- START RED FLASHES ---
# Red Flash 1
pins.digital_write_pin(DigitalPin.P1, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P1, 0)
basic.pause(150)
# Red Flash 2
pins.digital_write_pin(DigitalPin.P1, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P1, 0)
basic.pause(150)
# Red Flash 3
pins.digital_write_pin(DigitalPin.P1, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P1, 0)
basic.pause(150)
# Gap between colors
basic.pause(500)
# --- START BLUE FLASHES ---
# Blue Flash 1
pins.digital_write_pin(DigitalPin.P2, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P2, 0)
basic.pause(150)
# Blue Flash 2
pins.digital_write_pin(DigitalPin.P2, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P2, 0)
basic.pause(150)
# Blue Flash 3
pins.digital_write_pin(DigitalPin.P2, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P2, 0)
basic.pause(150)
# Final gap before loop restarts
basic.pause(500)
basic.forever(on_forever)
def flash_blue():
for index in range(3):
pins.digital_write_pin(DigitalPin.P2, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P2, 0)
basic.pause(150)
def flash_red():
for index2 in range(3):
pins.digital_write_pin(DigitalPin.P1, 1)
basic.pause(150)
pins.digital_write_pin(DigitalPin.P1, 0)
basic.pause(150)
def on_forever():
flash_red()
basic.pause(500)
# Short pause between colors
flash_blue()
basic.pause(500)
basic.forever(on_forever)
void setup() {
pinMode(2, OUTPUT); // Red LED
pinMode(3, OUTPUT); // Blue LED
}
void loop() {
// --- RED SECTION ---
// Flash 1
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
// Flash 2
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
// Flash 3
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
delay(300); // Gap between colors
// --- BLUE SECTION ---
// Flash 1
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
// Flash 2
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
// Flash 3
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
delay(300); // Gap before loop restarts
}
void setup()
{
pinMode(2, OUTPUT); // Red LED
pinMode(3, OUTPUT); // Blue LED
}
void flashColor(int pin) {
for (int i = 0; i < 3; i++) {
digitalWrite(pin, HIGH);
delay(100);
digitalWrite(pin, LOW);
delay(100);
}
}
void loop() {
flashColor(2); // Flash Red 3 times
delay(300); // Gap
flashColor(3); // Flash Blue 3 times
delay(300); // Gap
}
Enhance basic knowledge understanding, reflect and summarize what we have learnt
How many and what states does a digital signal have?
What will be the pain if requesting to change the blinking speed for the solution without using function?
What pros and cons to use Function?