Antwort schreiben  Thema schreiben 
Seiten (8): « Erste [1] 2 3 4 5 Nächste > Letzte »
Sprachausgabe von Analogwerten
Verfasser Nachricht
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #1
Sprachausgabe von Analogwerten

Hallo,
wie schon in meinem Beitrag "Auswertung serieller Protokolle am Beispiel von Wetterdaten" zu lesen ist, verwende ich gern den Sprachausgabebaustein "VMUSIC2" von FTDI. Im Rahmen einer anderen Anwendung habe ich ihn jetzt auch zur Ausgabe von analogen Spannungswerten benutzt. Hierdurch eröffnet sich ein weites Feld von möglichen Anwendungen z.B. auch zur Unterstützung von Sehbehinderten. Anbei das zugehörige Schaltbild.

Das angedeutete LCD-Display ist nur optional.

Evtl. Interessenten am zugehörigen BASCOM-Code sollten mir eine PM schicken.

Klaus

Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2009 16:44 von gpsklaus.

25.11.2009 11:30
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #2
RE: Sprachausgabe von Analogwerten

AVRNix schrieb:
Wollte in dem Zusammenhang einfach noch Lösungen einbringen.

Es soll nicht deine Projekte miss gemscht werden. Ich bin nur Erstaunt was man alles machen kann Smile - wenn ich bedenke wie das vor 25 Jahren war und mit dem ZX81 mit 16K die ersten Programme geschrieben habe und dann was heute alles möglich ist.

Also weiter so Smile


Ne, ist schon OK und auch interessant zu sehen, wie es woanders gemacht wird. Ich hatte das auch nicht negativ verstanden. Jeder sollte sich für die Lösung entscheiden, die ihm selbst am besten gefällt und ich habe natürlich auch nix davon, wenn einer das auch von mir benutzte Verfahren wählt.

Übrigens: Eine Uhr mit Sprachausgabe gab es schon einmal für wenig Geld im Handel. In großen Stückzahlen lässt sich so etwas sehr preiswert produzieren ( siehe auch sprechende Grußkarten, Kinderspielzeug usw. ) Für so etwas wie eine Uhr lohnt sich ein Selbstbau m.E. nicht. Wenn man mit 3 Sprachdateien und insgesamt 24 Sekunden Speicherzeit auskommen kann, dann ist auch das folgende ELV-Modul sehr gut verwendbar: http://www.elv.de/output/controller.aspx...ch=&marke=

KLaus

Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2009 13:34 von gpsklaus.

27.11.2009 00:07
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Veryoldman
Member
***


Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status: Offline
Bewertung: 0
Beitrag: #3
RE: Sprachausgabe von Analogwerten

Hallo GPSKlaus,

mein Name ist ebenfalls Klaus und ich beschäftige mich seit Kurzem mit dem VMUSIC2 Modul! Ich möchte mir gerne fürs Auto einen USB Eingang Bauen über den ich dann per USB Stick MP3's hören kann! Dazu habe ich einen Tiny2313 genommen über den ich dann per Tasten die Steuerung machen möchte! Ferner möchte ich aber auch den Status der MP3 Files auf einem 20 x 4 Display sichtbar machen ich weis nur nicht wie ich das in Bascom Programmieren muss! Zur Programmierung muss ich Sagen, dass ich mich noch nicht sehr lange mit AVR's und Bascom beschäftige! Kannst Du mir eventuell dabei helfen?

Gruß
Klaus
DB8QW

24.05.2010 18:57
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #4
RE: Sprachausgabe von Analogwerten

Hallo Namensvetter,
entschuldige bitte meine späte Antwort, aber ich war einige Tage im Ausland und nicht Online.

Veryoldman schrieb:
mein Name ist ebenfalls Klaus und ich beschäftige mich seit Kurzem mit dem VMUSIC2 Modul! Ich möchte mir gerne fürs Auto einen USB Eingang Bauen über den ich dann per USB Stick MP3's hören kann! Dazu habe ich einen Tiny2313 genommen über den ich dann per Tasten die Steuerung machen möchte! Ferner möchte ich aber auch den Status der MP3 Files auf einem 20 x 4 Display sichtbar machen ich weis nur nicht wie ich das in Bascom Programmieren muss! Zur Programmierung muss ich Sagen, dass ich mich noch nicht sehr lange mit AVR's und Bascom beschäftige! Kannst Du mir eventuell dabei helfen?


Vielleicht kannst Du einmal ein Blockschaltbild anfertigen, aus dem die geplante hardwaremäßige Zusammenschaltung mit dem Radio grob hervorgeht. Ausserdem solltest Du auch einmal die gewünschten MP3-Steuerfunktionen erläutern. Danach werden wir sehen, was sich machen lässt.

