Das Elektronik-Logbuch

Notizen und Tipps von Burkhard Kainka

22.2.2010 Das Ping-Pong-Radio




Der Ping-Pong-Bausatz mit Mega8-Controller von Franzis und Conrad hat eine LED-Anzeige mit insgesamt 120 LEDs. Da hat es mir in den Fingern gejuckt, ein Radio mit LED-Frequenzanzeige daraus zu machen. Hier habe ich die Conrad-Version verwendet, aber technisch sind beide gleich. Das Radio steht direkt auf einer Lautsprecherbox, die für den ausgewogenen Klang sorgt. Bei elo-web.de läuft gerade ein Programmierwettbewerb zu diesem System. Der Beitrag Impulszähler von Hermann Nieder enthält bereits die Programmierung einer dreistelligen Anzeige, die ich für das Radio fast ohne Änderungen verwenden konnte.



Das eigentliche Radio besteht aus der Heimradio-Platine von Modul-Bus. Der Mikrocontroller Tiny25 wurde aus der Fassung genommen. Stattdessen steuert der Mega8 das Radio über den I2C-Bus. Die beiden Leitungen SDA (C4) und SCL C5) sind direkt an der Ping-Pong-Platine erreichbar. Das Lautstärkepoti wurde auf der Radioplatine überbrückt. Statt dessen steuert der Mega8 die Lautstärke über Softwarekommandos. Das linke Poti im Ping-Pong wurde durch eins mit Schalter ersetzt, sodass man die Betriebsspannung abschalten kann. Radio und Controller werden durch drei Mignonzellen versorgt. Das andere Poti steuert wieder die Abstimmung. In diesem Fall wurden fünf Frequenzen fest vorgegeben. 



Lötseite: Untere Leitung SDA (an C4), obere Leitung SCL (an C5)

Download:  Pingpongradio.zip (Bascom-Quelltext und Hexfile, 8 KB)

Const F1 = 8880
Const F2 = 9510
Const F3 = 9650
Const F4 = 9920
Const F5 = 10670

Declare Sub Freq
Declare Sub Scan
Declare Sub Fm_tune_status()
Declare Sub Rx_volume()

Dim Xx As Single
Dim Yy As Single

Config Scl = Portc.5
Config Sda = Portc.4
I2cinit

Waitms 300
I2cstart
I2cwbyte 34
I2cwbyte &H01
I2cwbyte &H10 '00 FM, 01 AM, 10 32-kHz-Osz
I2cwbyte &H05
I2cstop
Waitms 800

Initialisierung

Kanalalt = 255
Do
Poti = Getadc(7)
Poti = 1023 - Poti
Poti = Poti / 114
If Poti = 0 Then Kanal = 0
If Poti = 2 Then Kanal = 1
If Poti = 4 Then Kanal = 2
If Poti = 6 Then Kanal = 3
If Poti = 8 Then Kanal = 4
If Kanal <> Kanalalt Then
If Kanal = 0 Then F = F1
If Kanal = 1 Then F = F2
If Kanal = 2 Then F = F3
If Kanal = 3 Then F = F4
If Kanal = 4 Then F = F5
Freq
Kanalalt = Kanal
Dat = F / 10
If Dat > 1000 Then Dat = Dat - 1000
Gosub Dez_darst 'LED-Anzeige
End If
Vol = Getadc(6)
Vol = Vol / 32
Vol = Vol + 32
If Vol <> Volalt Then
Rx_volume
Volalt = Vol
End If
Loop