Stair light controller with Teensy 3.2+ Prop Shield, Low Cost

Status
Not open for further replies.

ndavid

New member
Hi Guys,

I need your advice regarding a personal project which I want at my house. The idea of the project is to do staircase light which will be activated by movement during the night.
The hardware which I want to use for this project is :
- Teensy 3.2 board
- Teensy Prop Shield, Low Cost
- Ledstrips SK9822 (Apa102) clone (https://thepihut.com/products/adafruit-dotstar-digital-led-strip-black-144-led-m-one-meter-black). The length of the strip is around 7.4 metres.
- Sharp GP2Y0A21YK0F Analog - Distance sensors 2 pcs
- Light Sensor - 1 pcs
- Power supply 5 V 60 Amps
Wiring setup : The Teensy it soldered on the Prop Shield . At the power supply is connected the Teensy 3.2 and also the leds strip. The Data Pin and Cloc pin are connected to the Teensy Prop shield. All the grounds are connected together.
The code is not finalized and I am tested on pieces the leds to see if they can be controlled according with the code.
Led behaviour is to switch white colour led by led.
The project which I want to replicate:
https://www.youtube.com/watch?v=NHkju5ncC4A

My question is can I control with Teensy 3.2 with Prop Shiels 7.4 m long strip (1066) leds.
When I am testing for 3.8 meters at the end of the strip I get strange behaviour because some of the leds are red and blinking red. Also the colour is changing from white to bright yellow. What is the reason for this behaviour ?
I am supposing that is a voltage drop issue and also the signal is not accurate. Do I need to use a level convertor 74AHCT245 ?

Below is the code used for testing. Is still in a draft version :

#include <FastLED.h>

#define NUM_LEDS 432
CRGB leds[NUM_LEDS];

void setup() {
delay(2000); // sanity check delay
FastLED.addLeds<APA102, BGR>(leds, NUM_LEDS);
pinMode(7, OUTPUT);
digitalWrite(7, HIGH); // enable access to LEDs
}

// *** REPLACE FROM HERE ***
void loop() {
colorWipe(0xff,0xff,0xff, 80);
colorWipe(0x00,0x00,0x00, 80);
}

void colorWipe(byte red, byte green, byte blue, int SpeedDelay) {
for(uint16_t i=0; i<NUM_LEDS; i++) {
setPixel(i, red, green, blue);
showStrip();
delay(SpeedDelay);
}
}
// *** REPLACE TO HERE ***

void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show();
#endif
}

void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}

void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}


Thank you.

Nico
 
Status
Not open for further replies.
Back
Top