You should be able to use the library from Pascal directly rather than trying to recreate it from scratch.
Jeff On Sun, Jul 29, 2018, 10:20 AM Anthony Walter <sys...@gmail.com> wrote: > I'm not sure what would be the correct list for this question since it > involves writing Pascal code and not Lazarus, so here goes ... > > Can anyone offer me any advice or refer me to helpful resources on the > subject of using Pascal code to control WS2128 led strips > <https://www.youtube.com/watch?v=fh2QcmcBRpQ>, or neopixels, from a > Raspberry Pi? > > I've wired up a some neopixels > <https://www.amazon.com/gp/product/B072N7VGK6/ref=oh_aui_detailpage_o02_s01?ie=UTF8&psc=1> > and > am able to control them by way of PWM (pulse wave modulation) on GPIO 18 > (pin 12 on a Pi 3) using this rpi_ws281x git repository > <https://github.com/jgarff/rpi_ws281x>. It works great either in C or > using Python bindings, and I am able to create effects in C code easily. > But obviously I'd prefer to interface with the neopixels using Pascal. > > I've seen some Pascal libraries for both GPIO access, and DMA pin mapping, > but the communication protocol for controlling neopixels is a bit more > complex than writing a 24 bit value to a pin. Each pixel can be controlled > in both brightness and color, though I'm unsure how the wx281x library is > doing this. > > Assuming I was to do this in from scratch Pascal, that is control the > colors and brightness of many pixels withing an entire neopixel strip, I > believe I need to do the following in psuedo code. > > // open device memory > fd = open('/dev/mem') > // map the file descriptor to the memory address of gpio18 > gpio18 = mmap(fd, ...) > // fd is no longer needed > close(fd) > > [ then write to gpio18 in some loop as a data structure ] > > // cleanup > unmap(gpio18) > > If that psuedo code is the correct way to do things, I would need to know > what is the offset and page size for PWM GPIO18, what flags to use with > mmap, and finally what memory locations inside of the gpio18 pointer > control which pixel, what is the brightness memory location and size, what > is the color memory location and size for each pixel. Also, is there any > other memory location inside gpio18 that is of importance or relevance, > such as an on/off bit? > > Does anyone have any insight into this subject that might be useful? After > I get something that works I'll be sure to share the resulting Pascal code > and a video plus tutorial. > > TIA > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal