From 62e0db413e84322fc3453e960f2427bf56a33ab7 Mon Sep 17 00:00:00 2001 From: Mikey Sklar Date: Thu, 1 Mar 2018 19:59:36 -0700 Subject: [PATCH] ported to CircuitPython --- Adafruit_LED_Sequins/.DS_Store | Bin 0 -> 6148 bytes Adafruit_LED_Sequins/Adafruit_LED_Sequins.fzz | Bin 0 -> 42803 bytes Adafruit_LED_Sequins/Adafruit_LED_Sequins.ino | 37 ++++++++++++++ Adafruit_LED_Sequins/Adafruit_LED_Sequins.py | 46 ++++++++++++++++++ Adafruit_LED_Sequins/README.md | 4 ++ 5 files changed, 87 insertions(+) create mode 100644 Adafruit_LED_Sequins/.DS_Store create mode 100644 Adafruit_LED_Sequins/Adafruit_LED_Sequins.fzz create mode 100644 Adafruit_LED_Sequins/Adafruit_LED_Sequins.ino create mode 100644 Adafruit_LED_Sequins/Adafruit_LED_Sequins.py create mode 100644 Adafruit_LED_Sequins/README.md diff --git a/Adafruit_LED_Sequins/.DS_Store b/Adafruit_LED_Sequins/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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

P9Zto~| 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 literal 0 HcmV?d00001 diff --git a/Adafruit_LED_Sequins/Adafruit_LED_Sequins.ino b/Adafruit_LED_Sequins/Adafruit_LED_Sequins.ino new file mode 100644 index 000000000..cfe671f72 --- /dev/null +++ b/Adafruit_LED_Sequins/Adafruit_LED_Sequins.ino @@ -0,0 +1,37 @@ +int brightness = 0; // how bright the LED is +int fadeAmount = 5; // how many points to fade the LED by +int counter = 0; // counter to keep track of cycles + +// the setup routine runs once when you press reset: +void setup() { + // declare pins to be an outputs: + pinMode(0, OUTPUT); + pinMode(2, OUTPUT); +} + +// the loop routine runs over and over again forever: +void loop() { + // set the brightness of the analog-connected LEDs: + analogWrite(0, brightness); + + // change the brightness for next time through the loop: + brightness = brightness + fadeAmount; + + // reverse the direction of the fading at the ends of the fade: + if (brightness == 0 || brightness == 255) { + fadeAmount = -fadeAmount; + counter++; + } + // wait for 15 milliseconds to see the dimming effect + delay(15); + +// turns on the other LEDs every four times through the fade by +// checking the modulo of the counter. +// the modulo function gives you the remainder of +// the division of two numbers: + if (counter % 4 == 0) { + digitalWrite(2, HIGH); + } else { + digitalWrite(2, LOW); + } +} diff --git a/Adafruit_LED_Sequins/Adafruit_LED_Sequins.py b/Adafruit_LED_Sequins/Adafruit_LED_Sequins.py new file mode 100644 index 000000000..3eb9f9ff2 --- /dev/null +++ b/Adafruit_LED_Sequins/Adafruit_LED_Sequins.py @@ -0,0 +1,46 @@ +import board +import pulseio +import time +from digitalio import DigitalInOut, Direction + +# PWM (fading) LEDs are connected on D0 (PWM not avail on D1) +pwm_leds = board.D0 +pwm = pulseio.PWMOut(pwm_leds, frequency=1000, duty_cycle=0) + +# digital LEDs connected on D2 +digital_leds = DigitalInOut(board.D2) +digital_leds.direction = Direction.OUTPUT + +brightness = 0 # how bright the LED is +fade_amount = 1285 # 2% steping of 2^16 +counter = 0 # counter to keep track of cycles + +while True: + + # And send to LED as PWM level + pwm.duty_cycle = brightness + + # change the brightness for next time through the loop: + brightness = brightness + fade_amount + + print(brightness) + + # reverse the direction of the fading at the ends of the fade: + if ( brightness <= 0 ): + fade_amount = -fade_amount + counter += 1 + elif ( brightness >= 65535 ): + fade_amount = -fade_amount + counter += 1 + + # wait for 15 ms to see the dimming effect + time.sleep(.015) + + # turns on the other LEDs every four times through the fade by + # checking the modulo of the counter. + # the modulo function gives you the remainder of + # the division of two numbers: + if ( counter % 4 == 0 ): + digital_leds.value = True + else: + digital_leds.value = False diff --git a/Adafruit_LED_Sequins/README.md b/Adafruit_LED_Sequins/README.md new file mode 100644 index 000000000..f77adf975 --- /dev/null +++ b/Adafruit_LED_Sequins/README.md @@ -0,0 +1,4 @@ +# Adafruit_LED_Sequins + +Code to accompany this tutorial: +https://learn.adafruit.com/adafruit-led-sequins/