Klaus

01.06.2010 20:00
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Veryoldman
Member
***


Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status: Offline
Bewertung: 0
Beitrag: #5
RE: Sprachausgabe von Analogwerten

Hallo Klaus,

ein Blockschaltbild hab ich bisher nur auf dem Papier(Handzeichnung). Wenn ich mal meinen Code Poste, kann man ziemlich klar Erkennen, wie das Ganze zusammen Hängt. Was das Radio anbelangt, so kann es auch ein ganz normales Radio mit Line In Eingang sein(Küchenradio z.B). Wichtig ist eigentlich nur, dass man den MP3/Wav Player über einen Mega8 Steuern kann und die Musik Files des USB Stick abgespielt werden. Mein Programm funktioniert soweit schon ganz gut. Ich hatte mir vor einiger Zeit, Dein Demo Programm heruntergeladen und Angeschaut um die Funktionsweise zu Verstehen. Bin noch nicht so lange beim AVR dabei und Lerne noch. Anbei mein Code:

Code:
$regfile = "m8def.dat"                                      'ATMEga8
$crystal = 16000000                                         '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
                                                             ' 8MHz extern, FuseBits= High =     , Low =
$baud = 9600                                                ' Baudrate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40

'---- Taster Eingänge --------------------------------------
Config Pinc.0 = Input                                       ' PortC.0 = Play
T1 Alias Pinc.0
Config Pinc.1 = Input                                       ' PortC.1 = Stop
T2 Alias Pinc.1
Config Pinc.2 = Input                                       ' PortC.2 = Pause
T3 Alias Pinc.2
Config Pinc.3 = Input                                       ' PortC.3 = Next
T4 Alias Pinc.3
Config Pinc.4 = Input                                       ' PortC.4 = Random
T5 Alias Pinc.4
Config Pinc.5 = Input                                       ' PortC.5 = Dir
T6 Alias Pinc.5

'---- Handshake Signale RTS/CTS ----------------------------
config pind.3 = input
RTS Alias Portd.3
config pind.2 = output
CTS Alias portd.2

'---- RS232 Com-Port ---------------------------------------
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

'---- Variable ---------------------------------------------
'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte                                               'Byte
Dim RTS as Byte
Dim CTS as Byte

'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc

'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4                                         'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2       'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off

'---- Festtext ---------------------------------------------
Cls                                                         'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls

'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13);                                     ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise
'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0

'---- Hauptprogramm ----------------------------------------
Do
'Main:
  If N > 9 Then
    Locate 1 , 1
    Lcd S                                                   'Ausgabe auf Lcd
    Print Chr(13)
    N = 0
  End If

   If T1 = 0 Then                                           ' Play all
     Print "v3a " ; Chr(13)
     Waitms 100
     Cls
     Locate 4 , 1
     Lcd "Play all"
   End If
                                                            ' Stop
   If T2 = 0 Then
     Print "vst " ; Chr(13)
     Waitms 20
     Cls
     Locate 4 , 1
     Lcd "Stop"
   End If

   If T3 = 0 Then                                           ' Pause
     Print "vp " ; Chr(13)
     Waitms 20
     Cls
     Locate 4 , 1
     Lcd "Pause"
   End If

   If T4 = 0 Then                                           ' Next Track
     Print "vsf " ; Chr(13)
     Waitms 20
     Cls
     Locate 4 , 1
     Lcd "Next"
   End If

   If T5 = 0 Then                                           ' Zufällige Wiedergabe
     Print "vrr " ; Chr(13)
     Waitms 20
     Cls
     Locate 4 , 1
     Lcd "Play Random"
   End If

   If T6 = 0 Then                                           ' Anzeige aller Tracks
     Print "dir " ; Chr(13)
     Waitms 20
     Cls
     Locate 4 , 1
     Lcd "Dir"
   End If
  'End If
'Goto Main
Loop
End

'---- Unterprogramme ----------------------------------------
Onrxd:
  Incr N
  B(n) = Udr
Return

Das Problem hierbei ist, dass die Funktion der Tasten, sobald ich die Daten des VMUSIC2 auf dem Display sichtbar machen möchte, nicht mehr richtig funktionieren. Nehme ich die UART Abfrage wieder aus dem Programm, geht alles wieder ohne Probleme. Da ich Dich aber gerade an der Strippe habe, hab ich noch eine Frage: Wo bekomme ich die gesamte Befehlsliste für das VMUSIC2 her? Habe bei FTDI Geschaut aber sehr viel gibt es da nicht.

