mikrocontroller.net

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


Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Düsendieb (Gast)
Datum:

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

Autor: Christian Siegl (css)
Datum:

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

Autor: Nonsense (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Learning by doing.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das schon nur irgendetwas braucht man trotzdem als anhalt!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht 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();
      }
    }
}

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aso!

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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*).

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich schätz mal 500 mal input = 1

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
  ...
  ...
   do {

      if (INPUT_1  == 1) {     // Taste wurde niedergedrückt

          if (ein == 0)        // Blinken ein oder ausschalten, je nachdem
              ein = 1;         // ob es zur Zeit ein oder aus ist
          else
              ein = 0;

          while( INPUT_1 == 1 )  // darauf warten, dass der Benutzer wieder
            ;                    // loslässt. Einfach nur warten und sonst
                                 // nichts weiter tun.
      }

    } while (1);

  ...

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

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke!

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

es sieht zumindest nicht unplausibel aus :-)

Autor: Christian Siegl (css)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann ist jaa gut!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.