SPI to Neopixel Adapter

  Рет қаралды 52,608

Ben Heck Hacks

Ben Heck Hacks

Күн бұрын

Пікірлер: 255
@martinj9647
@martinj9647 6 жыл бұрын
I'm really glad you're doing your own thing now.
@lolindirlink
@lolindirlink 6 жыл бұрын
I don't care what he does, as long as he's sharing his tinkering with us. ^^
@MinecraftEAT
@MinecraftEAT 6 жыл бұрын
Agreed, his passion is able to shine through a lot more than in a more scripted environment
@common_c3nts
@common_c3nts 6 жыл бұрын
@@lolindirlink I dont care what he does, as long as he makes silly comments that entertain us all.
@alunaticbastard
@alunaticbastard 6 жыл бұрын
I gotta admit, when I first saw the notification about the instant pot stew I was like WTF is this. Then I watched the video and thought, yeah that was some pretty damn good looking stew! Different is not always bad 👍
@Gunbudder
@Gunbudder 6 жыл бұрын
2:33 this is a union with bit packing. So the struct with its 4 vars is 32 bits total, not 4 by 4. Its only 4 bytes for the whole struct. The way the code is written gives easy access to either the 4 parts or the whole thing as a 32 bit unsigned int. I see this A LOT in the real world, and it's a huge advantage of C. The number after the colon is which bit the value is stored at, and this saves the user from even needing to know what the bit offsets are. Unions are great and this one looks to be written pretty nicely
@HypherNet
@HypherNet 6 жыл бұрын
Yeah I saw this too -- it's still pretty bad, but not nearly so much as he expresses in the video.
@RichardEricCollins
@RichardEricCollins 6 жыл бұрын
@@HypherNet Why is it 'pretty bad'? Looks fine to me.
@ijabbott63
@ijabbott63 6 жыл бұрын
@@RichardEricCollins It's pretty bad because it's very wasteful for this application that needs to transmit loads of bits. It's using 96 bytes of storage per neopixel, even though only 3 bytes are needed to represent the state of that neopixel - an efficiency of 3.13%. It's probably fine for remote control applications that only need to transmit a few bits for each control code. Using it for neopixels seems to be more of a quick hack by someone using existing libraries to get something up and running quickly.
@koko0riginal
@koko0riginal 6 жыл бұрын
that annoyed me too. informational videos that teach a lot of people should know the language they are reviewing...
@vsyncci
@vsyncci 5 жыл бұрын
no. the number after the colon is not "which bit the value is stored at" i.e. an offset, rather it's the width of the bitfield.
@alfredcornflake5032
@alfredcornflake5032 6 жыл бұрын
I can barely understand anything in this video but I love seeing the things that you do.
@HuntersMoon78
@HuntersMoon78 6 жыл бұрын
Same here
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
Just realized you don't need the AND gate you could just pipe SPI data into the "One" pulse timer. (assuming you used SPI Mode 1 where the data and clk rises at the same time)
@collinpearce310
@collinpearce310 6 жыл бұрын
Would you just hook up SPI_DATA to the CLR pin of timer B?
@asdasd-kf7lv
@asdasd-kf7lv 6 жыл бұрын
The rmt_data structure also doesnt have 4*4 bytes, you just didn't notice they are bitflags. Nice choking sounds though!
6 жыл бұрын
Also, you don't even need to 74 series logic gate, you could just use 2 diodes.
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
There'd be a bit of a voltage drop for the first Neopixel but yeah, should still work.
6 жыл бұрын
@@BenHeckHacks Yes, with a Schottky diode the voltage drop is negligible at 5 volt,
@ristomatti
@ristomatti 6 жыл бұрын
Got here through recommended videos. I found the narration of your problem solving process and the practical demonstration of oscilloscope use really useful. Thank you! Subscribed.
@patwicker1358
@patwicker1358 6 жыл бұрын
Just discovered your new channel, like it much better then the old one that I unsubscribed from.
@aequanimus63247
@aequanimus63247 6 жыл бұрын
Nice, That's working like a charm. Man, you do such a good job at explaining your thought process. Thanks Ben!
@mrburns366
@mrburns366 6 жыл бұрын
Galveston is pretty cool. I recommend the "duck tours." You get to hear about the cool pirate history of the area
@markr9069
@markr9069 6 жыл бұрын
Great idea. Even if the RAM saving isn't as much as you originally thought, being able to push the data to the pixels using DMA simplifies the code quite a bit and also means there are more cycles available for WiFi, Bluetooth or whatever else you're using to change the pixel content. I like this a lot.
@zeffofx
@zeffofx 6 жыл бұрын
this kind of video is why I am subscribed to TBHS years ago. thanks for bringing us again more techniques and hacks videos Mr. Ben Heck.
@gopherdan9
@gopherdan9 6 жыл бұрын
I was just looking at the Adafruit NeoPixel library and thinking about re-writing it for my specific application to reduce the footprint. Your solution is a way better idea without a significant hit on the BOM!
@rekna1557
@rekna1557 8 ай бұрын
After some years I finally found time to rebuild the fixed version (Mentioned in the issue log of your Repository) of this adapter to drive a WS2812 strip with a STM32... And as I could not setup the required SPI Speed with an STM32 Blue Pill board... After some testing and different approaches to work around this issue, I ended up with a scaled solution, that a single STM32 Blue Pill board drives 8 (eight!) WS2812 strips in parallel with up to 512 LEDs each in full speed (freerun mode) 🙂
@timh2870
@timh2870 6 жыл бұрын
Excellent work! One thing you didn't say though, for those who weren't paying attention... you dropped the memory requirements from 96 bytes per pixel to three.
@smartperson1
@smartperson1 6 жыл бұрын
I'm not sure what changed, but your recent videos are way way better than that overproduced stuff you were doing for a while. Keep it up, Been!
@pinealservo
@pinealservo 6 жыл бұрын
The 1-to-3 expansion for the direct SPI control doesn't have to take any extra RAM; you just have to expand your pattern to 3 bits as you write it to the SPI input buffer.
@Mark-px3rq
@Mark-px3rq 6 жыл бұрын
SPI clock is identical to the longer output, so a lot of logic circuitry could be saved here by feeding the SPI clock directly in to the AND gate
@MakunaRGBIC
@MakunaRGBIC 6 жыл бұрын
NeoPixelBus uses the I2S hardware support currently with a better RMT method coming soon. SPI will waist a clock pin which ws2812 don't are about. SPI is better for APA102 which needs that clock. NOTE: The RMT buffer EXPLOSION is crazy, but they finally added support to SHARE the RMT ISR so it can be converted on the fly. The approach I wanted to implemented and drove for that support.
@MichaelHomeisterMardorf
@MichaelHomeisterMardorf 6 жыл бұрын
Love ya, keep up the good work! Bought a pinball machine and got into this hobby b'cause of your videos :-) started to build my own and finally got deep into hardware programming. keep up the good work!
@hrnekbezucha
@hrnekbezucha 6 жыл бұрын
Absolutely love your new channel. Doing great job, man
@joelius24
@joelius24 6 жыл бұрын
No matter how much I progress in this field, Ben remains on another plain.
@HeyBirt
@HeyBirt 6 жыл бұрын
Nice! I recently used a 74LS123 on my CNC-64 project to generate a step pulse on the rising and falling edge of an output pin on the C64 user port. By doing it this way I was able to get a 1kHz step pulse rate from a NMI handler while parsing movement commands.
@keithcitizen4855
@keithcitizen4855 5 жыл бұрын
Brilliant technical demo, light years ahead of 555 shows.
@EdwinNoorlander
@EdwinNoorlander 6 жыл бұрын
Really cool, something I want to make. Thanks Ben. Nice to make it work with Home Assistances.
@haakonness
@haakonness 4 жыл бұрын
Something many don't know about the ESP32 is that it is dual core 240mhz, which is _pretty_ neat.
@crides0
@crides0 6 жыл бұрын
Wrong struct size for the rmt library. LOOK AT THE BIT FIELD SIZE!!!
@az09letters92
@az09letters92 6 жыл бұрын
Yup! He also missed the union. I guess this the author doesn't know C programming, at least bit fields and unions. "rmt_data_t" total size is 32 bits or 4 bytes.
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
I don't fully understand that part. But compiled RAM size still figures to 96 bytes per pixel.
@MrRadar
@MrRadar 6 жыл бұрын
@@BenHeckHacks Bit fields let you pack multiple numeric values within a single (integer) structure field without having to do the complicated bit operations to pack and unpack the data yourself. Each rmt_data_t is only 4 bytes in size (since it's packing 32 total bits of data into a 32-bit uint32_t data field).
@az09letters92
@az09letters92 6 жыл бұрын
@@BenHeckHacks Well, that's 4 bytes per bit. A pixel has 24 bits. 4 * 24 = 96. If it was "times 4", it'd be 384 bytes per pixel...
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
@@MrRadar Got it! It's still a lot.
@MaxintRD
@MaxintRD 6 жыл бұрын
Very cool! Great solution to keep overhead limited and programming simple. Great!
@NicksStuff
@NicksStuff 6 жыл бұрын
So......what are you doing with all that free RAM, now?
@theforce82
@theforce82 5 жыл бұрын
Free RAM for Solenoids, 128×32 DOT Matrix pinball LED display , mp3 player 🙉
@malgailany
@malgailany 6 жыл бұрын
Very well explained, innovative idea. Thank you Ben!
@pegroj
@pegroj 6 жыл бұрын
Keep creating Ben, awesome work
@philiprowney
@philiprowney 5 жыл бұрын
Past 10:00 this is just tech g33k pron. Delicious breakdown Ben. You should teach digital electronics.
@Sharklops
@Sharklops 6 жыл бұрын
Let's get this circuit laid out on a tray...
@TrevorDBrown
@TrevorDBrown 6 жыл бұрын
CRE = Circuits Ready to Energize
@NickNorton
@NickNorton 6 жыл бұрын
Not sure Ben's Electronics should emit a "Nice Hiss" though.
@DJlegionuk
@DJlegionuk 6 жыл бұрын
what about using fast led with apa102 led instead.
@ctjet99channel
@ctjet99channel 6 жыл бұрын
Works with ws2812b too
@bleepbloopblahp
@bleepbloopblahp 6 жыл бұрын
@@ctjet99channel FastLED works with a fair few RGB serial controller chips. It's awesome.
@ctjet99channel
@ctjet99channel 6 жыл бұрын
@@bleepbloopblahp I'm using it for my own projects with the esp8266 and esp32s right now. I agree it's amazing
@dariofagotto4047
@dariofagotto4047 6 жыл бұрын
I think you can use only half 74123 without logic gates simply driving an extra resistor (with a diode) into the RC time circuit
@eformance
@eformance 6 жыл бұрын
_2 Bits Enter, 1 Bit leaves_
@tomstern1681
@tomstern1681 6 жыл бұрын
Arduino code is not what you would call "efficient"
@ArjanvanVught
@ArjanvanVught 6 жыл бұрын
Yeah, just write baremetal C/C++
@Sembazuru
@Sembazuru 6 жыл бұрын
@@ArjanvanVught Nah... baremetal C/C++ has too much overhead. Go for assembler for the win. ;-)
@thebluemarauder
@thebluemarauder 6 жыл бұрын
I have another idea of how to do this without needing the logic gates. I'll test if when I have a chance. Basically have 2 resistors feeding the timer. One hooked straight to VCC, the other hooked to the output of a PNP transistor. The base of the PNP transistor would be hooked to the SPI data line. When the data line is 0, the transistor will turn on and the two resistors would be placed in parallel, lowering the overall resistance and thus the pulse length. Might even be able to pull it off with just a 555 with some clever trickery.
@DireChris
@DireChris 6 жыл бұрын
I've no idea what you said during the entire video but I still watched it lol
@davidwoods1337
@davidwoods1337 6 жыл бұрын
I love that you're connecting two digital signals with an analog part
@bena1654
@bena1654 4 жыл бұрын
Nobody mentioned the 1989 Steve reference... Cool channel!!
@mattb6001
@mattb6001 6 жыл бұрын
The best hardware for driving these addressable LEDs is by far the Teensy platform. The Teensy 3.2 and 3.5 are the most popular. Each boast 256k of RAM, so excess RAM usage basically doesn't matter. Also there are two great libraries provided by the teensy developer himself. Both libraries are hardware solutions and minimize CPU time significantly by using DMA, timers, etc. The first, and most comparable library, is the WS2812Serial library that uses the built in hardware serial to create up to 6 (on teensy 3.5) LED light bus channels. The second is called OctoWS2811 that uses the built in PWM hardware to drive up to 8 channels of LEDs (at the cost of losing 8 pwm pins and the associated timer). You can drive literally 1000's of LEDs with minimal CPU overhead. In my testing today I was getting something like 70 microseconds of CPU time needed to drive 150 LEDs using the WS2812Serial library. The same amount of LEDs required 4 milliseconds of CPU time using the Adafruit_Neopixel library.
@tmbarral664
@tmbarral664 4 жыл бұрын
I usually see Galveston with a lot of Harleys ;) Nice view for a change :)
@cdnsoundguy
@cdnsoundguy 6 жыл бұрын
Ben you are brilliant...I loved this video.
@darksunrise957
@darksunrise957 6 жыл бұрын
I... I... I didn't know "And" and "Or" gates were actually a thing that existed. Always figured it was a super simple representation of programming, or at most an also super simplified version of combining signals using transistors or the like, but no-one used them like that IRL. This feels like everything I learned has been turned upside down XD
@jeffersonsilveira1452
@jeffersonsilveira1452 6 жыл бұрын
Actually, inside the gates they are using transistors so you were still right even before. But it is really cool to see the simple "abstract" stuff being used iRL.
@thiagocamargoalima
@thiagocamargoalima 6 жыл бұрын
3:30 - "Gets you to the fucking moon!" 🤣🤣🤣🤣
@michaelgraff6978
@michaelgraff6978 6 жыл бұрын
Cool project. Look up what a union does when there is also a bitfield. The bits become packed. That said, it's still 24 bits per pixel, at 4 bytes each... Probably. It may only keep that around to send the pulse chain out for a single LED, and reuse them after.
@garagemonkeysan
@garagemonkeysan 6 жыл бұрын
Nice. Thanks for filming the github and datasheets for us newbs. : )
@der.Schtefan
@der.Schtefan 4 жыл бұрын
Couldn't you simply multiplex the resistor or use a quad-nand at the output stage?
@poprawa
@poprawa 5 жыл бұрын
This setup is beautiful :3
@xRawlins
@xRawlins 6 жыл бұрын
Those damn piecofarads are slippery buggers.
@devrim-oguz
@devrim-oguz 6 жыл бұрын
How about using I2S to drive the neopixels direclty instead of SPI or another library?
@oPossum5150
@oPossum5150 6 жыл бұрын
You could use a 74HC157 instead of the AND and OR gates to make it a 2 chip solution. Also could use a little 6 pin 74LVC1G157 if you don't mind SMD.
@MD_Builds
@MD_Builds 6 жыл бұрын
Im certain the library could have been edited to make it far more memory efficient, Though maybe a little slower to chuck out the data, but with an ESP you'd never really notice.... However, this really reminds me I really need to start learning this level of electronics hardware. Im still pretty much a beginner...
@MrPmjg
@MrPmjg 6 жыл бұрын
You miss understood the code. The library uses one uint32_t per bit, the 2 duration and 2 level are stored in a single uint32_t, and inside the struct you have the Union, but that doesn't increase the size of the struct, it just give you another way to access or copy the data without having to copy each element of the struct
@MrPmjg
@MrPmjg 6 жыл бұрын
I also don't like the first library, it uses to much cpu and memory. But I would use the SPI with DMA library as it doesn't need any extra hardware (also no extra cost)
@Sembazuru
@Sembazuru 6 жыл бұрын
Question about how you connected the pot. Since you are using it as a clock, would the unused pin act as an antenna and randomly adjust the bias of the RC circuit killing stability? Should you tie the unused end of the pot to the wiper to remove that? Or would that resistor (unused side of the pot) loop act as an even better antenna than the floating pin? Or are your frequencies in this circuit too low to worry about this?
@Dust599
@Dust599 6 жыл бұрын
could you not use 2 PWM pins for signal generation? (has to be some way to sync it to the clock) this would halve your chip count.
@Galeere2
@Galeere2 6 жыл бұрын
Does Anybody else have Issues with audio? Ive tried different browser and it still doenst work. Did you use some copyrighted content that my be blocked in Germany?
@Rickmakes
@Rickmakes 6 жыл бұрын
Was the B17 flight with the Liberty Foundation? I climbed through one but didn’t fly on it.
@DoRC
@DoRC 6 жыл бұрын
Fine. I bought an esp32. I hope you're happy.
@MrEdwardhartmann
@MrEdwardhartmann 6 жыл бұрын
I have been using STM32 Blue Pill micros to build pinball machines with WS-2812s and SK-6812 (RGBW) leds and the library uses the 3byte per byte method to create the pulse widths for the SPI output. One thing I was wondering about your design is the stability under the harsh conditions that a pinball machine finds itself in. Since the BluePill has more than enough memory and flash to handle the 12 bytes per pixel needed for the RGBW leds and is crystal controlled, I am fairly sure it will not have a problem, but an RC circuit might not be as stable and the margin for error on the pulse widths is not that large. I think Steve Evens' post below about using an ATtiny as the converter might be a good idea since it would again give you that crystal controlled clock rates.
@warrenparsons2952
@warrenparsons2952 6 жыл бұрын
Ben, if you're looking for a nice calculator for Windows, I'd recommend SpeedCrunch. I've replaced my calc.exe and never looked back.
@Sheevlord
@Sheevlord 6 жыл бұрын
Great video, as always! It would be awesome if you posted the source code and the schematic somewhere. I know it's possible to pause the video and take screenshots but it's not very convenient.
@twicethemegapower3995
@twicethemegapower3995 6 жыл бұрын
I told you it would come to this. I was right, the jedi are taking over.
@ArsenTufankjian
@ArsenTufankjian 6 жыл бұрын
I don't know if it was pointed out yet but that rmt_data_t struct should only take up 32 bits. The struct has uint32_ts but the : 15 and : 1 denotes how many bits that field in the struct actually uses. So it's not 32 * 4 + 32 bits. It's 15 + 1 + 15 + 1 = 32 unioned with a 32 bit field so it only actually takes up 32 bits. Still a lot for just driving an on or off state.
@MrSapps
@MrSapps 6 жыл бұрын
64 bits cause there is an int32 after the bit fields/union
@ArsenTufankjian
@ArsenTufankjian 6 жыл бұрын
"val" is unioned with the struct. the 32 bits in "val" correspond to the bits laid out in the struct
@donmorris8972
@donmorris8972 6 жыл бұрын
Ben - on the revised schematic the “ONE” timer is triggered by the rising edge of the MOSI signal. On the video at about 15:50 the scope shows the MOSI signal at a solid HIGH for the entire 0xFF byte. Would not this transmit only (1) long pulse and (7) short pulses instead of the (8) long pulses expected (Only one rising edge)?
@SlaMaster
@SlaMaster 5 жыл бұрын
I wish I knew this before I started my rgb project, but still great video ;)
@TheBypasser
@TheBypasser 6 жыл бұрын
Quad UINTs per bit: Arduino's stupidity in a nutshell :) I usually do the alike stuff on 8-bit MCUs (as 32-bit ones are an overkill and FLASH waste there, imo), and for this thing I'd just transcode the stream on-the-fly (takes 8 SBRS-ORI paired instructions per byte if talking AVR, 24 clocks). As for the bus, just using a 7-bit UART feels like the best choice as it already has a start and stop bits (to have the leading '1' and trailing '0'), just needs an inverter which you are better to have as a line driver anyway, and will require a faster chip due to the 8-tap sampling logic. The SPI+timer for the preemptive interrupts is also a possible choice, though if lazy enough this can be done just clocking the pin manually (in the very most cases of lighting control the chip is idle most of the time anyway so this will save you the parts for no actual cost).
@KanalFrump
@KanalFrump 6 жыл бұрын
Brilliant hack, Ben!
@frustro4323
@frustro4323 5 жыл бұрын
By the end i was so entranced after the scope and the board I yelled "WTF!! he's got and ESP32, why he do all that?" 2 minutes later....oh.....because he could.
@LucasHartmann
@LucasHartmann 6 жыл бұрын
You may be able to use only a single 555 if use the data line to interfere with the capacitor charge time through a second potentiometer. You will need to ^0xFF the data, though.
@JoQeZzZ
@JoQeZzZ 6 жыл бұрын
I never understood why people use ^0xFF over ~. Is this a personal preference thing or is there some actual difference between the two?
@LucasHartmann
@LucasHartmann 6 жыл бұрын
@@JoQeZzZ They are the same only for uint8_t, but I used ^0xFF because I thought it would make the idea clearer.
@JoQeZzZ
@JoQeZzZ 6 жыл бұрын
Ah check, so it is personal preference then. Thanks man
@SeishukuS12
@SeishukuS12 6 жыл бұрын
That's pretty awesome! Now just make some SMD PCBs and sell it as a kit! :D
@cediddi
@cediddi 4 жыл бұрын
This is cool and all but, why nobody thought of i2c or spi drivers for neopixels? Just a dedicated chip doing all the work. We have 328p based i2c->parallel line lcd drivers, why not this?
@elmariachi5133
@elmariachi5133 6 жыл бұрын
Hello! How do you install ESP32 on Arduino IDE? Is it just like installing some libraries? Could you make a little howto on this? Thanks :)
@TheRainHarvester
@TheRainHarvester 6 жыл бұрын
A pinball machine is a great project for showing off your leet LEDs haxor skillz! :-) We should think of a new kind of game that doesn't take so much space. Pachinko?...But with lots of leds.
@ClokworkGremlin
@ClokworkGremlin 6 жыл бұрын
2:25 "You int32 FOUR BYTES, TIMES FOUR, FOR EVERY BIT?" Hand me my trout, someone needs to get slapped.
@johntoe6127
@johntoe6127 6 жыл бұрын
Keep life simple...drop in a dedicated $3 Arduino nano....code whatever you want displayed into the nano, and send it commands from the ESP32 via I2C. I did this for a robot car that was being run by a RPI. PI just sends commands to the light controller. WS2812 neo pixels were used for headlight, tail lights, turn signals, etc
@thomasvnl
@thomasvnl 6 жыл бұрын
All you need now is an UberCoolBenHeckNeoPixelSPIDMA library 😂 No but seriously, nicely done Ben!
@pahvalrehljkov
@pahvalrehljkov 5 жыл бұрын
this needed to be done! more than this library just dont make sense...
@avejst
@avejst 6 жыл бұрын
Wow, interesting approach Thanks for sharing :-)
@UntrackedEndorphins
@UntrackedEndorphins 6 жыл бұрын
Loving the new content, keep it up :)
@jostsalathe
@jostsalathe 6 жыл бұрын
Wouldn't it be way more compact to use a tiny microcontroller (like e.g. an ATtiny) to convert from SPI to the WS2812B protocol? I was thinking about a way to build compact dedicated hardware to drive those LEDs that would reduce the resource requirements on the main MCU for quite a while now... Your approach probably is a lot cheaper, though, especially in larger production quantities. xD
@xMalhardeshmukh
@xMalhardeshmukh 6 жыл бұрын
And KiCAD please?
@GlennPierce
@GlennPierce 6 жыл бұрын
Explained really well.
@KiR_3d
@KiR_3d 6 жыл бұрын
Are these Neopixels PWM controlled (driven?) _only?_ I mean about that blinking (that also is visual on cameras).
@Sembazuru
@Sembazuru 6 жыл бұрын
Internally, yes. One uses them by feeding a data signal with RGB values (not in that order, looking at the color he got with FF00AA I would guess BRG). There is a small ASIC (Application Specific IC) inside each neopixel that looks at the data stream on its input pin. It sets it's own PWM drivers based off of the first 3 bytes and then sends the rest of the data stream out it's output pin. Neopixels (WS2811, WS2812, or SK6812) are known for having fairly slow internal PWM clocks. Dotstars (APA102) have a faster PWM so are more suited to PoV applications, but require 2 wires (clock and data) to drive them.
@jordanwaughtal7649
@jordanwaughtal7649 6 жыл бұрын
SPI Potentiometers?
@juststeve5542
@juststeve5542 6 жыл бұрын
Is it wrong that my urge is to just grab an ATtiny to use as the interface? Certainly a smaller chip-count, not so sure about power consumption though... But compared to a load of glowing LEDs, pretty insignificant I imagine.
@clownisius
@clownisius 6 жыл бұрын
At tiny costs more than the logic gates, in speed and monies.
@juststeve5542
@juststeve5542 6 жыл бұрын
@@clownisius maybe, but you save on space, other components and you barely need a pcb... Plus I have several in a draw... Unlike 74123s 😉
@RAPXZibit
@RAPXZibit 6 жыл бұрын
You're wrong - they cost in china roughly the same, 5x74hc123 = 2$, 10 SMD tiny13 - 3$, DIP8 - 3$ for 5, thats first results really. and i bet anything that 1kb is enough to covert spi signal to that weird timings, just a touch of asm nops and there you go tiny can run on intenal clock (bc ws doesnt give a lot of shit about timings), and all you need to do - pipe in over spi some data, and maybe use one leg as a feedback, in case if you are faster than driver also i hate ws, if only they had a clock pin...
@mattb6001
@mattb6001 6 жыл бұрын
3:29 I'm literally crying laughing right now
@TheDefpom
@TheDefpom 6 жыл бұрын
Very nice, but I think I prefer a bit bang approach.
@clownisius
@clownisius 6 жыл бұрын
You're selling a diy or pre-made kit, right? Or selling the idea to adafruit, I think they have a royalty program for circuit designs. This would save so much memory on the esp32.
@haakonness
@haakonness 4 жыл бұрын
Ben, while you are having a stroke about the struct with the "uint32_t" for every member of the struct. You seem to miss the colons. :1 means that it only uses 1 bit in the struct. the uint32 in front is just misleading. You should read more up on structs in C :) And then "theres also a value in here?", is a UNION. Which means that you can address the same memory, only 32 bit in total for the union. Either via the struct which picks out the bits from the uint32. Or the "val" which is all the bits combined. So rmt_data_t is only 32 bits in memory.
@jonesy2009
@jonesy2009 6 жыл бұрын
Ben, please invest in a lapel mic. Love your content though!
@Anonymouspock
@Anonymouspock 6 жыл бұрын
Or if that's not an option, put a phone in your shirt pocket and record audio with that.
@dannygrob
@dannygrob 6 жыл бұрын
I think he hates them
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
Yup. Wore them for 8 years. Never again. Don't bother trying to change my mind.
@dmaneiro88
@dmaneiro88 6 жыл бұрын
Great video ben!
@vega1287
@vega1287 6 жыл бұрын
13:16 you could have done that lioic with just one quad nand ic
@hansdietrich83
@hansdietrich83 6 жыл бұрын
Buolding things on protoboad is so expensive here in germany. Compared to protoboard, you can buy here, it's cheaper to order custom pcbs from JLCPCB
@tuttocrafting
@tuttocrafting 6 жыл бұрын
Yup, also in Italy. I started to buy pcbs directly from oshpark and now JLCPCB for prototypes.
@MrFaaaaaaaaaaaaaaaaa
@MrFaaaaaaaaaaaaaaaaa 6 жыл бұрын
you cant buy protoboard on ebay?
@Sheevlord
@Sheevlord 6 жыл бұрын
Protoboards are pretty cheap on eBay or Aliexpress.
@tuttocrafting
@tuttocrafting 6 жыл бұрын
If I have to wait 40 days for protoboards I prefer use that time to build a prototype on breadboard and than order a custom pcb. Same time, better result!
@Sheevlord
@Sheevlord 6 жыл бұрын
@@tuttocrafting But you can buy protoboards in advance and have a bunch of them for future use.
@tigheklory
@tigheklory 6 жыл бұрын
Great video Ben! How many of those prototype boards did you buy at Radio Shack when they went out of business? I got a ton.
@BenHeckHacks
@BenHeckHacks 6 жыл бұрын
Felix and I both bought well over 1k of them.
@tigheklory
@tigheklory 6 жыл бұрын
@@BenHeckHacks that's not enough! LOL
@SodAlmighty
@SodAlmighty 6 жыл бұрын
That. Was. Awesome.
@rdoetjes
@rdoetjes 5 жыл бұрын
You could exchange the or and the and with one to nand chip with 4 nands. That saves a chip. The and you just need to invert with a single transistor. But, who’s counting :)
@joksanalvarado4855
@joksanalvarado4855 6 жыл бұрын
Yeah, let's save all the invaluably precious memory on a chip with half a megabyte of RAM. We absolutely NEED those 4K! Chip count and BOM cost is of no consequence after all XD. Inconvenient, unnecessary, over-designed extra board which totally can be replaced with software. I love it :D
@KidCe.
@KidCe. 6 жыл бұрын
Lool, I just had almost the same idea a few weeks ago when I was thinking about how to run these on an STM32
@hansdietrich83
@hansdietrich83 6 жыл бұрын
But does using external digital ics count as "running everything on the esp32"? Let's go _philosophical_
@Diamonddrake
@Diamonddrake 6 жыл бұрын
Fasted library just uses two bytes per neopixel and works on any digital pin. Why was that not a usable solution? Dma is a nice touch though
@pikadroo
@pikadroo 6 жыл бұрын
I am so glad adafruit invented this.
How to use the Atmel ATTINY10 Microcontroller
53:02
Ben Heck Hacks
Рет қаралды 553 М.
Ben Heck's Atari Video Music Teardown
17:54
element14 presents
Рет қаралды 96 М.
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 700 М.
Surface Mount Tutorial
16:28
Ben Heck Hacks
Рет қаралды 46 М.
HOW TO USE WS2812B NEOPIXELS WITH FASTLED ON ARDUINO
24:32
Gadget Reboot
Рет қаралды 185 М.
The world's worst video card?
32:47
Ben Eater
Рет қаралды 7 МЛН
SPI (Bit Banging)- IO from Scratch - Part 4
30:04
James Sharman
Рет қаралды 10 М.
What’s Behind the Light? - How WS2812B LED Strips Work
20:45
Intermation
Рет қаралды 56 М.
Easy & Powerful Arduino Alternative? #3 Teensy Beginner's Guide
10:42
I Made The Ultimate Cheating Device
9:39
ChromaLock
Рет қаралды 1,9 МЛН
ESP32 VGA [Arduino, 3D]
7:09
bitluni
Рет қаралды 130 М.