Gruß
Klaus

15.06.2010 21:34
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #6
RE: Sprachausgabe von Analogwerten

Hallo Klaus,
da ich es zur Zeit nicht praktisch testen kann, vermag ich auch nicht mit Sicherheit sagen, dass es so funktioniert ( und sicher geht es auch noch eleganter ), aber dennoch würde ich einmal die unten gezeigte Variante probieren.
Wichtig ist in jedem Fall, dass Du allen 6 Tasteringängen ( PC.0-PC.5 ) z.B. via Programmn einen Pull-Up-Widerstand verpasst ( Portc = &B00111111 ), damit der Pegel hier bei nicht gedrückter Taste eindeutig "H" ist.

PS: einige Variablen-Namen musste ich leicht ändern, da sie bereits von BASCOM benutzt wurden

Gruß
Klaus

'------------------------------------------------------------------------------
$regfile = "m8def.dat" 'ATMEga8
$crystal = 16000000 '16Mhz extern, FuseBits= High = 0xD1, Low = 0xDF
' 8MHz extern, FuseBits= High = , Low =
$baud = 9600 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
'$sim

'---- fuer Taster kompletter Port C als Eingänge -----------
Config Portc = Input

'---- Alle Taster-Eingänge auf "H" -------------------------
Portc = &B00111111

'---- Handshake Signale RTS/CTS ----------------------------
Config Pind.3 = Input
Config Pind.2 = Output

Rts Alias Portd.3
Cts Alias Portd.2

'---- RS232 Com-Port ---------------------------------------
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

'---- Variable ---------------------------------------------

'---- Test -------------------------------------------------
Dim S As String * 9 At &H70
Dim B(11) As Byte At &H70 Overlay
Dim N As Byte 'Byte
Dim RTS as Byte
Dim CTS as Byte

'---- Eingang Serieller Daten ------------------------------
'Sreg.7 = 1
Set Sreg.7
On Urxc Onrxd
Enable Urxc

'---- LCD Definition ---------------------------------------
Config Lcd = 20 * 4 'LCD 4 Zeilen, 20 Zeichen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.2 'LCD Pin-Config
Config Lcdbus = 4
Initlcd
Cursor Off

'Deklariere Unterprogramme
Declare Sub Play
Declare Sub Stopp
Declare Sub Pause
Declare Sub Track
Declare Sub Random
Declare Sub All

'---- Festtext ---------------------------------------------
Cls 'Lösche Display
Locate 2 , 3
Lcd " Klaus - VMUSIC2 "
Locate 3 , 3
Lcd " USB MP3 Player "
Wait 2
Cls

'---- Lautstärken-Voreinstellung ---------------------------
Print "vsv0" ; Chr(13); ' Lautstärke Voreinstellung 0 = Laut, 256 = Leise

'---- Test Voreinstellungen --------------------------------
RTS = 1
CTS = 0

'---- Hauptprogramm ----------------------------------------
Do
If Pinc.0 = 0 Then Gosub Play
If Pinc.1 = 0 Then Gosub Stopp
If Pinc.2 = 0 Then Gosub Pause
If Pinc.3 = 0 Then Gosub Track
If Pinc.4 = 0 Then Gosub Random
If Pinc.5 = 0 Then Gosub All
Loop

Sub Play
Print "v3a " ; Chr(13)
Waitms 100
Cls
Locate 4 , 1
Lcd "Play all"
End Sub

Sub Stopp
Print "vst " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Stop"
End Sub

Sub Pause
Print "vp " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Pause"
End Sub

Sub Track
Print "vsf " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Next"
End Sub

Sub Random
Print "vrr " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Play Random"
End Sub

Sub All
Print "dir " ; Chr(13)
Waitms 20
Cls
Locate 4 , 1
Lcd "Dir"
End Sub

End

'---- Unterprogramme ----------------------------------------
Onrxd:
Incr N
B(n) = Udr
Return
'end program

15.06.2010 23:08
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Veryoldman
Member
***


Beiträge: 52
Gruppe: Registered
Registriert seit: May 2010
Status: Offline
Bewertung: 0
Beitrag: #7
RE: Sprachausgabe von Analogwerten

Hallo Klaus,

danke für Deine Unterstützung! Hab mir den Code in dem Mega8 Geschoben. Zumindest beim Compilieren taucht kein Fehler auf aber und das ist mir ein absolutes Rätsel, wird auch keine Tastenfunktion Übernommen. Das VMUSIC2 bleibt stumm! Der Befehl Erscheint auf dem Display aber die LED's am Modul und am Stick bleiben aus. Es ist doch im Grunde nichts anders, außer dass Du mit Declare Sub arbeitest. Warum also wird der Printbefehl nicht angenommen? Oh man!
Ich hab übrigens bei Deinem Wetterdaten-Projekt gesehen, dass Du RXD vom VMUSIC2 Modul auf PD7 vom Mega8 gelegt hast. Hat das einen bestimmten Grund?

