pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Wat spook jij met die arme dingen uit? Je koelt ze toch, mag ik hopen? Het backlight v/d LCD neemt nogal wat stroom op...
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Man man man, miserie. Het probleem situeerde zich dus zo (denk ik na wat foutzoeken): De afvlakelco is losgekomen, waardoor m'n 78S05 wat rare dakjessignalen binnenkrijgt. De 78S05 heeft dit niet zo graag en beslist dan om eens 9V door te laten. Het LCD scherm heeft dit niet zo graag, de chip warmt op en gaat defect.
Echter, nu ik een nieuwe 78S05 er heb ingestoken, reageert m'n LCD weer op signalen, echter is het display bijna niet meer leesbaar; er ontbreken tekens etc etc, enfin, ik heb het probleem gevonden denk ik, en hopelijk GEEN defecte LCD's niet meer in de toekomst...
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Oké , alles werkt nu 
Tot op heden geeft m'n display het volume liniair weer, dit zou logaritmisch moeten.
Dit is m'n code:
Dim R As Single
Dim L As Single
Dim Rx As word
Dim Lx As Word
Sub Leesadc
Rx = Getadc(0)
Lx = Getadc(1)
R = Rx
L = Lx
R = Log10(r) * 20
L = Log10(l) * 20
Call Writelcd
End Sub
Waarbij Writelcd het getal R & L op het display zet, geteld in streepjes, bv 20 = 20 streepjes.
Ook loop ik nog een beetje verward met die ADC. Moet ik er een byte voor gebruiken of een word? Als ik een byte gebruik merk ik dat het getal max 256 kan zijn (de rest gaat verloren?)
Met deze code draait m'n LCD echter in de soep 
2 rijtjes volle blokjes krijg ik nu.
Dit is m'n Writelcd sub:
Sub Writelcd
Cls
Lcd "R:"
Do
If R >= 5 Then
Lcd Chr(5)
R = R - 5
End If
Loop Until R < 5
Select Case R
Case 4:
Lcd Chr(4)
Case 3:
Lcd Chr(3)
Case 2:
Lcd Chr(2)
Case 1:
Lcd Chr(1)
Case 0:
End Select
Lowerline
Lcd "L:"
Do
If L >= 5 Then
Lcd Chr(5)
L = L - 5
End If
Loop Until L < 5
Select Case L
Case 4:
Lcd Chr(4)
Case 3:
Lcd Chr(3)
Case 2:
Lcd Chr(2)
Case 1:
Lcd Chr(1)
Case 0:
End Select
End Sub
Die blokjes, dit komt wss door een overflow denk ik?
Jipla boaskes, de fout zat'm dus in dat het komma getallen waren dat writelcd doorkreeg..
Het enige dat nu nog moet gebeuren is het gelijkrichten door een precisie gelijkrichter, omdat ik nu telkens m'n diodespanning verlies op al zo'n mini signaaltje.
Vervolgens nog een interfeeske, wat multitasking zal worden. Ik ben nu aan het zoeken naar een aangename audio-processor voor bass, tribble & volume regeling.
Trots kan ik een foto sturen van een werkend design:
http://users.skynet.be/fa296995/DSC00414.JPG
[Bericht gewijzigd door Henry S. op (0%)]
gefeliciteerd! maar waarom heb je ingodsnaam nou weer die lelijke/slechte Writelcd() functie in je code opgenomen?
Die constructie met Do-Until en daarin enkel een IF is gewoon onlogisch en onnodig traag (2 evaluaties per iteratie), lees bijvoorbeeld dit eens: http://www.geocities.com/learnprogramming123/Clesson10.htm
Case vervangen door een enkele modulus operatie zoals ik al eerder heb uitgelegd.
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Hier ben ik alweer met een vraag ..
Graag had ik de instellingen (volume,kanaal,etc) bewaard in de microcontroller na spanningsuitval. Dit zijn allemaal bytes die zich in de µC bevinden (RAM), maar gereset worden na spanningsuitval. Hoe kan ik deze in een vast (ROM) geheugen plaatsen ? Compiler is BASCOM AVR.
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Op 15 september 2008 21:04:17 schreef Henry S.:
EEPROM, intern of extern (I2C/SPI)
Wat voor een boel is dat? Ik heb een ATMEGA8 voorhanden, heeft dit zo'n intern geheugen?
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Ja hoor. 512 bytes EEPROM.
Hoe je dat in BASIC benadert, kan je wellicht met Google code-search vinden.
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Jeepz,
Mijn audio weergave is nu in dB. Graag had ik dit in VU weergegeven.
Nu gebruik ik de formule
L(dB) = 20. log(ADC)
Waarvan ADC de topspanning is die de ADC constant meet.
1024 = 5V amplitude.
Nu vind ik dat met deze formule de weergave niet mooi gebeurt, weet iemand een formule om de weergave mooi in VU te laten weergeven?
Het flikkeren van het LCD scherm heb ik ook goed opgelost, ik kan nu een enorm rappe refreshrate gebruiken, ik werk nu zelf zonder delays.
Het truukje zat hem in ipv iedere keer een CLS uit te voeren, de cursor gewoon terug in het begin te positioneren, zodat hij gwn z'n beeld overschrijft, er is nu niets van flikkering meer te zien.
Zoek een VU-schaal op, verder heeft VU nog een bepaalde attack en sustain.
[Bericht gewijzigd door Henry S. op (54%)]