Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeits anzeige
Tach erst mal bin neu hier und nicht so viel Erfahrung.
1. Ich hab ein MEGA8 board und möchte damit eine geschwindigkeit
an einem LCD Display anzeigen lassen.
2. Messung erfolgt über 2 lichtschranken die hinter einander liegen.
3. Währe auch gut wenn die zeit angezeigt würde die vergeht bis die erste lichtschranke zum 2ten mal berührt wird.
bräuchte dringend hielfe dafür
thx4 help
Gut. Nun sag' aber erst mal, wie denkst du dir denn, daß sowas gehen könnte ?
Hab es mir so gedacht.
1. Das Stück geht durch die lichtschranke.
Durch die erste, dann wird ein timer aktiv der die zeit hochzählt bis die 2te lichtschranke aktiv ist (unterbrochen) diese zeit möchte ich dann an dem LCD Display in km/h angezeigt haben.
2. Sobald die 1 ste Lichtschranke wieder unterbrochen wird soll die zeit angezeigt werden, die vergangen sit, inder die 1 lichtschrange zum 1sten mal unterbrochen ist.
und danach wieder die geschwindigkeit.
Alter Knacker
28.06.2005, 15:14
und wo genau liegt jetzt das problem?
am basic programm ich komm und komm nicht drauf wie ich das ganz genau machen soll. ;o(
hab zwah schon was geschrieben aber das klappt sowieso net brauch ne andere lösung.
'################################################# ##
'Sven 17/04/05 Rev01
'
'################################################# #############
'################################################# ##
'File and Variable declaration
'################################################# #############
Declare Sub LCD()
Declare Sub post-treatment()
$regfile = "m8def.dat" 'controller definition file
Dim dummy1, dummy2 As Byte
Dim count_geschwindigkeit As Byte
Dim count_gesamt_zeit As Integer
'################################################# ##
'Initialisation and configuration of device
'################################################# #############
$crystal = 16000000 'Quarzfrequenz
Config Adc = Single , Prescaler = Auto , Reference = Off 'Für Tastenabfrage und Spannungsmessung
Config Pinc.0 = Input 'Für Tastenabfrage
Portc.0 = 1 'Pullup Widerstand ein
Start Adc
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
'Bei einer anderen Referenzspannung muss die 2.5 durch entsprechend ersetzt werden
'Die Referenzspannung wird durch den Jumper JPREF bzw. Spindeltrimmer festgelegt
'ZU ÜBERPRÜFEN!!!!!
' Falls ein LCD Display angeschlossen ist
Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.3 , E2 = Portd.7 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
Config Lcd = 20 * 4
Config PinC.1 = Output 'pin C1 um LED1 zu steuern
Portc.1 = 1 'LED angesteuert
Config PinD.2 = Input 'pin C2 um phototransistor1 zum abfragen
Portc.2 = 1 'Pullup Widerstand ein
Config PinC.3 = Output 'pin C3 um LED2 zu steuern
Portc.3 = 1 'LED angesteuert
Config PinD.3 = Input 'pin C4 um phototransistor2 zum abfragen
Portc.3 = 1 'Pullup Widerstand ein
'################################################# ##
'Initialisation and configuration of variable
'################################################# #############
dummy1 = 0
dummy2 = 0
'################################################# ##
'Main Programm
'################################################# #############
Do
If ((PinD.2 = 1) & (dummy1=1))
dummy1 = 0
Endif
If ((PinD.3 = 1) & (dummy2=1))
dummy2 = 0
Endif
call post-treatment()
Call LCD()
Loop
End
'################################################# ##
'Sub Programm
'################################################# #############
Sub LCD()
..
...
End Sub
Sub post-treatment()
Speed=3600*(count_geschwindigkeit + N_count0* timer_zeit_TMR0)
Gesamt_zeit = count_gesamt_zeit + N_count1* timer_zeit_TMR1
End Sub
'################################################# ##
'Interrupt Subroutine
'################################################# #############
Sub ...()
If ((PinD.2 <> 0) & (dummy1 = 0)) 'Etwas in Lichtschrank 1
TMR0 (8 bit) init -> TMR0 config mit klein Prescaler, und benutzt für die Geschwindigkeit
N_count0=0
count_gesamt_zeit= TMR1(16 bit)Werte
TMR1 auf null einsetzen (init TMR1) -> TMR1 config mit gross prescaler
N_count_werte=N_count
N_count1=0
dummy1=1
Endif
If ((PIND.3 <>0) & (dummy2 =0)) 'Etwas in Lichtschrank 2
count_geschwindigkeit= TMR0(8 bit)Werte
dummy2=1
' If TMR1 overflow
'
' N_count1 = Ncount1+1 'kontrollieren der IF schleife (wäre es möglich zwo If in einer schleife ohne EndIF??)
'
' Endif
'ENDIF? Dies ist eine Verschachtelung
If TMR0 overflow
N_count0 = Ncount0+1
Endif
EDIT: Code-Tags eingefügt. regards, Moddy
hab noch was anderes gefunden aber weiß auch net ob mir das weiter hilft.
$crystal = 40000
Config Timer1 = Timer , Prescale = 64 '4MHz/64 = 62500
Const Timer_start = 6250 'alle 100ms Überlauf
Load Timer1 , Timer_start
Enable Timer1
On Timer1 Int_1
Do
wenn Lichtschranke 1, dann Takt = 0
wenn Lichtschranke 2, dann Wert = Takt in 1/100 Sek
Loop
Int_1:
Load Timer1 , Timer_start
Incr Takt
Return
Im Prinzip kommt das letzte Beispiel schon hin. Du stellst den Timer auf Überlauf bei 1/100 Sekunde (Rnavr-Tool zum Berechnen verwenden)
Wenn dann wieder die erste Lichtschranke kommt, hast du dann diese Zeit auch.
Bei Lichtschranke 1 schaltest du auf Zeit-Display, bei der anderen auf die umgerechnetet Speed
Auf geht's !
Habs mal so weit gemacht.
bekomm aber nix am LCD Display raus.
Wie bekomm ich die variable dazu das ich sie angezeigt bekomme.
Hab mich noch net so richtig damit auseinander gesetzt.
Hab mich noch net so richtig damit auseinander gesetzt.
Würde sagen, das ist eine gute Gelegenheit dazu.
Schon "Hello, world" getestet ?
texte gehen.
aber gerade das ich die variable zum anzeigen bekomme, das weiß ich net.
Muss ja die variable die ich messe irgendwie zum anzeigen bekommen, weiß nur net wie
Im Help bei "Index->LCD" schauen.
LCD "Hello Sepp"
LCD variable
lcd zeigt was an aber nur komisches zeug. an den leitungen und am kontrast liegt es net hab ich gerade kontrolliert.
Ich glaub es liegt an den sensoren hab so gabellichtschranken (natürlich mit riederständen dran) (als versuch).
Wie müsste das programm den ausschauen so wie ich es brauch?????
versuch jetzt selber noch ne weile mein glück dran.
Für heute muß ich mich verabschieden.
Teile und Herrsche : Versuch ein Programm, daß dann (und nur dann) einfach "hello" sagt, wen eine Lichtschranke unterbrochen wird
wie sag ich das lichtschranke 1 oder lichtschranke 2
auf einem (jeder auf einem anderen) port liegt???????????
Unter der Annahme, daß das so konfiguriert ist:
Config PinD.2 = Input 'pin C2 um phototransistor1 zum abfragen
Config PinD.3 = Input 'pin C4 um phototransistor2 zum abfragen
if Pind.2 = 1 then
............................ 'Schranke 1
end if
if Pind.3 = 1 then
............................ 'Schranke 2
end if
ist halt so:
es sind ja pro lichtschranke 2 sensoren. (empfänger und sender)
und das 2 x hintereinander.
wie soll ich das dann machen?????
Der Sender ist doch kein Sensor ??? Den kannst du nur aufdrehen oder abdrehen
das sind (ir sender 2 pin und ir transistore 2 pin)
den sensor muss ich ja auf einen port legen und den empfänger auch jeden mit einem pin noch auf masse.
und das immer für jede lichtschranke.
und wie muss ich das jetzt im programm schreiben????????
please help
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.