[fpc-pascal] Pascal Neopixels

DaWorm daworm at gmail.com
Sun Jul 29 19:15:41 CEST 2018


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 <sysrpl at 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 at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20180729/51160def/attachment.html>


More information about the fpc-pascal mailing list