Forum: Mikrocontroller und Digitale Elektronik Blink programm für c-control


von Christian S. (css)


Lesenswert?

Hallo!

ich würde ein blinkprogramm für meine c-control pro ministation 
brauchen!

das blinken soll durchen einen taster am input1 gestartet werden!

dann soll eine led am output1 2 mal hintereinander zeitverzögert 
aufleuchten. dann das gleiche noch mal am output2. und dann immer weiter 
und weiter bis der taster am input1 erneut gedrückt wird.

danke schon mal für die hilfe!


gruß chris

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> Hallo!
>
> ich würde ein blinkprogramm für meine c-control pro ministation
> brauchen!
>
> das blinken soll durchen einen taster am input1 gestartet werden!
>
> dann soll eine led am output1 2 mal hintereinander zeitverzögert
> aufleuchten. dann das gleiche noch mal am output2. und dann immer weiter
> und weiter bis der taster am input1 erneut gedrückt wird.
>
> danke schon mal für die hilfe!

Wo ist dein bisheriger Versuch?

Ist ja nicht so, dass das jetzt wahnsinnig schwierige Raketentechnik 
wäre.

von Düsendieb (Gast)


Lesenswert?

na dann zeig doch mal, was Du schon bis jetzt fertig hast.
So wirst Du keine Hilfe bekommen.

von Christian S. (css)


Lesenswert?

