Hallo,
ich brauche fuer den TPA2016 Amp (Adafruit) eine Library fuer den Raspberry.
Kann leider nur die Library fuer Arduino finden.
Hat jemand Erfahrung mit dem TPA2016?
Vielen Dank
Trebor
Hallo,
ich brauche fuer den TPA2016 Amp (Adafruit) eine Library fuer den Raspberry.
Kann leider nur die Library fuer Arduino finden.
Hat jemand Erfahrung mit dem TPA2016?
Vielen Dank
Trebor
TPA2016 Library? Schau mal ob du hier fündig wirst!
Wie willst du den denn verdrahten? Soll der Audio ausgeben? Dann hol dir lieber einen HiFi Berry.
Gesendet von iPhone mit Tapatalk
Ich will die Lautstaerke ueber I2c steuern.
Und das Audio Signal kommt woher? Von der Klinke?
Wie dem auch sei. Das Datenblatt von TI ist gut zu lesen. I2C mit Python & dem Pi findest du viel zu. Das sollte eigentlich reichen. Insbesondere wenn du C Code für den arduino hast, da kann man ja sehen, welches der nur 7 Register wie beschrieben wird.
Gesendet von iPhone mit Tapatalk
In welcher Register Adresse kann ich die Lautstaerke aendern?
Hier der Link vom PDF Datasheet: https://cdn-shop.adafruit.com/datasheets/TPA2016D2.pdf
Ab Seite 22 beginnen die Register.
5 und 7 muss die Compression auf 11 gesetzt werden.
Gesendet von iPhone mit Tapatalk
Egal welchen Wert ich bei fixed gain eintrage, die Lautstaerke bleibt fast gleich.
Hier mein Code:
# !/usr/bin/python3
# coding: utf-8
import pygame
import smbus
TPA2016_I2CADDR = 0x58
bus = smbus.SMBus(1)
bus.write_byte_data(TPA2016_I2CADDR, 0x7, 0b11000000) # AGC compression OFF
bus.write_byte_data(TPA2016_I2CADDR, 0x5, 0b0) # fixed gain
pygame.mixer.pre_init(44100, -16, 1, 2048)
pygame.mixer.init()
pygame.init()
pygame.mixer.music.load("/home/pi/musik/Meditation.mp3")
def main():
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
Alles anzeigen
Du traegst ja auch die Kompression auf 0 ein, nicht auf 11, und dafuer den maxgain auf 11, womit die eingestellte Laeutstaerkeregelung maximal greift.
Versuch stattdessen 0b11.
Automatisch zusammengefügt:
Und natuerlich solltest du auch Register 5 abwechselnd auf 0b100100 bzw 0b011110 setzen, fuer den maximalen Unterschied.
0b11 in Register 7 ist nun gesetzt. Gleiche Lautstaerke , egal ob 0b011110 oder 0b100100 in fixed gain (Register 5) gesetzt wird.
# !/usr/bin/python3
# coding: utf-8
import pygame
import smbus
TPA2016_I2CADDR = 0x58
bus = smbus.SMBus(1)
bus.write_byte_data(TPA2016_I2CADDR, 0x7, 0b11) # AGC compression OFF
bus.write_byte_data(TPA2016_I2CADDR, 0x5, 0b011110) # fixed gain oder 0b100100
pygame.mixer.pre_init(44100, -16, 1, 2048)
pygame.mixer.init()
pygame.init()
pygame.mixer.music.load("/home/pi/Pharao/musik/Jason Shaw - River Meditation.mp3")
def main():
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
Alles anzeigen
Sieht ja ganz gut aus. Ist der per i2cdetect zu sehen?
Gesendet von iPhone mit Tapatalk
Nach Eingabe von: sudo i2cdetect -y 1
wird 58 angezeigt.
Lass dir doch mal den Inhalt aller Register ausgeben. Vor und nach deinen eigenen Setzungen.
Defaults:
Register : 1 0b11000011
Register : 2 0b101
Register : 3 0b1011
Register : 4 0b0
Register : 5 0b110
Register : 6 0b1111111
Register : 7 0b11000001
write Reg 7 +5:
Register : 1 0b11000011
Register : 2 0b101
Register : 3 0b1011
Register : 4 0b0
Register : 5 0b100100
Register : 6 0b1111111
Register : 7 0b0
# !/usr/bin/python3
# coding: utf-8
import pygame
import smbus
TPA2016_I2CADDR = 0x58
bus = smbus.SMBus(1)
print("Defaults:")
for reg in range(7):
read = bus.read_byte_data(TPA2016_I2CADDR, 0x1+reg)
print("Register : ", reg+1, bin(read))
bus.write_byte_data(TPA2016_I2CADDR, 0x7, 0b0) # AGC compression OFF
bus.write_byte_data(TPA2016_I2CADDR, 0x5, 0b100100) # fixed gain oder 0b100100
print("write Reg 7 +5:")
for reg in range(7):
read = bus.read_byte_data(TPA2016_I2CADDR, 0x1+reg)
print("Register : ", reg+1, bin(read))
pygame.mixer.pre_init(44100, -16, 1, 2048)
pygame.mixer.init()
pygame.init()
pygame.mixer.music.load("/home/pi/Pharao/musik/Jason Shaw - River Meditation.mp3")
def main():
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if __name__ == '__main__':
main()
Alles anzeigen
Automatisch zusammengefügt:
Ich habe das Adafruit Forum : https://forums.adafruit.com/viewtopic.php?f=19&t=55847 gelesen (leider auf english).
Erste Antwort vom Admin: [font="Gotham SSm A, Gotham SSm B, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif"]3.3k resistor and a 100-ohm resistor[/font]
[font="Gotham SSm A, Gotham SSm B, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif"]Hat es vieleicht etwas damit zu tun?[/font]
[font="Gotham SSm A, Gotham SSm B, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif"]Ist fuer mich leider etwas zu kompliziert im Moment.[/font]
Klingt plausibel. Hol dir lieber einen anderen Soundchip. Denn wenn der an der Klinke des Pi hängt, ist der Sound eh Murks.
Gesendet von iPhone mit Tapatalk
Wenn die Musik abgespielt wird ist das Rauschen ueber Klinke und meinen Lautsprechern nicht zu hoehren. Dnach mach ich ein shutdowmn vom Amp uber GPIO und alles ist gut.
Mit dem MAX9744 Amp ist die Lautstaerkesteuerung mit I2c kein Problem. Ist aber doppelt so teuer und 4 mal so gross.
Und der Hifiberry ist noch teurer und groesser. (Habe Platzmangel)
Kannst du mir eine USB Soundkarte empfehlen?
Im Rahmen meines Gameboy Zero Projektes, wo Platz auch nicht vorhanden ist, habe ich Diese bestellt.
Die USB Soundkarte ist zu lang fuer mein Projekt. Ich habe den Pi3 mit dem PITft 3.5 Touchscreen am laufen.
Wenn ich nun eine 40pin GPIO Verlaengerung vom pi zum Touchscreen haette, waehren viele meiner Probleme geloest.
Ich kann so ein Kabel leider nicht finden. Weiss jemand wo ich solch eine Verlaengerung kaufen kann?
Falls nicht, wie koennte ich es selbst bauen ?
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!