Pi3 and pixels make filesystem crash! Maybe sovlved

The more technical aspects of Spirit, and carry-over discussion from Kickstarter updates.
sm7tix
Posts: 31
Joined: Sat Oct 28, 2017 4:21 pm

Pi3 and pixels make filesystem crash! Maybe sovlved

Postby sm7tix » Fri Mar 23, 2018 12:41 pm

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.
Last edited by sm7tix on Sat Mar 24, 2018 10:23 pm, edited 1 time in total.
Kind regards

Stefan / SM7TIX

tvoverbeek
Posts: 5
Joined: Sun Feb 11, 2018 8:20 am

Re: Pi3 and pixels make filesystem crash!

Postby tvoverbeek » Fri Mar 23, 2018 1:28 pm

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.

sm7tix
Posts: 31
Joined: Sat Oct 28, 2017 4:21 pm

Re: Pi3 and pixels make filesystem crash!

Postby sm7tix » Fri Mar 23, 2018 10:32 pm

Ok. Looking forwards to a new solution.
Kind regards

Stefan / SM7TIX

sm7tix
Posts: 31
Joined: Sat Oct 28, 2017 4:21 pm

Re: Pi3 and pixels make filesystem crash!

Postby sm7tix » Sat Mar 24, 2018 10:22 pm

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.
Kind regards

Stefan / SM7TIX

tvoverbeek
Posts: 5
Joined: Sun Feb 11, 2018 8:20 am

Re: Pi3 and pixels make filesystem crash! Maybe sovlved

Postby tvoverbeek » Sun Mar 25, 2018 7:34 am

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


Who is online

Users browsing this forum: No registered users and 0 guests