[VB] Buzzer laten horen via parallelle poort

Pagina: 1
Acties:

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Allereerst mijn excuses als dit topic verkeerd staat, zit namelijk flink te twijfelen of hij hier thuis hoor.

De situatie:
ik heb een pc met daar een parallelle kabel, met aan de output een speakertje (eentje uit een pc gehaald)
Nu wil ik graag 1 toon laten horen op wanneer ik op een knop druk in mijn programma.
Dit werkt niet helemaal lekker, ik hoor slechts "tik tik tik..." mijn code:

code:
1
2
3
4
5
 Private Sub TimerBuzzer_Tick(ByVal sender As System.Object, ByVal_
 e As System.EventArgs) Handles TimerBuzzer.Tick
        Out(&H378, 64)
        Out(&H378, 128)
    End Sub


Ik heb stuur dus gewoon afwisselend het een signaal naar de parallelle poort, het maakt niet uit op welke interval ik mijn timer zet, ik krijg maar geen constante toon... (Parallelle poort te traag?)

Wie weet raad? zou dus graag een gewone "buzzzz" horen

Modelbouw - Alles over modelbouw, van RC tot diorama


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar heb je je interval dan op staan? Daarnaast zie ik je 2 keer "out" doen; waarom 64 en 128? Waar komt die "Out" uberhaupt vandaan? Welke library? Want "Out" is bij mijn weten geen native VB. Dan is het mss wel het vermelden waard; en voor jou mss wel even de moeite waard om de documentatie er op na te lezen?

En wat doet je buzzer als je twee "Out's" (vol open, vol dicht) achter elkaar in een loopje gooit? Je beseft dat je een flink aantal 'wisselingen' van phase moet maken om een sinusgolf (= toon) te maken?

