Archiv verlassen und diese Seite im Standarddesign anzeigen : Pace Car Blitzer Programmieren!
Halli Hallo!!!
Ich will mein erstes Projekt mitm atmega8 in Angriff nehmen!! *gg*
Und zwar will ich ihn so programmieren, dass die leds so blitzen wie pace car blitzer!! Weiß jemand wie des funzen könnte??
MFG
NRG 8-[
also LEDs blinken lassen? das ist doch eigentlich die allererste übung wenn man mit µCs anfängt, ähnlich wie "hallo welt" wenn man PC-software proggt...
Ne du verstehst mich falsch! du kennst doch diese Blitzer, die so schnell hintereinander blitzen!
das ist eigentlich auch nicht viel anders... du blinkt nen paarmal schenll und machts dann ne pause... in der einfachsten variante wärs ne endlosschleife, in der dann die blinkfolge durch umschalten der ausgänge ubnd pausen dazwischen festgelegt sind...
also so:
<schleife anfang>
led an
50ms warten
led aus
70ms warten
led an
50ms warten
led aus
70ms warten
led an
50ms warten
led aus
70ms warten
led an
50ms warten
led aus
400ms warten
<schleife ende>
dann blinkt die led dreimal für 50ms auf, macht zwischendurch 70ms paues und dann nochmal 400ms, bevor sie wieder von vorne beginnt...
ahja...... gut ! DANKE!!! Echt cool von dir!!!! =D>
habs mal so gemacht:
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Dim I As Byte
Do
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 400
Loop
und so sin die vom Pace Car? Hab mir die schneller vorgestellt. hmm..... egal! Trotzdem Danke!!!
Und ne weitere Frage:
Kann ich die dann evtl. so machen, dass ich mit hilfe des potis die geschwindigkeit ändern kann??
Det wär nämlich was!!
MFG
NRG \:D/
die zeiten waren jetzt nur geraten und als beispiel gedacht... du musst sie halt so anpassen dass es dir gefällt bzw echt aussieht...
du könntest potis an eine analogeingag naschließen und dann je nach gemessenem spannungswert=> potidrehwinkel die zeiten ändern...
Ähm und wia mach ich des am besten?? ich bin da Anfänger! :-b
michaelb
23.06.2005, 15:38
Du willst wissen wie man ein Poti!
Das ist ganz einfach das mittlere Bein des Potis an den Analogeingang, das eine andere an 5V das andere an GND. Ich glaub so was nennt mann Spannungsteiler!
Gruß Michi
nein ich will doch nich wissen, wie ich des anschließ! Trotzdem danke!!
Ich würde gerne den Code erfahren........... wie ich des poti auslese........ *gg*
Hoffe es weiß jemand! *gg*
Also dass ich halt an dem poti dreh, und die blinkgeschwindigkeit ändert.
MFG
NRG ](*,)
Hmm schade! Hab gedacht jemand könnte mir bei meinem Problem helfen! Naja kann man nichts machen! :-(
MFG
Nrg
port a kann als ad-wandler benutzt werden,
den man recht einfach auslesen kann.
geht mit 10 bit, also 1024 abstufungen möglich.
es wird der spannungswert im verhältnis einer
referenzspannung gemessen.
den rest kannste dir auch selber mal gedanken machen
So ich wollte jetzt erstma kleiner anfangen, da ich des mitm poti net hinbekomm. Ich wollts jetzt so machen, dass wenn ich den taster drücke einmal, dass dann die blitzer losgehen. Aba irgendwie funzt des net. Hier mal mein Programmcode von bascom:
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Config Portd = Input
Do
A:
If Pind.2 = 0 Then
Goto B
Else
Goto C
End If
B:
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 400
C:
Loop
Des blinkt irgendwie von anfang an............
MFG
Nrg
du solltest im else teil wieder nach A: springen, damit das programm die taste sofort wieder abfragt... so wie bei dir sollte es aber auch laufen...
wie sieht die hardware aus? wie ist die tastze angeschlossen? richtiger port? pull-uop?
ich habe das my avr board. Der Taster ist eigentlich richtig angeschlossen. Ich versuche es mal mit else goto a.
Danke!
MFG
NRG
auf dem board ist kein externe pullup-widerstnad dfrauf... du müsstest also den internen aktivieren...
nach den ganze config befehlen
portd.2 = 1
aber im simulator läufts auch damit sofort durch...
so gehts im simulator: die if abfrage muss in eine zeile! an dieser stelle finde ich basic echt sch****... in pascal teilt man dem compiler mit nem ; mit, dass der befehl zu ende ist, und alles ist in butter...
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Config Portd = Input
portd.2 = 1
Do
A:
If Pind.2 = 0 Then Goto B Else Goto C
B:
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 400
C:
Loop
Also ich habs jetzt so gemacht und es funzt!!! juhu!!!
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Config Portd = Input
Do
A:
If Pind.2 = 0 Then
Goto B
Else
Goto A
End If
Loop
End
B:
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms 50
Portb.1 = 0
Waitms 400
Goto A
werd mich dann mal an die geschwindigkeit machen......
Nur kann mir vielleicht jemand nen denkanstoß geben, wie ich die stellung vom poti in ne zahl umwandle???
MFG
Nrg
in der bascom hilfe, stichwörter "getadc" und "config adc"
die forensuche benutzen (das thema hatten wir schon x mal...)
und die referenzspannung keinesfalls als "internal" konfigurieren...
hmmm............... ja ok! Danke ich werds mal versuchen!!! Danke!!
O:)
Habs jetzt mal so gemacht!! Stimmt des so oder gibts noch verbesserungsvorschläge? also funzen tuts!!!
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Dim W As Word , Channel As Byte
Channel = 0
A:
Do
W = Getadc(channel)
Goto B
Loop
End
B:
Portb.1 = 1
Waitms W
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms W
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms W
Portb.1 = 0
Waitms 70
Portb.1 = 1
Waitms W
Portb.1 = 0
Waitms 400
Goto A
Mfg
Nrg
reference würde ich nocht auf internal lassen (einfach weglassen)... auf deinem board ist nämlich der anschluss für die ferenzespannung schon mit 5V verbunden...
das do... loop kannst du dir sparwen weil das loop sowieso nie erreicht werden kann... und entscheid dich dann mal ob du assemblermäßig mit sprungmarlen oder hochsprachenmäßig mit if then else oder do loop programmieren willst... in hochsprachen sind sprungmarken verpönt, aber in basic gehst wohl teilweise nicht anders...
SO hab jetzt das programm so gemacht, dass auf das lcd display die stellung des potis ausgegeben wird!!! =P~
$regfile = "m8def.dat"
$crystal = 3686400
Config Portb = Output
Config Adc = Single , Prescaler = Auto
Start Adc
Dim W As Word , Channel As Byte
Dim S As Word
Dim D As Word
Channel = 0
A:
W = Getadc(channel)
S = W / 125
D = S * 10
Goto B
B:
Portb.4 = 1
Portb.5 = 1
Portb.3 = 1
Waitms D
Portb.4 = 0
Portb.5 = 0
Portb.3 = 0
Waitms 70
Portb.4 = 1
Portb.5 = 1
Portb.3 = 1
Waitms D
Portb.4 = 0
Portb.5 = 0
Portb.3 = 0
Waitms 70
Portb.4 = 1
Portb.5 = 1
Portb.3 = 1
Waitms D
Portb.4 = 0
Portb.5 = 0
Portb.3 = 0
Waitms 70
Waitms 400
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Config Portd = Output
Waitms 1000
Cls
Lcd D
Goto A
hoffe es kann evtl. jemand brauchen!!!
Mfg
NRG
PS: nur eine frage hab ich noch, wie kann es sein, dass die leds bei geringem poti also für w=0 so ausschauen, wie wenn sie gedimmt sind???
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.