das problem ist das ich das schon lange nicht mehr gemacht habe und nur 
eine grundeinschulung hatte! :(

von Nonsense (Gast)


Lesenswert?

Learning by doing.

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> das problem ist das ich das schon lange nicht mehr gemacht habe und nur
> eine grundeinschulung hatte! :(

Macht ja nichts.
Eine der Grundregeln hier im Forum lautet:
Du zeigst was du hast, sagst bei welchem Detail du Schwierigkeiten hast.
Das Forum korrigiert dann, das was du zeigst oder liefert Ideen oder 
hilft schon mal an der einen oder anderen Stelle aus.

Aber bei 0 anfangen: das tun wir nicht.

von Christian S. (css)


Lesenswert?

das schon nur irgendetwas braucht man trotzdem als anhalt!

von Karl H. (kbuchegg)


Lesenswert?

Für deine Aufgabenstellung brauchst du im einfachsten Fall

* Tastenabfrage
* LED einschalten
* LED ausschalten
* Warten
* An Programmkonstukten: If, while, Sequenz

Das wars dann auch schon im Wesentlichen. Alles Themen, die in jeder
Grundschulung behandelt werden.

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> das schon nur irgendetwas braucht man trotzdem als anhalt!

Welche Teile kriegst du alleine hin?

Lass doch mal die Tasten beiseite. Kannst du 2 LED wechselweise so wie 
du das beschrieben hast blinken lassen?

von Christian S. (css)


Lesenswert?

das ist etwas was ich mit einem freund gemacht hab!

nur was er da mit INPUT_1 == 1 und so gemacht hat verstehe ich nicht!




int ein;

void main(void)
{

    MINI_INIT();

    ein = 0;

    //Thread starten
    Thread_Start(1,thread1);

    do {

      //Ein/Aus umschalten bei Signal auf Input_1
      if (INPUT_1  == 1) {
          if (ein == 0)
              ein = 1;
          else
              ein = 0;
      }

    } while (1);

}

void thread1(void)
{
    while(true)
    {
        if (ein == 1) {
          //Werte in MiliSec.
          OUTPUT1_ON();
          Sleep(1000);
          OUTPUT1_OFF();
          Sleep(500);
          OUTPUT1_ON();
          Sleep(1000);
          OUTPUT1_OFF();
          Sleep(500);

          OUTPUT2_ON();
          Sleep(1000);
          OUTPUT2_OFF();
          Sleep(500);
          OUTPUT2_ON();
          Sleep(1000);
          OUTPUT2_OFF();
          Sleep(500);
          }
      else {
        OUTPUT1_OFF();
        OUTPUT2_OFF();
      }
    }
}

von Nitram L. (nitram)


Lesenswert?

Christian Siegl schrieb:
> Hallo!
>
> ich würde ein blinkprogramm für meine c-control pro ministation
> brauchen!
>
> das blinken soll durchen einen taster am input1 gestartet werden!
>
> dann soll eine led am output1 2 mal hintereinander zeitverzögert
> aufleuchten. dann das gleiche noch mal am output2. und dann immer weiter
> und weiter bis der taster am input1 erneut gedrückt wird.
>
> danke schon mal für die hilfe!
>
>
> gruß chris

Da passt es besser..

http://ccpro.cc2net.de/forum/


nitraM

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> das ist etwas was ich mit einem freund gemacht hab!
>
> nur was er da mit INPUT_1 == 1 und so gemacht hat verstehe ich nicht!

Na dann sag das doch!

Ich würde mal sagen, das ist die Abfrage ob eine Taste gedrückt ist 
(gedrückt wurde) oder nicht. Ist eine Taste gedrückt worden, dann ist 
INPUT_1 gleich 1

Funktioniert es denn?

von Christian S. (css)


Lesenswert?

aso!

das weiß ich nicht ob es funktioniert! ich hab gerade keine möglichkeit 
zum anschließen!

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> aso!

Na ja.
Die haben sich schon was dabei gedacht, als sie die 'Variable' INPUT_1 
genannt haben. INPUT so wie Eingabe.

> das weiß ich nicht ob es funktioniert! ich hab gerade keine möglichkeit
> zum anschließen!

Schade. Ich kenn die C-Control nicht. Jetzt kommt es drauf an, ob dieses 
INPUT so funktioniert, dass es 1 liefert solange eine Taste gedrückt 
ist, oder ob es bei einem Tastendruck einmalig eine 1 liefert.

Der Unterschied ist wie bei Rollosteuerungen:
Bei den einen läuft das Rollo, solange der Finger auf der Taste ist.
Lässt man los, dann hört auch das Rollo auf zu fahren.
Bei den anderen drückt man einmal drauf und das Rollo fährt nach oben, 
egal wie lange man drückt oder nicht drückt. Es ist die einmalige 
Betätigung, die alles auslöst.

Funktioniert dieses INPUT wie ersteres, so schaltest du das Blinken 
dauernd ein/aus, solange du die Taste drückst. Und das dürfte nicht das 
sein, was du willst :-)

von Christian S. (css)


Lesenswert?

input liefert nur 1 wenn ich drücke!

wenn einmal gedrückt ist soll das ganze soo lange laufen bis wieder 
gedrückt wird!

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> input liefert nur 1 wenn ich drücke!

und was wenn du eine halbe Stunde lang drückst, in der Zwischenzeit dein 
Programm aber 500 mal INPUT abfragt? Kriegt es dann 500 mal ein 1 (weil 
die Taste ja gedrückt ist) oder kriegt es einmalig eine 1 (weil du ja 
nur einmal niedergedrückt *hast*).

von Christian S. (css)


Lesenswert?

ich schätz mal 500 mal input = 1

d.h. es schaltet sich immer ein und aus!

von Karl H. (kbuchegg)


Lesenswert?

OK

Und das willst du nicht.

Das bedeutet, dein Programm muss daher nach dem Erkennen des 
Niederdrückens einer Taste darauf warten, dass sich der Benutzer dazu 
bequemt, den Finger wieder von der Taste zu nehmen
1
  ...
2
  ...
3
   do {
4
5
      if (INPUT_1  == 1) {     // Taste wurde niedergedrückt
6
7
          if (ein == 0)        // Blinken ein oder ausschalten, je nachdem
8
              ein = 1;         // ob es zur Zeit ein oder aus ist
9
          else
10
              ein = 0;
11
12
          while( INPUT_1 == 1 )  // darauf warten, dass der Benutzer wieder
13
            ;                    // loslässt. Einfach nur warten und sonst
14
                                 // nichts weiter tun.
15
      }
16
17
    } while (1);
18
19
  ...

(und dann hoffen wir mal, das Conrad die Taster entprellt hat)

von Christian S. (css)


Lesenswert?

ok danke!

und sonst kann das ganze eigentlich funktionieren was ich da geschrieben 
habe?

von Karl H. (kbuchegg)


Lesenswert?

Christian Siegl schrieb:
> ok danke!
>
> und sonst kann das ganze eigentlich funktionieren was ich da geschrieben
> habe?

es sieht zumindest nicht unplausibel aus :-)

von Christian S. (css)


Lesenswert?

dann ist jaa gut!

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
Noch kein Account? Hier anmelden.