Pages: [1]   Go Down
Author Topic: Zähler 0000 - 9999  (Read 878 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich bin am Verzweifeln!!!
So erst mal zu dem Problem,
Ich habe ein Code-pad mit den zahlen 0-9 und zwei Led´s eine grüne und eine rote.
Von dem Pad kann man den Stecker abziehen und das sind 13 Anschlüsse.
1er für jede zahl + 2 für die Led´s + Masse und Plus
Ich habe den 4-Stelligen Code von dem Code-pad vergessen!!!
Ich würde gerne mit dem Arduino ein Programm erstellen in dem er die ganzen Codes von
0000-9999 durch geht und wenn die grüne Led leuchtet auf hört und sie im Serial Monitor ausgibt
Das wäre ja dann 0000,0001,0002,0003,0004,0005,0006…9999
Mfg Nelson32
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 435
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prima, dann mach das doch.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich bin am Verzweifeln!!!
So erst mal zu dem Problem,
Ich habe ein Code-pad mit den zahlen 0-9 und zwei Led´s eine grüne und eine rote.
Von dem Pad kann man den Stecker abziehen und das sind 13 Anschlüsse.
1er für jede zahl + 2 für die Led´s + Masse und Plus
Ich habe den 4-Stelligen Code von dem Code-pad vergessen!!!
Ich würde gerne mit dem Arduino ein Programm erstellen in dem er die ganzen Codes von
0000-9999 durch geht und wenn die grüne Led leuchtet auf hört und sie im Serial Monitor ausgibt
Das wäre ja dann 0000,0001,0002,0003,0004,0005,0006…9999
Mfg Nelson32

Bitte mehr info.
Hast du eine Beschreibung oder ein Foto des Code-pad und die genaue Modellbezeichnung.

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eigentlich benötige ich hilfe, bei dem Programm welches die Ausgabe der Codes ermöglicht. Ich habe bereits einen Versuch gemacht, dieses Programm ermöglich die Ausgabe von 0000 bis 0009. Ich weis jedoch nicht wie ich jetzt weitermachen muss, damit sich die Codes 0010 bis 0099 ergeben.

Quote
int I0 = 22;
int I1 = 24;
int I2 = 26;
int I3 = 28;
int I4 = 30;
int I5 = 32;
int I6 = 34;
int I7 = 36;
int I8 = 38;
int I9 = 40;


void setup()
{
pinMode(22,OUTPUT);
pinMode(24,OUTPUT);
pinMode(26,OUTPUT);
pinMode(28,OUTPUT);
pinMode(30,OUTPUT);
pinMode(32,OUTPUT);
pinMode(34,OUTPUT);
pinMode(36,OUTPUT);
pinMode(38,OUTPUT);
pinMode(40,OUTPUT);

}
void loop()
{
  int a = 22;
  int b = 22;
  int c = 22;
  int d = 22;
  for (d=22; d<41; d=d+2)
  {
    digitalWrite(a,HIGH);
    delay(10);
    digitalWrite(a,LOW);
    delay(500);
    digitalWrite(b,HIGH);
    delay(10);
    digitalWrite(b,LOW);
    delay(500);
    digitalWrite(c,HIGH);
    delay(10);
    digitalWrite(c,LOW);
    delay(500);
    digitalWrite(d,HIGH);
    delay(10);
    digitalWrite(d,LOW);
    delay(500);
  }
}

Vielen Dank für die schnelle Antwort smiley-wink

Mfg Nelson32
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn wir nicht wissen wie die Zahlen übertragen werden müssen, können wir Dir auch nicht sagen, wie der Sketch sein muß.
GrüßeUwe
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 435
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vorschlag: Zähler hochlaufen lassen und binär ausgeben lassen. Wär das was?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß nicht inwiefern das hier auch erlaubt ist, weil ggf. könntest du ja auch etwas illegales damit anstellen  smiley-wink

Ich würd einfach ne Zahl von 0-9999 laufen lassen.

die ersten 3 "0" kannste ne einfache if abfrage machen wenn die zahl < 10 ist,die ersten zwei nullen wenn zahl < 100 usw.

Dann schaust du dir die jeweilige Stelle der zahl an und machst dafür einfach ne if abfrage mit der jeweiligen Aktion.

Das findest du hier z.b.:
http://arduino.cc/forum/index.php/topic,137708.msg1034875.html#msg1034875

==========

Mal am Rande: Bist du sicher, dass es keine "Lock"-funktion gibt, wenn das Ding zuviele Falsch-Eingaben hat?
Logged

Austria
Offline Offline
Full Member
***
Karma: 2
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ich würde auch eine dezimale Zahl hochlaufen lassen bis 9999.
Dann einfach die einzelnen Stellen abfragen.
z.B. so:
Code:
tausenderStelle = code / 1000;
hunderterStelle = (code - tausenderStelle * 1000) / 100;
zehnerStelle = (code - tausenderStelle * 1000 - hunderterStelle * 100) / 10;
einerStelle = code - tausenderStelle * 1000 - hunderterStelle * 100 - zehnerStelle * 10;
code++;

die Nachkommastellen werden einfach weckgelassen, wenn man die Variablen als integer definiert.

Grüße,
J3RE
« Last Edit: February 17, 2013, 03:25:55 pm by J3RE » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



Die 10 LED´s sind für die Zahlen von 0 bis 9, sie simulieren quasi die Zahlen des Nummernpads. Bei 0001 soll 3 mal die erste LED blinken und danach 1 mal die Zweite. Bei 3791 müsste dann 1 mal die vierte danach 1 mal die achte dann die zehnte und dann 1 mal die zweite.

Led´s   |  Zahlen
1              0
2              1
3              2
4              3
5              4
6              5
7              6
8              7
9              8
10            9


Mfg Nelson32
Logged

Austria
Offline Offline
Full Member
***
Karma: 2
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ungefähr so sollte es funktionieren

Code:
  stelle[3] = code / 1000;
  stelle[2] = (code - stelle[3] * 1000) / 100;
  stelle[1] = (code - stelle[3] * 1000 - stelle[2] * 100) / 10;
  stelle[0] = code - stelle[3] * 1000 - stelle[2] * 100 - stelle[1] * 10;

  for(int i = 3; i >= 0; i--){
    switch(stelle[i]){
      case 0:
        // 0-Taste drücken
        break;
      case 1:
        // 1-Taste drücken 
        break;
      case 2:
        // 2-Taste drücken
        break; 
      case 3:
        // 3-Taste drücken
        break;
      case 4:
        // 4-Taste drücken
        break; 
      case 5:
        // 5-Taste drücken
        break; 
      case 6:
        // 6-Taste drücken
        break;
      case 7:
        // 7-Taste drücken
        break;
      case 8:
        // 8-Taste drücken
        break;
      case 9:
        // 9-Taste drücken
        break;
    }
   
  }   
 
  if(codeRichtig){
    Serial.println(code); // richtigen Code ausgeben
    while(1); // nichts mehr tun
  } 
 
  code++;
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Achso, jetzt ergibt es Sinn :-)

Es wird übersichtlicher, wenn Du das Problem in Teilprobleme zerlegst:
1. Die einzelnen Ziffern ermitteln.Das hat J3RE schon beschrieben.

Alternativ machst Du 4 Zähler, zählst den 1. hoch, wenn der >9 ist, setzt du ihn auf 0 und zählst den 2. eins höher usw. bis der 4. zähler > 9 ist.

2. Die Ziffern senden. z.B. als  Funktion(en).

const int ziffernZuPins[]= {22,24,26,28,30,32,34,36,38,40};

void zifferAn(int ziffer) {
  for (int i=0;i<=9;i++) {
    digitalWrite(ziffernZuPins,(i==ziffer)?HIGH:LOW);
  }
}
boolean sendeSequenz(int ziffer1,int ziffer2,int ziffer3,int ziffer4) {
  zifferAn(-1); // alle aus
  delay(10);
  zifferAn(ziffer1);
  delay(10);
  zifferAn(-1); // alle aus
  zifferAn(ziffer2);
  delay(10);
  zifferAn(-1); // alle aus
  zifferAn(ziffer3);
  delay(10);
  zifferAn(-1); // alle aus
  zifferAn(ziffer4);
  delay(10);
  return pruefeErgebnis();
}

@dertester - mit so ziemlich jeden Sketch kann man was Illegales machen bzw. hineininterpretieren. Beispiel: Wie schreibe ich einen Sketch, der eine Zeit zurückzählt und nach Ablauf oder wenn jemand eine falsch Signalleitung entfernt, zündet ääähm einen Pin  auf 1 setzt ;-)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Erstmal vielen Dank für die zahlreiche Hilfe,

aber entwerde ich bin zumüde oder zu dumm

aber versteh grad nur bahnhof

kann mir mal jemand den gnazen skript schreiben ich raff ja grad garnix mehr  smiley-eek

Mfg Nelson32
Logged

Pages: [1]   Go Up
Jump to: