
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Jürgen, zur Frage ob ich schon eine Timer-Steuerung hinbekomen habe - Ja, habe ich. Das Hauptproblem ist eigentlich der Timer im Timer. Derzeit läuft alles noch im Sekunden-Takt und ich führe den Blink-Impuls durch den Befehl TOG LED aus. Wenn ich mit Minuten Arbeite schaffe ich den Blinker nicht schneller da der Durchlauf so lange dauert. Da das Ganze nach 180 Sekunden aus dem Ruder läuft setzte ich den zaehler und sekunden zurück auf 0 und wiederhole halt zig mal den Ablauf. Dementsprechend groß ist mein verbrauchter Speicher (ca.1800) Soweit bin ich jetzt mit meinem Programm zwar glücklich, aber nicht überglücklich und hoffe auf eine bessere Lösung. Durch den Testlauf dieser Gerätschaft stellte sich heraus, dass der Stromverbrauch sehr hoch ist. Ich betreibe das Ganze an einer 9V Batterie. An LED3 schalte ich mit einem Transistor den Minuspol frei für eine weitere Applikation auf der Platine. Den Pluspohl zu schalten währe mir lieber gewesen, ich weis aber nicht wie das geht. Mein Anschluss sieht so aus: | - Ausgang wenn Signal von R1 kommend (LED3 an Mikro) | _|_ ___ | \ Mikro---------[___]------------------------| | T1 = BC547C R1 |___ / | | GND Anstatt den GND zu schalten möchte ich gerne den Pluspol zum Schalten nutzen, kennt wer Abhilfe? Gruß Martin > Hallo SMAX > Hast Du schon die eigendliche Taktsteuerug hinbekommen? > In Anschluss mal ein Beispiel. - Es entspricht nicht Deinem Programmablauf, da Du dann noch einen > Zähler für den Durchlauf benötigst und zusätzlich für jeden Durchlauf eigene Unterprogramme für > die LED. Das wird etwas unübersichtlich für den Anfang. > > - Erzähl doch mal was du mit dieser Steuerung bezwecken willst. Eventuell gibt es eine einfachere Lösung. > > Gruß Jürgen - Hier das Beispiel (Habe es auf der Open Mini ausprobiert) > > 'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO > 'O TAKTGEBER.OCB OPEN-CONTROL-BASIC O > 'O 04.10.2008 O > 'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO > ' > ' --- I/O PORTS ------------------------------------------------------------- > ' PORT[1] 'SERIELLE SCHNITTSTELLE > DEFINE LED1 PORT[2] > DEFINE LED2 PORT[4] > DEFINE LED3 PORT[5] > DEFINE LED4 PORT[6] > ' --- VARIABLEN ------------------------------------------------------------- > DEFINE MSEKUNDE AS BYTE 'ENTHAELT DEN WERT DER LETZTEN SEKUNDE > DEFINE MMINUTE AS BYTE 'ENTHAELT DEN WERT DER LETZTEN MINUTE > DEFINE ZLED1 AS BYTE > DEFINE ZLED2 AS BYTE > DEFINE ZLED3 AS BYTE > DEFINE ZLED4 AS BYTE > DEFINE ZLED5 AS BYTE > ' > ' --- VOREINSTELLUNGEN ------------------------------------------------------ > ZLED1 = 0 'ZAEHLER ZURUECKSETZEN > ZLED2 = 0 'ZAEHLER ZURUECKSETZEN > ZLED3 = 0 'ZAEHLER ZURUECKSETZEN > ZLED4 = 0 'ZAEHLER ZURUECKSETZEN > ZLED5 = 0 'ZAEHLER ZURUECKSETZEN > MSEKUNDE = 0 'MERKERBYTE SEKUNDEN ZURUECKSETZEN > MMINUTE = 0 'MERKERBYTE MINUTEN ZURUECKSETZEN > LED1 = OFF 'LED1 EINSCHALTEN > LED2 = OFF 'LED2 EINSCHALTEN > LED3 = OFF 'LED3 EINSCHALTEN > LED4 = OFF 'LED4 EINSCHALTEN > ' > '=== HAUPTPROGRAMM ========================================================== > #START > GOSUB SEK_TAKT 'SEKUNDENTAKT ERZEUGEN UND ZAEHLEN > GOSUB MIN_TAKT 'MINUTENTAKT ERZEUGE UND ZAEHLEN > GOSUB LED01 > GOSUB LED02 > GOSUB LED03 > GOSUB LED04 > GOTO START 'WIEDER ZUM PROGRAMMANFANG GEHEN > END > '=== ENDE HAUPTPROGRAMM ===================================================== > > #LED01 > IF LED1 AND ZLED1 > 20 THEN 'LED 20 SEKUNDEN EIN > LED1 = OFF > ZLED1 = 0 > END IF > IF NOT LED1 AND ZLED1 > 35 THEN 'LED 35 SEKUNDEN AUS > LED1 = ON > ZLED1 = 0 > END IF > RETURN > > #LED02 > IF LED2 AND ZLED2 > 2 THEN 'LED 2 SEKUNDEN EIN > LED2 = OFF > ZLED2 = 0 > END IF > IF NOT LED2 AND ZLED2 > 5 THEN 'LED 5 SEKUNDEN AUS > LED2 = ON > ZLED2 = 0 > END IF > RETURN > > #LED03 > IF LED3 AND ZLED3 > 5 THEN 'LED 5 MINUTEN EIN > LED3 = OFF > ZLED3 = 0 > END IF > IF NOT LED3 AND ZLED3 > 10 THEN 'LED 10 MINUTEN AUS > LED3 = ON > ZLED3 = 0 > END IF > RETURN > > #LED04 > IF LED4 AND ZLED4 > 10 THEN 'LED 10 SEKUNDEN EIN > LED4 = OFF > ZLED4 = 0 > END IF > IF NOT LED4 AND ZLED5 > 2 THEN '2 MINUTEN AUS > LED4 = ON > ZLED5 = 0 > END IF > RETURN > ' > ' --------------------------------------------------------------------------- > ' --- SEKUNDEN-TAKT --- EINE ANWEISUNG NUR EINMAL PRO SEKUNDE AUSFUEHREN ---- > ' --------------------------------------------------------------------------- > #SEK_TAKT > IF MSEKUNDE = SECOND THEN RETURN '.. IN DIESER SEKUNDE SCHON GEZAEHLT > ZLED1 = ZLED1 +1 > ZLED2 = ZLED2 +1 > ZLED4 = ZLED4 +1 > MSEKUNDE = SECOND 'AKTUELLEN SEKUNDENWERT UEBERGEBEN > RETURN > ' > ' --------------------------------------------------------------------------- > ' --- MINUTENEN-TAKT --- EINE ANWEISUNG NUR EINMAL PRO MINUTE AUSFUEHREN > ' --------------------------------------------------------------------------- > #MIN_TAKT > IF MINUTE = MMINUTE THEN RETURN 'ANWEISUNG SCHON AUSGEFUEHRT > ZLED3 = ZLED3 +1 > ZLED5 = ZLED5 +1 > MMINUTE = MINUTE 'AKTUELLE MINUTE SPEICHERN > RETURN > '--- HIER IST ALLES ZU ENDE ------------------------------------------------- |
| Antwort schreiben |