Gruß
Klaus

16.06.2010 22:30
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #8
RE: Sprachausgabe von Analogwerten

Hallo Klaus,
ich muss gestehen, dass ich die von Dir benutzten Befehle selbst NIE benutzt und immer nur bestimmte Soundfiles namentlich aufgerufen habe. Dazu habe ich dann immer Befehle wie z.B.: "Print "vpf <filename>.mp3" ; Chr(13)" oder: Print "vpf <filename>.wav" benutzt ( mir Leerstelle zwischen "vpf" und Filenamen ) und hatte damit auch nie Probleme. Warum schon die Basis-Steuerbefehle bei Dir nicht ausgeführt werden, kann ich derzeit auch nicht sagen.
Ich würde die VMUSIC-Steuerung zuerst einmal vom PC aus durch Eingabe einzelner Befehle mithilfe eines Terminalprogrammes testen. Das ist zwar bei modernen PC's ohne RS232-Port etwas umständlich und erfordert zusätzlich auch noch eine Anpassung des VMUSIC-Bausteins von TTL- auf RS232-Pegelwerte, gibt aber Aufschluss über seine Steuerbarkeit. Ein weiteres Problem besteht darin, dass an dieser Stelle nicht jedes Terminalprogramm geeignet ist, sondern nur solche infrage kommen, bei denen man auszugebende Befehlssequenzen in einen Speicher vorschreiben und dann auf Tastendruck "in einem Rutsch" zum VMUSIC-Baustein senden kann ( wenn Du mir eine PN mit Deiner E-Mailadresse sendest, dann schicke ich Dir ein hierfür geeignetes Terminalprogramm ).
Ansonsten werde ich aber auch noch einmal hier vorhandene und von anderen Leuten stammende Steuerprogramme für diesen Baustein durchforsten um dort vielleicht Hinweise auf mögliche Ursachen für Dein Problem zu finden.

Klaus

17.06.2010 09:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #9
RE: Sprachausgabe von Analogwerten

Veryoldman schrieb:
Ich hab übrigens bei Deinem Wetterdaten-Projekt gesehen, dass Du RXD vom VMUSIC2 Modul auf PD7 vom Mega8 gelegt hast. Hat das einen bestimmten Grund?


Ach so, darauf hatte ich vergessen einzugehen:
Bei dem besagten Programm werden zu verarbeitende serielle Eingangsdaten über PD0 zugeführt und Ausgang PD1 wird zur Steuerung des VMUSIC2-Bausteins benutzt, womit der komplette Hardware-UART des ATMEGA8 belegt ist. Nachdem der Aufruf kurzer Sprachfilesegmente ( z.B. der Messwerte ) aber in schnellstmöglicher Folge erfolgen sollte, brauchte ich am Prozessor noch einen zusätzlichen seriellen Eingang, um hierüber die vom VMUSIC2 kommenden, das Ende der jeweiligen Sprachsegmentausgaben signalisierenden Rückmeldungen verarbeiten zu können. Hierzu habe ich eine über PD7 laufende Soft-UART-Routine benutzt.
Alles klar?

Gruß
Klaus

17.06.2010 09:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gpsklaus
Moderator
*****


Beiträge: 103
Gruppe: Moderators
Registriert seit: Aug 2008
Status: Offline
Bewertung: 0
Beitrag: #10
RE: Sprachausgabe von Analogwerten

Hallo Klaus,
nach Durchsicht anderer Steuerprogramme würde ich an deiner Stelle einmal zwei Sachen testen:

1. Die Leerstellen hinter dem Steuerwort probeweise einmal weglassen ( also nicht: Print "v3a " ; Chr(13) sondern: Print "v3a" ; Chr(13)

2. Im Stick ein Soundprogramm mit z.B. dem Namen "test.mp3" oder "test.wav" ablegen und dieses versuchsweise per Befehl: "vpf test.mp3" ; chr(13) bzw.: "vpf test.wav" ; chr(13) aufrufen. Danach würde es interessant sein zu wissen, ob zumindest diese Aufrufe klappen.

Klaus

Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2010 09:48 von gpsklaus.

17.06.2010 09:47
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Seiten (8): « Erste [1] 2 3 4 5 Nächste > Letzte »
Antwort schreiben  Thema schreiben 

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen

Gehe zu Forum: