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