Seite 2 von 2
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Dienstag 9. Juni 2015, 19:18
von Sirius3
@JenselBensel: Die Funktion ist statt der anderen setPixel-Funktion. Und wodurch die falschen Parameter entstehen, hatten wir hier ja schon mehrfach. Geh doch einfach mal von Hand Deine Schleifen durch und versuch zu verstehen, wie die LED-Nummern aus den Schleifenvariablen entstehen.
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Sonntag 26. Juli 2015, 16:48
von JenselBensel
Sorry für meine späte Antwort. Musste erstmal ein bisschen Abstand zu diesem Projekt nehmen.
Was haltet Ihr von dieser Lösung?
Code: Alles auswählen
#!/usr/bin/env python
import time
from neopixel import *
# LED strip configuration:
LED_COUNT = 15 # Number of LED pixels.
LED_PIN = 18 # GPIO pin connected to the pixels (must support PWM!).
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 5 # DMA channel to use for generating signal (try 5)
LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)
ZEIT = 800.0
FARBE = LED_BRIGHTNESS/4
FARBE2 = FARBE/4
# Define functions which animate LEDs in various ways.
def ledOff(strip, color):
for i in range((LED_COUNT)):
strip.setPixelColor(i, Color(0, 0, 0))
strip.show()
def ledKittfadein(strip, color, wait_ms=50):
for i in range(0, 255, 10):
for j in range(strip.numPixels()):
strip.setPixelColor(j, Color( i, 0, 0))
strip.show()
time.sleep(wait_ms/20000)
for i in range(255, -1, -5):
for j in range(strip.numPixels()):
strip.setPixelColor(j, Color( i, 0, 0))
strip.show()
time.sleep(wait_ms/20000)
ledOff(strip, color)
def ledKitt(strip, color, wait_ms=50):
# for x in range(1, LED_COUNT, 1):
for i in range(14, 0, -1):
y=i
strip.setPixelColor(i, color)
y=y+1
strip.setPixelColor(y, Color((FARBE), 0, 0))
strip.setPixelColor((y+1), Color((FARBE2), 0, 0))
strip.show()
time.sleep(wait_ms/ZEIT)
strip.setPixelColor((y+1), Color(0, 0, 0))
for j in range(0, 14, 1):
z=j
strip.setPixelColor(j, color)
z=z+1
strip.setPixelColor(z, Color(255, 0, 0))
strip.setPixelColor((z-1), Color((FARBE), 0, 0))
strip.setPixelColor((z-2), Color((FARBE2), 0, 0))
strip.show()
time.sleep(wait_ms/ZEIT)
strip.setPixelColor((z-1), Color(0, 0, 0))
strip.setPixelColor((z-2), Color(0, 0, 0))
# Main program logic follows:
if __name__ == '__main__':
# Create NeoPixel object with appropriate configuration.
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS)
# Intialize the library (must be called once before other functions).
strip.begin()
print 'Press Ctrl-C to quit.'
ledKittfadein(strip, Color(255, 0, 0))
while True:
ledKitt(strip, Color(255, 0, 0))
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Sonntag 26. Juli 2015, 21:25
von Sirius3
@JenselBensel: Sternchenimporte sind schlecht, Deine Einrückungen sind uneinheitlich (eingerückt wird immer mit 4 Leerzeichen), Du hast etliche unnötige Klammern, aber das schlimmste ist, das Grundproblem hat sich nicht geändert.
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Sonntag 26. Juli 2015, 22:35
von JenselBensel
Sirius3 hat geschrieben:@JenselBensel: Sternchenimporte sind schlecht,
Das habe ich so übernommen, mich aber auch nach dem Sinn gefragt. :K
Deine Einrückungen sind uneinheitlich (eingerückt wird immer mit 4 Leerzeichen),
Unerklärlich. Hab 4 Leerzeichen als Tab in Notepad++. :K
Du hast etliche unnötige Klammern,
Ich denke Du meinst die Klammern bei y+1 bzw. z-1, z-2...
aber das schlimmste ist, das Grundproblem hat sich nicht geändert.[/quote]
Ja stimmt. Jetzt taucht der Fehler erst beim beenden auf.
Aber nicht mehr im laufenden Betrieb.
Ich schreib jetzt mal meine Denkweise bei dem Script auf. Im Kopf schein ich so nicht darauf zu stoßen.
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Sonntag 26. Juli 2015, 22:41
von BlackJack
@JenselBensel: Lässt Du Dir Tabs mit vier Leerzeichen im Editor anzeigen oder verwendest Du dort tatsächlich *vier Leerzeichen* pro Ebene? Letzteres sollte man machen.
Es gibt auch noch Klammern um Konstanten die überflüssig sind.
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Montag 27. Juli 2015, 14:00
von JenselBensel
BlackJack hat geschrieben:@JenselBensel: Lässt Du Dir Tabs mit vier Leerzeichen im Editor anzeigen oder verwendest Du dort tatsächlich *vier Leerzeichen* pro Ebene? Letzteres sollte man machen.
Meistens lasse ich mir die vier Leerzeichen mit Tabs anzeigen. Letzteres mache ich eher selten oder nur in der Linux Shell.
Es gibt auch noch Klammern um Konstanten die überflüssig sind.
Ok, das versuche ich gleich mal raus zubekommen.
Re: Fehlermeldung *** glibc detected *** python: free(): inv
Verfasst: Montag 27. Juli 2015, 14:16
von JenselBensel
BlackJack hat geschrieben:
Es gibt auch noch Klammern um Konstanten die überflüssig sind.
Zeile 21
