Hardware PWM mit dem Raspberry Pi:
Allgemein Hardware:
http://www.codecubix.eu/index.php/2018/05/29/dark-side-of-the-raspberry-pi/WiringPi:
http://wiringpi.com/https://www.raspiprojekt.de/anleitungen/10-wiringpi.html?showall=1&limitstart
Erste Erkenntnis: Bei den neueren Versionen von Raspberian ist wiringpi schon vorinstalliert
Test:
In Eingabe-Shell (schwarze Kasten mit blauen Strich und dem Zeichen >_
pi@raspberry:~ $ gpio -v
Nun Kommt Version und Author und so weiter.
Über den folgenden Befehl könnt Ihr Euch den aktuellen Status Euers Ports anschauen:
pi@raspberry:~ $ gpio readall
Ein erste Beschreibungen mit einer LED/Motor findet Ihr unter:
http://blog.simtronyx.de/raspberry-pi-led-mit-ajax-und-pwm-dimmen/
https://raspi.tv/2013/how-to-use-wiringpi2-for-python-with-pull-ups-or-pull-downs-and-pwm
https://www.raspberrypi.org/forums/viewtopic.php?t=25679
Feststellung: Der Scheiß geht nicht so!!!
Nächste Versuch mit GPIO:
Hier ein paar Tutorials (SW-PWM):
https://forum-raspberrypi.de/forum/thread/7193-rgb-led-steuerung-mit-hardware-pwm/
https://www.youtube.com/watch?v=9tActipVqIM
Hinweis: Verlassendes Programms über KeyboardInterrupt mit: Strg+c
So, da es anscheinend nur Mist im Internet gibt, möchte ich das Internet auch mit meinem Mist belästigen:
Was geht, ist eine SW-PWM die mit den Pfeiltasten (oben/unten) im Dutycycle verändert werden kann.
Was nicht geht, eine adäquates verlassen des Programms:
import RPi.GPIO as GPIO
import time
import pygame, sys
from pygame.locals import *
pygame.init()
BLACK = (0,0,0)
WIDTH = 100
HEIGHT = 100
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
windowSurface.fill(BLACK)
x = True
GPIO.setmode(GPIO.BCM)
blinkCount = 3
cycle = 50
LEDPin = 18
freq = 50
GPIO.setup(LEDPin, GPIO.OUT)
p = GPIO.PWM(LEDPin,freq)
p.start(cycle)
try:
while x:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_DOWN:
cycle = cycle - 1
if cycle < 0:
cycle = 0
p.ChangeDutyCycle(cycle)
print(cycle)
time.sleep(0.2)
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_UP:
cycle = cycle + 1
if cycle > 100:
cycle = 100
p.ChangeDutyCycle(cycle)
print(cycle)
time.sleep(0.2)
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_q:
p.stop()
x = False
except KeyboardInterrupt:
pass
p.stop()
GPIO.cleanup()
import time
import pygame, sys
from pygame.locals import *
pygame.init()
BLACK = (0,0,0)
WIDTH = 100
HEIGHT = 100
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
windowSurface.fill(BLACK)
x = True
GPIO.setmode(GPIO.BCM)
blinkCount = 3
cycle = 50
LEDPin = 18
freq = 50
GPIO.setup(LEDPin, GPIO.OUT)
p = GPIO.PWM(LEDPin,freq)
p.start(cycle)
try:
while x:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_DOWN:
cycle = cycle - 1
if cycle < 0:
cycle = 0
p.ChangeDutyCycle(cycle)
print(cycle)
time.sleep(0.2)
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_UP:
cycle = cycle + 1
if cycle > 100:
cycle = 100
p.ChangeDutyCycle(cycle)
print(cycle)
time.sleep(0.2)
if event.type == KEYDOWN:
key = event.key
if key == pygame.K_q:
p.stop()
x = False
except KeyboardInterrupt:
pass
p.stop()
GPIO.cleanup()
Keine Kommentare:
Kommentar veröffentlichen