Hallo ! Ich möchte eine LED 3 Minuten leuchten lassen. Danach soll sie wieder erlischen. Ich benutze den PIC18F14k22 mit dem C18-Compiler. Der PIC wird mit 4 MHz betrieben "Internal Osc". Kann man die 3 Minuten mit der "Delay-Funktion" realisieren oder funktioniert das anders? Ich hoffe jemand kann mir helfen :) Mfg Flying-LED
Flying-LED schrieb: > Kann man die 3 Minuten mit der "Delay-Funktion" realisieren oder > funktioniert das anders? Ja, sowohl als auch.
ja kann man machen wenn er nur dies machne soll. Sinnvoller es über einen Timer zu realisieren...... aber gehe davon aus das du nicht groß Erfahrung µC hast?
chris schrieb: > Sinnvoller es über einen Timer zu realisieren...... aber gehe davon aus > das du nicht groß Erfahrung µC hast? Oh ja :O
Die einfachste Lösung wird ein Taster sein, der den Strom der LED schaltet. Auf den Taster stellt man einen Becher, der mit Wasser gefüllt ist und läßt diesen über einen kleinen Schlauch leer laufen. Sobald der Becher leicht genug ist, öffnet der Taster. Alles ganz ohne Elektronik.
Praktiker schrieb: > Die einfachste Lösung wird ein Taster sein, der den Strom der LED > schaltet. Auf den Taster stellt man einen Becher, der mit Wasser gefüllt > ist und läßt diesen über einen kleinen Schlauch leer laufen. Sobald der > Becher leicht genug ist, öffnet der Taster. Alles ganz ohne Elektronik. Danke für deinen "experimentellen" Beitrag! ... <.<
Praktiker schrieb: > Die einfachste Lösung wird ein Taster sein, der den Strom der LED > schaltet. Auf den Taster stellt man einen Becher, der mit Wasser gefüllt > ist und läßt diesen über einen kleinen Schlauch leer laufen. Sobald der > Becher leicht genug ist, öffnet der Taster. Alles ganz ohne Elektronik. Das wäre dann aber nur ein 8-bit Timer. Um 16-bit Timer zu realisieren, müßte man einen Eiswürfel nehmen.
Flying-LED schrieb: > Kann man die 3 Minuten mit der "Delay-Funktion" realisieren oder > funktioniert das anders? Wenns weder besonders genau noch elegant sein muss, kannst du auch sowas machen:
1 | for(uint8_t i=0; i<60*3; i++) |
2 | _delay_ms(1000); |
Wie das delay bei deinem Compiler genau aussieht weis ich nicht, aber du siehst ja wie es gemeint ist. (Der Grund warum etwas wie _delay_ms(1000*60*3) meist nicht geht ist, dass die Zeit, die die Delay-Funktion warten kann, oft begrenzt ist. Dann musst du eben x mal hintereinander warten)
:
Bearbeitet durch User
michael_ schrieb: > Mit einem 555 geht das einfacher. Richtig - und mit ner Zeitschaltuhr kann man das auch lösen - ist aber nicht gefragt.
:
Bearbeitet durch User
Wenn du einen Timer nimmst, kannst du den uC evtl in den Sleepmode legen und etwas Energie sparen.
Flying-LED schrieb: > Ich möchte eine LED 3 Minuten leuchten lassen. Danach soll sie wieder > erlischen. Such dir eine Led Blink Schaltung und gehe nach dem ersten aus ein eine Endlosschleife Oder schreib es komplett selbst, Pseudocode sieht das dann so aus 1. richte erst einmal einen Sekundenzähler ein. 2. Schalte alle Funktionen die auf dem Pin liegen ab so das nur die Ein/Ausgangsfunktion übrig bleibt (das ist Pic spezifisch und nur mit Datenblatt machbar) 3. Lege die Richtung des Pins als Ausgang fest 4. Setze den Ausgang so das die LED leuchtet 5. Setze den Sekundenzähler auf null 6. Hier ist nur ein Sprungziel: 7. Sekundenzähler + 1 8. Warte 1 Sekunde 9. Wenn Sekundenzähler kleiner 180 gehe zum Sprungziel 6. 10. Schalte die Led aus 11. Halte den Pic an oder mach was anderes. Die Kür ist dann die Zeilen 6-9 durch eine Schleife zu ersetzen.
michael_ schrieb: > Doch, Frage war "LED 3-Minuten leuchten lassen". Falsch, die Frage war: Flying-LED schrieb: > Kann man die 3 Minuten mit der "Delay-Funktion" realisieren oder > funktioniert das anders?
Schiedsrichter schrieb: > Falsch, die Frage war: > > Flying-LED schrieb: >> Kann man die 3 Minuten mit der "Delay-Funktion" realisieren oder >> funktioniert das anders? Und die kann man nur mit "ja" beantworten. Es geht mit Delay und auch anders. Und funktionieren tut es sowieso, wenn man es richtig macht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.