[ Voor 120% gewijzigd door RobIII op 20-03-2007 19:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Inderdaad wat weinig informatie. De dll die ik gebruik
"inpout32.dll"

De interval heb ik geprobeer vanaf 1000 tot en met 0.0001 (waarbij 1000 natuurlijk ervoor zorgde dat de tikken langzamer na elkaar kwamen) vanaf interval 20 en lager blijven de tikken constant.
Ook interval op 1000 en vervolgens in de interval een
for loop van 1-1000+ wil niet helpen.

ik gebruik verder 64 gewoon willekeurig (had ik ook 0 voor kunnen pakken) 128 gebruik ik omdat dat de juiste output van de poort aanspreekt waar mijn buzzer aan hangt (met 128 stuur ik dus een "1")

2 Outs maken geen verschil uit, de tik blijft hetzelfde, ik besef inderdaad dat ik een 12000 keer of iets in die buurt moet afwisselen tussen 0/1.

Modelbouw - Alles over modelbouw, van RC tot diorama


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sjoerd schreef op dinsdag 20 maart 2007 @ 19:36:
Inderdaad wat weinig informatie. De dll die ik gebruik
"inpout32.dll"

De interval heb ik geprobeer vanaf 1000 tot en met 0.0001 (waarbij 1000 natuurlijk ervoor zorgde dat de tikken langzamer na elkaar kwamen) vanaf interval 20 en lager blijven de tikken constant.
1000 = 1 sec. Een frequentie van 1Hz ga je natuurlijk zowieso niet horen (hooguit inderdaad een 'tik' van je speaker).
De resolutie van een timer gaat niet veel lager dan 50 bij mijn weten (iig niet 'gegarandeerd'), dus hoger dan 20 hz zul je ook niet komen (en dat is nét hoorbaar, maar kan zo'n PC speaker natuurlijk niet aan).
Sjoerd schreef op dinsdag 20 maart 2007 @ 19:36:
Ook interval op 1000 en vervolgens in de interval een
for loop van 1-1000+ wil niet helpen.
Wil je die code eens posten?
Sjoerd schreef op dinsdag 20 maart 2007 @ 19:36:
ik gebruik verder 64 gewoon willekeurig (had ik ook 0 voor kunnen pakken) 128 gebruik ik omdat dat de juiste output van de poort aanspreekt waar mijn buzzer aan hangt (met 128 stuur ik dus een "1")
My bad; ik zag 64 en 128 aan voor values van de output, maar het is uiteraard gewoon de 'pin mask'.
Sjoerd schreef op dinsdag 20 maart 2007 @ 19:36:
2 Outs maken geen verschil uit, de tik blijft hetzelfde, ik besef inderdaad dat ik een 12000 keer of iets in die buurt moet afwisselen tussen 0/1.
Dat zou je dus moeten doen in de loop. Ik weet overigens niet of het uberhaupt wel kan wat jij nu probeert te bereiken; sowieso weet ik niet of de parralelle poort daar geschikt voor is.

[ Voor 4% gewijzigd door RobIII op 20-03-2007 19:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Oke de code die tot nu toe het beste resutlaat geeft:

interval op 1

code:
1
2
3
4
For i As Integer = 0 To 100000
            Out(&H378, 64)
            Out(&H378, 128)
        Next


Hierbij krijg ik toch een soort van "ruis" te vergelijken met een moment opname van een oude modem die inbelt...
:) maar nog geen toon

Modelbouw - Alles over modelbouw, van RC tot diorama


Verwijderd

Wat mischien ook wel interesant is, is een D/A Converter om bijvoorbeeld een sample af te spelen
via je printer poort.

De documentatie is eigenlijk voor een MSX systeem maar je zou dit ook in VB moeten kunnen realiseren...
Simple.pdf

  • Sjoerd
  • Registratie: December 2003
  • Niet online
intressant,ga ik zeker is proberen aangezien die code idd ook goed om te vormen is.

Maar ben eigenlijk nog altijd op zoek naar een andere workaround :+

Modelbouw - Alles over modelbouw, van RC tot diorama


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Door em eerst naar 64 te schrijven en daarna naar 128 krijg je een signaal dat maar heel kort laag is. Je moet en toggelen met gelijke hoog/laag tijden.

Visual Basic:
1
Out(&H378, In( &H378 ) XOR 128)


Of hoe de overeenkomstige input functie dan ook heet.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
farlane schreef op woensdag 21 maart 2007 @ 14:13:
Door em eerst naar 64 te schrijven en daarna naar 128 krijg je een signaal dat maar heel kort laag is. Je moet en toggelen met gelijke hoog/laag tijden.

Visual Basic:
1
Out(&H378, In( &H378 ) XOR 128)


Of hoe de overeenkomstige input functie dan ook heet.
net geprobeerd maar krijg nogmaals dezelfde ruis als met mijn code hierboven...
code:
1
 Out(&H378, Inp(&H378) Xor 128)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Sjoerd schreef op woensdag 21 maart 2007 @ 14:20:
net geprobeerd maar krijg nogmaals dezelfde ruis als met mijn code hierboven...
code:
1
 Out(&H378, Inp(&H378) Xor 128)
Hoe heb je die speaker eigenlijk aangesloten? Aangenomen dat je het pinnetje snel genoeg kan toggelen heeft de poort wel genoeg power om ueberhaupt de speaker aan te sturen?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Ik het ondertussen nog geprobeerd met een ander speakertje (eentje uiteen verjaardags kaart) :+ toch handig alles bewaren.

En ook hier krijg ik weer de exacte ruis, poort levert normaal genoeg stroom
zeker wanneer je ziet dat er in die verjaardagskaart 2 batterijen zitten met volgende specs:

Capacity: 50.0mAh
Voltage: 1.50V

Modelbouw - Alles over modelbouw, van RC tot diorama


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Dat zegt helemaal niets. Hoeveel stroom kan die poort leveren?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
De maximale stroom is 10-15 mA :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Ik lees hier http://www.epanorama.net/...el_output.html#circuithow dat een standaard parport maar iets van 2.4mA kan sourcen en een TTL spanningsniveau heeft ( 0 - +5V )

Dat zou een maximaal vermogen van 12mW zijn.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Teun_2
  • Registratie: Oktober 2003
  • Laatst online: 24-11 21:33
Je hebt ook zo van die (erg goedkope) buzzers die een toon geven als je er een spanning op zet. Dan moet je dus geen toon sturen, maar gewoon een constant signaal.
Pagina: 1