Page 1 of 1

Pi3 and pixels make filesystem crash! Maybe sovlved

Posted: Fri Mar 23, 2018 12:41 pm
by sm7tix
When I light up my rover the filesystem crash and I have to hard reset.
Any one else have this issue?
On the Pi2 it seams to work fine.

Re: Pi3 and pixels make filesystem crash!

Posted: Fri Mar 23, 2018 1:28 pm
by tvoverbeek
Hej sm7tix
Yes, filesystem goes read-only. Have to force reboot which runs filesystem check to repair the file system.
Caused by bad code in pgpixelserver. Working on an alternative implementation.

Re: Pi3 and pixels make filesystem crash!

Posted: Fri Mar 23, 2018 10:32 pm
by sm7tix
Ok. Looking forwards to a new solution.

Re: Pi3 and pixels make filesystem crash!

Posted: Sat Mar 24, 2018 10:22 pm
by sm7tix
I have solved the pixel error!
I read this page
[url]
https://tutorials-raspberrypi.com/conne ... ed-strips/
[/url]
From this i made this code

Code: Select all

#!/usr/bin/env python
# NeoPixel library strandtest example
# Author: Tony DiCola (tony@tonydicola.com)
#
# Direct port of the Arduino NeoPixel library strandtest example.  Showcases
# various animations on a strip of NeoPixels.

import time
from neopixel import *
import argparse

# LED strip configuration:
LED_COUNT      = 27     # Number of LED pixels.
LED_PIN        = 18      # GPIO pin connected to the pixels (18 uses PWM!).
#LED_PIN        = 10      # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ    = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA        = 10      # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 10     # Set to 0 for darkest and 255 for brightest
LED_INVERT     = False   # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL    = 0       # set to '1' for GPIOs 13, 19, 41, 45 or 53

def colorWipe(strip, color, wait_ms=50):
    """Wipe color across display a pixel at a time."""
    for i in range(strip.numPixels()):
        strip.setPixelColor(i, color)
        strip.show()
        time.sleep(wait_ms/1000.0)
 
def theaterChase(strip, color, wait_ms=50, iterations=10):
    """Movie theater light style chaser animation."""
    for j in range(iterations):
        for q in range(3):
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i+q, color)
            strip.show()
            time.sleep(wait_ms/1000.0)
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i+q, 0)
 
def wheel(pos):
    """Generate rainbow colors across 0-255 positions."""
    if pos < 85:
        return Color(pos * 3, 255 - pos * 3, 0)
    elif pos < 170:
        pos -= 85
        return Color(255 - pos * 3, 0, pos * 3)
    else:
        pos -= 170
        return Color(0, pos * 3, 255 - pos * 3)
 
def rainbow(strip, wait_ms=20, iterations=1):
    """Draw rainbow that fades across all pixels at once."""
    for j in range(256*iterations):
        for i in range(strip.numPixels()):
            strip.setPixelColor(i, wheel((i+j) & 255))
        strip.show()
        time.sleep(wait_ms/1000.0)
 
def rainbowCycle(strip, wait_ms=20, iterations=5):
    """Draw rainbow that uniformly distributes itself across all pixels."""
    for j in range(256*iterations):
        for i in range(strip.numPixels()):
            strip.setPixelColor(i, wheel((int(i * 256 / strip.numPixels()) + j) & 255))
        strip.show()
        time.sleep(wait_ms/1000.0)
 
def theaterChaseRainbow(strip, wait_ms=50):
    """Rainbow movie theater light style chaser animation."""
    for j in range(256):
        for q in range(3):
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i+q, wheel((i+j) % 255))
            strip.show()
            time.sleep(wait_ms/1000.0)
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i+q, 0)


# Create NeoPixel object with appropriate configuration.
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
# Intialize the library (must be called once before other functions).
strip.begin()

strip.setPixelColor(3, Color(255,0,0))
strip.setPixelColor(4, Color(255,0,0))
strip.setPixelColor(8, Color(255,0,0))
strip.setPixelColor(9, Color(255,0,0))
strip.setPixelColor(10, Color(255,0,0))
strip.setPixelColor(14, Color(255,0,0))
strip.setPixelColor(15, Color(0,255,0))
strip.setPixelColor(16, Color(0,255,0))
strip.setPixelColor(20, Color(0,255,0))
strip.setPixelColor(21, Color(0,255,0))
strip.setPixelColor(22, Color(0,255,0))
strip.setPixelColor(26, Color(0,255,0))
strip.show()

And the rover is stable as a rock!
I hope someone can confirm that it work on other pi3.

Re: Pi3 and pixels make filesystem crash! Maybe sovlved

Posted: Sun Mar 25, 2018 7:34 am
by tvoverbeek
Stefan,

Yes this works.
As I said before, the problem is in the pixelserver code which causes a lot of hanging sockets and animations which never finishes.
Have an alternative working server, but still need to adapt PixAnimation to the new server code.

Using the original Adafruit Python code for the neopixels should work without problems