LED 3 Minuten leuchten lassen

Gast #3862013
Lesenswert?
• ▲
▼
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
Gast #3862033
Lesenswert?
• ▲
▼
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.
Gast #3862040
Lesenswert?
• ▲
▼
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! ... <.<
(Firma: Vescomp) #3862059
Lesenswert?
• ▲
▼
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.
#3862128
Lesenswert?
• ▲
▼
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)
Gast #3862340
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.