- LiTime Speicher und Akkus         
Ergebnis 1 bis 9 von 9

Thema: u.a. wie Flackerlicht ; mit CControl-Mikro ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2005
    Beiträge
    7

    u.a. wie Flackerlicht ; mit CControl-Mikro ?

    Anzeige

    Praxistest und DIY Projekte
    Heho,
    benutze seit fast einem Jahr euer Forum als Silentreader und konnte mich schon von einigen Sachen bereichern ! =D> Thx

    Nun habe ich selbst ein Anliegen:
    Experimentiere gerade mit dem C-Control Mikro und würde gerne ein Flackerlicht zusammenschreiben, habe aber leider keine Idee wie ich das bewerkstelligen könnte...
    Soweit ich weiss, müsste der Befehlsinterpreter eine RND Funktion haben...

    Oder sagen wir es mal so; das ganze Proggie muss am Ende so aussehen:
    (vllt hat ja gerade einer Zeit )
    P1=Taster
    P2=Lampe
    P4=Reset
    P5=Power
    TasterImpuls lang = mind. 1sec
    TasterImpuls kurz = max. 0,2sec

    Im Grundzustand, d.h. nach Initialisierung darf nur P2 leuchten.
    lang-kurz = Reset
    lang-lang = Power
    kurz-lang-kurz = P2 Lampe On oder Off
    kurz-kurz-kurz = P2 Flackerlicht

    Falsche Codereihe muss erkannt und wieder an den Anfang gesprungen werden. Genauso, darf zwischen zwei Codes max. 1sec vergehen, sonst sprung an Anfang.

    So nun hoffe ich auf Vorschläge
    (Vorzuziehen ist C-control Basic (nicht ++))
    [Hoffe, man kriegt das in 2kbyte unter..)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    37
    Beiträge
    578
    Das basic ist genauso, wie bei der C-Control 1Unit?
    Also das Problem ist, dass du keine zufälligen Werte erzeugen kannst.
    Du kannst RAND mit dem internen Timer initialisieren, aber davon wird es noch nicht zufällig.
    Aber da du einen Taste hast, dürfte das kein Problem sein!
    Du läßt einfach ne Variable hochzählen, sobald du auf die Taste drückst, da du nie genau gleich lange hältst, wird es zufällig.
    Bekommst du so hin, oder soll ich dir was schreiben?
    Wird allerdings wahrscheinlich erst am Freitag, da ich zur Zeit viel zu tun habe.

    Kannst du bitte nochmal versuchen zu beschreiben, was das Programm machen soll?
    Am Besten so, als ob dus gerade benutzen würdest (einschalten...)
    und was mit der Lampe passiert.

    MfG ACU
    http://www.roboterbastler.de
    endlich wieder online

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2005
    Beiträge
    7
    Hey, danke
    Ich werde im Laufe diesen Abends mal ein PAP bzw. ein Struktogram erstellen...

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163
    Hallo....
    Auf www.c-control-support.de liegen im Bereich
    CCBASIC-> ANWENDUNGEN diverse Demos, u.a

    APP_CODESWITCH.BAS - kurz-lang-lang...usw Decodierung
    APP_NEONLAMPS.BAS - Random Flackern von Leuchtstofflampen.

    Vielleicht hilft dir das.
    ciao......

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2005
    Beiträge
    7
    Das basic ist genauso, wie bei der C-Control 1Unit?
    Bis auf ein paar wenige, für nicht so ganz relevante Unterschiede, eigentlich identisch.

    @Die Hard,
    Danke, den Codeswitch kannte ich schon, ist zwar inspirierend aber ziemlich undurchsichtig programmiert und ob ich den meine Zwecke umbauen kann ?

    Die NeonLampe kannte ich aber noch nicht, sieht sehr vielversprechend aus.

    Hier mal ein PAP, wie ich es gerne hätte:

    Bild hier  
    (druffklicke)

    Bin flexibel für jeden Vorschlag offen
    Letzendlich, möchte ich mit einer Taste je nachdem wie man draufdrückt, drei Verbraucher ein oder ausschalten.

    Danke schonmal

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163
    Hallo...
    ich habe mal ne kurze Demo geschrieben, die das tut,
    was du möchtest...glaube ich wenigstens.
    Ciao..

    ' Sie sehen hier die Anwendung der C-Control MICRO als Code-Schalter.
    ' Mit einer einzigen Taste werden mehrere Funktionen geschaltet.
    ' Innerhalb eines Zeitfensters von 400 ms wird geprüft, ob eine Taste
    ' gerückt ist. Ist das der Fall, wird das Zeitfenster verlängert und auf
    ' weiter Tastendrücke abgefragt und diese summiert. Erfolgt kein weiterer Druck
    ' innerhalb des Fensters, wird die Eingabe als abgeschlossen betrachtet und das
    ' zugehörige Programm gestartet.
    ' Es wird also ein n-fach-Click ausgewertet. Natürlich muss die Taste weiterhin
    ' innerhalb des gestarteten Programms ausgewertet werden.
    ' Hier werden in den ausgewählten Programmen die LEDs am P/E-Board für die MICRO
    ' zum Blinken gebracht.



    '--------------------------
    '------ I/O PORTS ---------
    '--------------------------
    define LED1 port[1]
    define LED2 port[2]
    define LED4 port[4]
    define LED5 port[5]
    define LED6 Port[6]

    define BUTTON port[3]
    '-------- PROGRAMM START --------
    define COUNTER byte[1]
    define MATCHCOUNTER byte[2]
    define CODE byte[3]


    LED1=off:LED2=off:LED4=off:LED5=off:LED6=off
    '----------------------------------
    '-- MAIN PROGRAM SELECT ---
    '----------------------------------
    #SELECT_PGM
    gosub GETCODE
    on COUNTER gosub PGM0,PGM1,PGM2,PGM3,PGM4,PGM5
    goto SELECT_PGM
    '-----------------------------------
    #PGM0
    RETURN
    '-----------------------------------
    #PGM1
    LED1=onause 2:LED1=offause 2:RETURN
    '-----------------------------------
    #PGM2
    LED2=onause 2:LED2=offause 2:RETURN
    '-----------------------------------
    #PGM3
    LED4=onause 2:LED4=offause 2:RETURN
    '-----------------------------------
    #PGM4
    LED5=onause 2:LED5=offause 2:RETURN
    '-----------------------------------
    #PGM5
    LED6=onause 2:LED6=offause 2:RETURN
    '-----------------------------------
    '-- GET THE CLICK CODE --
    '-----------------------------------
    #GETCODE
    if BUTTON=on then RETURN
    COUNTER=1
    #WAIT_RELEASE
    if BUTTON=OFF then goto WAIT_RELEASE
    SECOND=0 ' RESET 20ms TIMER
    '----- WAIT TIMEOUT OR BUTTON ----
    #WAIT_PRESS
    if TIMER=40 then RETURN ' TIMEOUT 400ms ?
    if BUTTON=ON then goto WAIT_PRESS
    COUNTER=COUNTER+1:goto WAIT_RELEASE
    '---------------------------------

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2005
    Beiträge
    7
    Hallo DieHard,
    danke für deinen Vorschlag. War zwar nicht ganz, das was ich suchte, habe aber einen großen Teil deiner Routine verwenden können =D>
    Ausserdem habe ich auch vieles aus den ConradSamples übernehmen können.

    Der Quelltext ist höchstwahrscheinlich ziemlich unausgereift, unnötig lang und unübersichtlich, aber nach Stunden der Tippselei ist es vollbracht: es funktioniert ! Sind fast ganze 1.5Kbyte

    Weiss, dass das reindenken in fremdes Code nicht einfach ist, bin aber trotzdem für Optimierungsvorschläge dankbar. Vor allem muss ich mir angewöhnen, mehr mit UProgrammen zu arbeiten.

    Code:
    '------Ports---------------------
    define Top_LED             port[1]
    define Power               port[2]
    define Joy_MicroTaster     port[3]
    define Front_LED           port[5]
    define Betrieb_ON          port[6]
    
    define Ringcounter         byte[1]
    define Matchcounter        byte[2]
    define Code                byte[3]
    define COUNTER             byte[4]
    define CountDown           byte[5]
    define CountDownAus        byte[13]
    define CountDownZaehler    byte[5]
    '------Für Effekt 4-------------
    define BlinkerZaehler      byte[6]
    '-----Für NeonLampe-----------
    define RAND1               byte[7]
    define RAND2               byte[8]
    define RAND4               byte[9]
    define RAND5               byte[10]
    define RAND6               byte[11]
    define SCOUNTER            byte[12]
    '---------------------------------
    
    #NoRun
    Front_LED=off:Top_LED=off
    
    #AnfangsLoop
    If Betrieb_ON=ON Then Goto Neonlampe
    if TIMER=49 then goto RESET
    if Joy_MicroTaster then goto AnfangsLoop
    SECOND=0
    wait Joy_MicroTaster:RINGCOUNTER=RINGCOUNTER+1
    looktab AnCode,RINGCOUNTER,CODE
    if ((TIMER > 15) and (TIMER<CODE))then goto MATCH
    if ((TIMER < 15) and (TIMER>CODE))then goto MATCH
    MATCHCOUNTER=0:if ((RINGCOUNTER=3) or (Ringcounter>3)) then RINGCOUNTER=0
    GOTO AnfangsLoop
    
    #MATCH
    MATCHCOUNTER=MATCHCOUNTER+1
    if (RINGCOUNTER=3) and (MATCHCOUNTER=3) then goto OPEN
    goto AnfangsLoop
    
    #OPEN
    RINGCOUNTER=0:MATCHCOUNTER=0:
    Goto PowerOn
    
    #RESET
    RINGCOUNTER=0
    MATCHCOUNTER=0
    goto AnfangsLoop
    
    #PowerON
    Power=on:pause 25:Power=off
    if Betrieb_ON=off then goto NoRun
    Gosub NeonLampe
    
    #MittelLoop
    if Betrieb_ON=off then goto NoRun
    
    #Run
    if Betrieb_ON=off then goto NoRun
    if Joy_MicroTaster then goto Run
    SECOND=0
    wait Joy_MicroTaster
    if (TIMER >15) then goto MachausInit
    if ((TIMER < 15) and (TIMER>1))then goto LampensteuerungInit
    GOTO MittelLoop
    
    #MachausInit
    Second=0
    #Machaus
    if Timer > 25 then goto MittelLoop
    gosub GETCODE
    on COUNTER goto Aus_0,Aus_1,Aus_2
    goto Machaus
    #Aus_0
    Counter=0
    goto Machaus
    #Aus_1
    Counter=0
    goto Machaus
    #Aus_2
    Counter=0
    CountDownZaehler=10
    For CountDownAus=1 to 10
    Front_Led=off:Top_Led=off
    pause CountDownZaehler
    Front_Led=On:Top_Led=On
    pause CountDownZaehler
    CountDownZaehler=CountDownZaehler-1
    Next CountDownAus
    Power=on:pause 50:Power=off
    Goto NoRun
    
    #LampensteuerungInit
    Second=0
    #Lampensteuerung
    if Timer > 30 then goto MittelLoop
    gosub GETCODE
    on COUNTER goto PGM0,PGM1,PGM2,PGM3,PGM4
    goto Lampensteuerung
    '-----------------------------------
    #PGM0
    Goto Lampensteuerung
    #PGM1
    Tog Top_LED:Counter=0:Goto MittelLoop
    #PGM2
    Tog Front_LED:Counter=0:Goto MittelLoop
    #PGM3
    Counter=0:Goto Lampensteuerung
    #PGM4
    Counter=0:
    Goto FlackerLicht
    
    
    '----Routine von DieHard----------
    '-- GET THE CLICK CODE --
    #GETCODE
    if Joy_MicroTaster=on then RETURN
    COUNTER=1
    #WAIT_RELEASE
    if Joy_MicroTaster=OFF then goto WAIT_RELEASE
    SECOND=0 ' RESET 20ms TIMER
    '----- WAIT TIMEOUT OR BUTTON ----
    #WAIT_PRESS
    if TIMER=20 then RETURN ' TIMEOUT 200ms ?
    if Joy_MicroTaster=ON then goto WAIT_PRESS
    COUNTER=COUNTER+1:Second=0:goto WAIT_RELEASE
    '---------------------------------
    
    '-------- PROGRAMM START --------
    #NeonLampe
    Top_LED=off:Front_LED=off
    Scounter=0
    RAND1=RAND:RAND2=RAND:RAND4=RAND:RAND5=RAND:RAND6=RAND
    #NeonLoop
    '--- GET THE RANDOM VALUES -----
    RAND1=RAND:RAND2=RAND:RAND4=RAND:RAND5=RAND:RAND6=RAND
    '--- MAKE RANDOM FLICKERING -----
    #PERIOD
    SCOUNTER=SCOUNTER+1:if SECOND>2 then goto ON1:if SCOUNTER>RAND1 then Front_LED=off
    #L2 if SECOND>2 then goto ON2:if SCOUNTER>RAND2 then Top_LED=off
    #L4 if SECOND>3 then goto ON4
    #L5 if SECOND>4 then goto ON5
    #L6 if SECOND>5 then goto ON6
    if SCOUNTER<RAND1 then deact Front_LED:if SCOUNTER<RAND2 then deact Top_LED
    IF SCOUNTER<>255 then goto PERIOD
    goto NeonLoop
    '---- SWITCH TO FULL BRIGHTNES ---
    #ON1 Front_LED=on:goto L2
    #ON2 Top_LED=on:goto L4
    #ON4 goto L5
    #ON5 goto L6
    #ON6
    '#ALLON goto ALLON
    Goto Mittelloop
    
    #Flackerlicht
    Top_LED=off:Front_LED=off
    pause 100
    #Flackerlicht_1
    Top_LED=on
    if not Joy_MicroTaster=on then goto Flackerlicht_2
    if Betrieb_ON=off then goto NoRun
    pause 150
    Top_LED=off
    Front_Led=on
    if not Joy_MicroTaster=on then goto Flackerlicht_2
    if Betrieb_ON=off then goto NoRun
    pause 150
    Front_Led=off
    goto Flackerlicht_1
    #Flackerlicht_2
    wait Joy_MicroTaster
    if Betrieb_ON=off then goto NoRun
    goto Programm2
    
    #Programm2
    Pause 100
    Top_LED=off:Front_LED=off
    #Programm2_1
    Top_LED=on:Front_LED=on:pause 3
    if Betrieb_ON=off then goto NoRun
    Top_LED=off:Front_LED=off:pause 100
    if not Joy_MicroTaster=on then goto Programm2_2
    goto Programm2_1
    #Programm2_2
    wait Joy_MicroTaster
    if Betrieb_ON=off then goto NoRun
    goto Programm3
    
    #Programm3
    if Betrieb_ON=off then goto NoRun
    Top_LED=on:Front_LED=on:pause (RAND and &H04)*3+6
    if Betrieb_ON=off then goto NoRun
    Top_LED=off:Front_LED=off:pause (RAND and &H08)*5+7
    if not Joy_MicroTaster=on then goto Programm3_1
    if Betrieb_ON=off then goto NoRun
    goto Programm3
    #Programm3_1
    wait Joy_MicroTaster
    if Betrieb_ON=off then goto NoRun
    goto Programm4
    
    #Programm4
    Top_LED=off:Front_LED=off
    if Betrieb_ON=off then goto NoRun
    pause 100
    BlinkerZaehler=50
    #Programm4_1
    For CountDown=1 to 24
    Front_Led=on:Top_Led=on
    if Betrieb_ON=off then goto NoRun
    if not Joy_MicroTaster=on then goto Programm4_2
    pause BlinkerZaehler
    Front_Led=Off:Top_Led=Off
    if Betrieb_ON=off then goto NoRun
    if not Joy_MicroTaster=on then goto Programm4_2
    pause BlinkerZaehler
    If BlinkerZaehler>11 then BlinkerZaehler=BlinkerZaehler-3 else BlinkerZaehler=BlinkerZaehler-1
    Next CountDown
    BlinkerZaehler=50
    goto Programm4
    #Programm4_2
    wait Joy_MicroTaster
    if Betrieb_ON=off then goto NoRun
    goto Mittelloop
    
    Table AnCode 0 50 1 1
    TabEnd

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.02.2005
    Alter
    34
    Beiträge
    23
    Empfielst du den C_controll micro für einen Anfänger??
    danke für eine Antwort

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2005
    Beiträge
    7
    Bis auf den relativen hohen Preis, ist der C-Control Mikro imho durchaus als Einstiegs-uC geeignet, da das C-Basic wirklich rudimentär ist und selbst Leuten, die mit Programmiersprachen nichts am Hut hatten, einen einfachen Einstieg ermöglicht.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus