[/code]Code:W = Getadc(6)
Hi,
Wenn ich ein Programm mit dem ADC schreibe reklamiert der Compiler immer und zwar weil ich das hier schreibe:
Der ADC wurde initialisiert und auch die Variable WCode:W = Getadc(6.
Der Compiler schreibt dann:
An was könnte es liegen?Code:(or) missing [W = GETADC(6.]
Grüsse!
Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
(Leonard da Vinci)
[/code]Code:W = Getadc(6)
Signatur??? kann ich mir nicht leisten!!!
Hi,
Danke für die Hilfe! Nun gehts...
Leider geht, das Programm selbst immer noch nicht wie ich wollte... es hat jetzt zwar nichts mit dem Getadc zu tun, aber ich poste es dochmal hier:
Mein Ziel wäre es nun, dass sobald die Spannung am ADC1 unter 8 Volt sinkt, eine LED am Porta.0 leuchtet...Code:$regfile = "m32def.dat" $crystal = 16000000 Config Porta.0 = Output Config Adc = Single , Prescaler = Auto , Refernce = Internal Start Adc Declare Sub _betriebsspannung(). Const Ref = 5 / 1023 Dim Volt As Single Dim Betriebsspannung as Single Main: Do Call _betriebsspannung() Porta.0 = 0 While Volt < 8 Porta.0 = 1 waitms 500 Wend Loop End Sub _betriebsspannung Local W as Word W = Getadc(1) Betriebsspannung = W * Ref Betriebsspannung = Betriebsspannung * 5.2941 Volt = Betriebsspannung End Sub
Muss ich da Hardware mässig noch was machen, damit die Spannung erkennen werden kann?
Liebe Grüsse!
Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
(Leonard da Vinci)
Nach langer Pause (bin im prüfungsstress) melde ich mich auch mal wieder.
Also ich lese die spannung von einem Spannunsteiler ab (3x 10k) dadurch sind 15V möglich. Für dich düfte wohl nur Spannung interressant sein. Die Zeile B = E * 3 ist eben weil ich die Spannung durch 3 teile und sie nun wieder verdreifacht werden muss.Das Grün, Gelb,... sind nur leds um die spannung in drei farben darzustellen wie sie ca ist. Piep() dient dazu ein warnsignal auszugeben wenn die spannung zu tief ist.Code:$regfile = "m32def.dat" $framesize = 60 $swstack = 60 $hwstack = 60 $crystal = 1000000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Adc = Single , Prescaler = Auto Start Adc Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portb.2 = Output Config Pinb.1 = Input Dim W As Integer Dim A As Single Dim B As Single Dim C As Single Dim D As Single Dim E As Single Declare Sub Piep() Declare Sub Spannung() Portb.1 = 1 Do W = Getadc(1) If 390 < W Then Portc.3 = 1 'Grün End If If 340 < W And W < 390 Then Portc.4 = 1 'Gelb End If If W < 340 Then Portc.5 = 1 Call Piep 'Rot End If Call Spannung Loop End Sub Piep() Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1 Pwm1b = 180 Wait 1 Pwm1b = 0 Wait 1 End Sub Sub Spannung() A = 4.95 / 1024 C = W * A D = C * 100 E = Round(d) E = E / 100 B = E * 3 Cursor Off Cls Locate 1 , 1 Lcd Fusing(b , "#.##") ; "V" 'Spannung Wait 1 End Sub
mfg
Hi,
Schön dass du dich wieder einmal meldest!
Danke für das Programm!
Aber eigentlich würde ich noch gerne wissen was an meinem Programm falsch ist... Was muss ich da ändern? Damits funktioniert? Denn ich finde das noch ganz gut, wenn ich da die Variable Volt habe...
Grüsse!
Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
(Leonard da Vinci)
Ein Problem wird sein, dass wenn du einmal eine Spannung <8 gelesen hast, du nicht mehr aus der While herauskommst, weil du nicht wieder neu einliest.Zitat von Da_Vinci13
Probier es mal so:
Code:While Volt < 8 Porta.0 = 1 Waitms 500 Call _betriebsspannung() Wend
Gruß
Rolf
Lesezeichen