Hi! Ich sitz gerade in der Schule und komme mit dem Programmieren der Ampelsteuerung auf den Wartungsmodus (dauerhaft gelb Blinkend) nicht weiter! Ich hab auch das fertige Programm mit gepostet! (für den PIC16F690) Ich hoffe ihr könnt mir ein paar Tipps geben
:
Gesperrt durch User
Was genau funktioniert denn nicht? Ich würde mal vorschlagen du formatierst deinen Code anständig und kommentierst ihn ein wenig aus... dann wird das ganze doch schon etwas übersichtlicher...
Carola Kneißl wrote: > Hi! > Ich sitz gerade in der Schule und komme mit dem Programmieren der > Ampelsteuerung auf den Wartungsmodus (dauerhaft gelb Blinkend) nicht > weiter! > Ich hab auch das fertige Programm mit gepostet! > (für den PIC16F690) > Ich hoffe ihr könnt mir ein paar Tipps geben Du musst das ganze komplett umbauen. So wie das jetzt ist, kriegst du das nicht rein. Dass du sowas wie eine Schmalspurstatemaschine gebaut ist, ist schon ok. Aber deine 'ampel' Variable steuert 2 Informationen. Zum einen steuert sie die Wartezeit von einer Phase zur nächsten, zum anderen steuert sie die Phasenabfolge. Das musst du trennen: Du brauchst eine Variable, die die Wartezeiten regelt und eine zweite Variable, die die Phasenabfolge steuert Ungefähr so
1 | ....
|
2 | |
3 | Phase = 0; // die erste Phase ist Phase 0 |
4 | Wartezeit = 10; // und die soll 10 Einheiten andauern |
5 | |
6 | switch( Phase ) |
7 | {
|
8 | case 0: |
9 | outpu.... |
10 | ....
|
11 | Wartezeit--; |
12 | if( Wartezeit == 0 ) // Wartezeit abgelaufen? |
13 | {
|
14 | Phase = 1; // nächste Phase |
15 | Wartezeit = 10; // Wartezeit für diese Phase |
16 | }
|
17 | break; |
18 | |
19 | case 1: |
20 | outpu.... |
21 | ....
|
22 | Wartezeit--; |
23 | if( Wartezeit == 0 ) // Wartezeit für diese Phase abgelaufen |
24 | {
|
25 | Phase = 5; // nächste Phase ist Phase 5 |
26 | Wartezeit = 5; // und die soll 5 Einheiten dauern |
27 | }
|
28 | break; |
29 | |
30 | .....
|
Damit kannst du jetzt deinen speziellen Modus implementieren, weil du bei jeder Phase steuern kannst, welche Phase als nächstes kommt, und wie lange sie andauern soll. Ein Blinklicht ist dann nichts anderes als 2 Phasen, die sich nach dem Ablaufen ihrer Wartezeit immer wieder gegenseitig aktivieren
1 | case 20: |
2 | ...
|
3 | Wartezeit--; |
4 | if( Wartezeit == 0 ) |
5 | {
|
6 | Phase = 21; |
7 | Wartezeit = 5; |
8 | }
|
9 | break; |
10 | |
11 | case 21: |
12 | ...
|
13 | Wartezeit--; |
14 | if( Wartezeit == 0 ) |
15 | {
|
16 | Phase = 20; |
17 | Wartezeit = 5; |
18 | }
|
19 | break; |
Alles was du dann noch brauchst ist einen Taster oder Schalter, der die Blinkerei aktiviert. Dies geschieht dadurch, dass die Variable Phase auf (in diesem Beispiel) 20 gesetzt wird und schon beginnt die Blinkerei.
Der Wartungsmodus bei gelb blink bleibt nicht gelb blinkend ausser man drückt den Taster dauerhaft!
Problem ist: Kann mir jemand meine Schulaufgaben machen, will selber lieber fernsehen... Wenn ich falsch liege, dann poste genau den Punkt, wo du mit deinen Überlegungen nicht weiter kommst.
Der Debugger (entwanzer) ist ein Programm das gewöhnlich beim Compiler (Programm zur Übersetzung des Quelltextes)dabei ist,um den Programmablauf Schritt für Schritt abzuarbeiten.Damit kann man dann auch den Zustand von Variablen,Speicherinhalten und vieles anderes mehr beobachten und sehen wo noch logische oder syntaktische Fehler sind.Die Arbeit damit hat mir jedenfalls mehr gebracht als nur dem sterilen Vortrag des Lehrers zu lauschen und nur alles mitzuschreiben.Leider steht der Debugger gewöhnlich nicht auf dem Lehrplan.Ich schlage dir vor erstmal ein kleines Programm mit den vier Grundrechenarten zu schreiben und mit dem Debugger Schritt für Schritt auszutesten.Danach kannst du dich steigern mit Kopfgesteuerten oder Fußgesteuerten Schleifen.if-Then_else Verzweigungen zu denen auch die Switches gehören und was C sonst noch zu bieten hat.Dir die Lösungen vorzusagen würde nichts bringen.Besser zu suchts die Fehler empirisch selber.Dann lernst du das besser. Gruß Martin
Ich habe einen pb. Ich will diese Signal von der Simulation auf den folgende Link: http://www.technik-emden.de/~elmalab/projekte/ws9899/wss_applet.html zu simulieren und Mithilfe von einem Poti alles regel-Es soll auf einen PiC 16F690 realisiert und ich habe den Pickit 2 den. Program zu lesen. Leider bin ich Novize bei Programms Ich danke ihnen für ihre Hilfe
ok, ich helfe doch gerne. Zuerst fangen wir mit den Grundlagen an: Du suchst jetzt erstmal hier im Forum den "neuen Beitrag"-Knopf. Wenn du den gefunden hast, reden wir weiter.