Offline
Newbie
Karma: 0
Posts: 14
|
 |
« on: February 17, 2013, 02:14:35 pm » |
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
Full Member
Karma: 0
Posts: 124
|
 |
« Reply #1 on: February 17, 2013, 02:32:58 pm » |
Prima, dann mach das doch.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 172
Posts: 16128
+39 349 2158303
|
 |
« Reply #2 on: February 17, 2013, 02:41:16 pm » |
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
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #3 on: February 17, 2013, 02:50:15 pm » |
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. 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  Mfg Nelson32
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 172
Posts: 16128
+39 349 2158303
|
 |
« Reply #4 on: February 17, 2013, 03:07:46 pm » |
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
Full Member
Karma: 0
Posts: 124
|
 |
« Reply #5 on: February 17, 2013, 03:11:09 pm » |
Vorschlag: Zähler hochlaufen lassen und binär ausgeben lassen. Wär das was?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #6 on: February 17, 2013, 03:11:50 pm » |
Ich weiß nicht inwiefern das hier auch erlaubt ist, weil ggf. könntest du ja auch etwas illegales damit anstellen  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
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #7 on: February 17, 2013, 03:20:31 pm » |
ich würde auch eine dezimale Zahl hochlaufen lassen bis 9999. Dann einfach die einzelnen Stellen abfragen. z.B. so: 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
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #8 on: February 17, 2013, 03:27:08 pm » |
 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
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #9 on: February 17, 2013, 03:46:09 pm » |
Ungefähr so sollte es funktionieren 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
Jr. Member
Karma: 0
Posts: 66
|
 |
« Reply #10 on: February 17, 2013, 03:49:38 pm » |
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
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #11 on: February 17, 2013, 04:09:48 pm » |
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  Mfg Nelson32
|
|
|
|
|
Logged
|
|
|
|
|
|