Brute Force mit dem Arduino

Gast #4535262
Lesenswert?

Hallo,

Ich würde gerne ein Brute Force Programm für meinen Arduino schreiben.

Er soll einen 4-Stelligen Code knacken.

Zahl: Von 0000-9999.

Es reicht nicht, nur 1 in den Seriellen Monitor zu schreiben, sondern 
0001 müsste es sein.

Ich würde im Nachhinein gerne die Methode in Ziffern unterteilen, so das 
er bei 1234 schreibt:

4312 6583 9372 8482 (bsp.)

Die Zahlen von 0-9 werde ich vorher definieren.

Meine Frage nun:

Wie schreib ich so ein Programm :D

Wenn einer einen ähnlichen Beitrag kennt, ich würde mich über einen Link 
freuen.

Vielen Dank fürs durchlesen schonmal

Grüße Simon.Sp

PS: Ich bitte nicht um ein ganze Programm, sonder bsp um eine "Funktion" 
um dies einfach zu realisieren.
#4535274
Lesenswert?

Hast du schonmal deinen Arduino programmiert?? Vielleicht solltest du 
erst einmal eine Led zum Blinken bekommen, dann mal einen Taster 
einlesen und dann was über Serial.print() ausgeben.
Wenn das alles funktioniert und du ein bisschen Übung hast kannst du 
nochmal fragen und etwas detaillierter sein.

Auch Schleifen (insbesondere eine for-Schleife) solltest du dir auch mal 
angucken..

Simon S. schrieb:
> Ich würde im Nachhinein gerne die Methode in Ziffern unterteilen, so das
> er bei 1234 schreibt:
>
> 4312 6583 9372 8482 (bsp.)

Das verstehe ich nicht. Soll er die Zahlen zufällig ausgeben?

Finn
Gast #4535287
Lesenswert?

Finn S. schrieb:
> Hast du schonmal deinen Arduino programmiert?? Vielleicht solltest du
> erst einmal eine Led zum Blinken bekommen, dann mal einen Taster
> einlesen und dann was über Serial.print() ausgeben.
> Wenn das alles funktioniert und du ein bisschen Übung hast kannst du
> nochmal fragen und etwas detaillierter sein.
>
> Auch Schleifen (insbesondere eine for-Schleife) solltest du dir auch mal
> angucken..
>
> Simon S. schrieb:
>> Ich würde im Nachhinein gerne die Methode in Ziffern unterteilen, so das
>> er bei 1234 schreibt:
>>
>> 4312 6583 9372 8482 (bsp.)
>
> Das verstehe ich nicht. Soll er die Zahlen zufällig ausgeben?
>
> Finn

Oh man...

Ich hab nicht gefragt wie ich die Serial.print Funktion nutze.

Der Tipp mit der for-Schleife war gut, nur bei meinem Programm nicht 
praktikabel.

Die zahlen sollen nicht zufällig sein, die definier ich vorher. (s.o.)

Nur mal so:
Wer andere so korrigiert und meint ein auf oberschlau zu machen und dann 
sowas fragt...

Naja, da ich ja hilfe von dir brauch werd ich weiter freundlich bleiben.
Gast #4535296
Lesenswert?

Simon S. schrieb:
> Es ust meines Erachtens nicht möglich mit ihr einen Wert von 0 bis 9999
> verändern im 0001 Formart.

Doch, selbstverständlich. Du zählst ganz normal 0 bis 9999, und bei der 
Ausgabe mit Serial.println lässt du dir halt führende Nullen mit 
ausgeben.

Simon S. schrieb:
> Ich hab nicht gefragt wie ich die Serial.print Funktion nutze.

Genau das ist aber dein Problem.
#4535300
Lesenswert?

Simon S. schrieb:
> Es ust meines Erachtens nicht möglich mit ihr einen Wert von 0 bis 9999
> verändern im 0001 Formart.

formaRt dürfte wohl eher in die Richtung 3D Drucker gehen! Schönes 
Wortspiel.

Desweiteren ist Deine Beschreibung sehr dürftig.

Was soll das 0001 Format sein?

Erster Schleifendurchlauf: 0001
Zweiter:                   0002
...
Elfter:                    0011

Oder wie? Und wenn jetzt "ja" kommt, dann solltest Du Dir doch mal 
gaaanz dringend aneignen Strings zu formatieren und sie mit der "ICH 
WEISZ WIE SIE GEHT"-Serial.Print senden!
Gast #4535305
Lesenswert?

Simon S. schrieb:
> Die zahlen sollen nicht zufällig sein, die definier ich vorher.

Also, definier die Reihenfolge.
Schreibe vor jede Zahl in deiner definierten Reihenfolge ein
>  Serial.println("
und nach jede Zahl ein
> ");
Fertig:
1
Serial.println("4312");
2
Serial.println("6583");
3
Serial.println("9372");
4
Serial.println("8482");


Schöner:

definiere eine Funktion 'Position -> Code' (als Array-Lookup oder 
Berechnungsanweisung oder Zufallsgenerator oder GUI-Prompt mit 
User-Interaktion, ...)
und dann
1
for (int i=0 ; i <10000; ++i) {
2
  Serial.println(geheimeReihenfolgenFunktion(i));
3
}
#4535313
Lesenswert?

Simon S. schrieb:
> Oh man...
>
> Ich hab nicht gefragt wie ich die Serial.print Funktion nutze.

Bleib mal locker.

Es kann einem unglaubliche Geduld abverlangen einem Anfänger ein für 
dessen Wissensstand im Moment noch relativ komplexes und schwieriges 
Thema zu erklären.

Dein Eröffnungsposting zeigt daß Du ein blutiger Anfänger bist und in 
dem Moment haben schon 90% der Leute weitergklickt weil sie heute oder 
diese Woche oder generell einfach nicht die Nerven und die Geduld 
aufbringen können oder wollen einem blutigen Anfänger alles von Adam und 
Eva aufwärts zu erklären.

Übrig bleiben vielleicht 10% die dazu dennoch bereit sind und die die 
anstrengende Arbeit mit einem Anfänger nicht abschreckt.

Jedoch ist Dein Tonfall schon im zweiten Posting geeignet auch diese 
letzten unerschrockenen 10% noch zu vertreiben. Immerhin wird niemand 
dafür bezahlt Dir zu helfen und sich dann zur Belohnung noch blöd 
anschnauzen zu lassen.

Denk mal drüber nach.
Gast #4535314
Lesenswert?

Peter D. schrieb:
> Was für ein Gerät willst Du denn knacken?
> Läßt das Gerät Brute Force überhaupt zu.
> Viele Geräte machen nach 3 Fehleingaben erstmal ne lange Pause oder
> verlangen den Master-Key.
>
> Wenn Du nur 4 Ziffern senden willst, wo ist dabei Dein Problem?

Ich will die Zahl 0000-9999 senden.

Gerät existiert nicht.

Geht erstmal ums reine "knacken" am Serial Monitor.
Gast #4535320
Lesenswert?

Anfänger schrieb:
> mach halt eine bitverknüpfung -> bitweise oder
> i=0;
> if(i<1)
> {
>  wert = 0000 | i;
>  i = i+1;
> }
> serial.print(wert);

Dein Nickname beschreibt sehr gut deinen Kenntnisstand: das Programm 
klappt so auf keinen Fall. Auch für dich gilt: Format-Funktionen und 
(for-) Schleifen ansehen!
Gast #4535325
Lesenswert?

Bernd K. schrieb:
> Simon S. schrieb:
>> Oh man...
>>
>> Ich hab nicht gefragt wie ich die Serial.print Funktion nutze.
>
> Bleib mal locker.
>
> Es kann einem unglaubliche Geduld abverlangen einem Anfänger ein für
> dessen Wissensstand im Moment noch relativ komplexes und schwieriges
> Thema zu erklären.
>
> Übrig bleiben vielleicht 10% die dazu dennoch bereit sind und die die
> anstrengende Arbeit mit einem Anfänger nicht abschreckt.
>
> Jedoch ist Dein Tonfall schon im zweiten Posting geeignet auch diese
> letzten unerschrockenen 10% noch zu vertreiben. Immerhin wird niemand
> dafür bezahlt Dir zu helfen und sich dann zur Belohnung noch blöd
> anschnauzen zu lassen.
>
> Denk mal drüber nach.

Ich respektiere jeden und freue mich sehr über die 10%.

Jedoch muss selbst als blutiger Anfänger mir nicht anhören müssen das 
ich erstmal lernen soll Leds anzusteuern.
Gast #4535333
Lesenswert?

Also ich erkläre nochmal:

Der Arduino soll eine Zahl von 0000-9999 senden.

Also 1000 durchläufe:

Wenn also die zahl bspw. 0123 ist, soll er aus 0123 0 1 2 3 machen.

Dann für 0 9482 einsetzen
Für 1 0573
Für 2 4939
und für 3 4938
Gast #4535336
Lesenswert?

Herbert schrieb:
> Simon S. schrieb:
>> Die Zahl 11 soll im Format 0011 geschrieben werden.
>>
>> Und jeder ziffer soll für sich stehen
>
> Lies die scheiss Dokumentation von serial.println !
> Das steht drin wie man von einer Dezimalzahl 4 Stellen erzwingt. Ist
> ganz einfach aber du musst es eben lesen.

Das ist ja nur ein kleiner Teil meines Vorhabens, nach dem ich nicht 
einmal gefragt habe.

Aber ernsthaft:
Danke, dann ist das schonmal geklärt.
Gast #4535339
Lesenswert?

Simon S. schrieb:
> Das ist ja nur ein kleiner Teil meines Vorhabens, nach dem ich nicht
> einmal gefragt habe.

OMG dann sag doch endlich mal klar ausgedrückt was du eigentlich willst?
Ist ja schlimmer als im Kindergarten hier.
Klare Problemstellung --> klare Lösung.
Aber so wie du hier rumlaberst kann dir niemand helfen.
Gast #4535342
Lesenswert?

Peter D. schrieb:
> Simon S. schrieb:
>> Also:
>> 0011=
>> Ziffer1=0
>> Ziffer2=0
>> Ziffer3=1
>> Ziffer4=1
>
> Wozu auch immer:
>
1
>   int16_t zahl;
2
>   uint8_t ziffer[4];
3
>   for( zahl = 0; zahl < 10000; zahl++ ){
4
>     unit16_t tmp = zahl;
5
>     for( int8_t i = 3; i >= 0, i-- ){
6
>       ziffer[i] = tmp % 10;
7
>       tmp /= 10;
8
>       // mache was mit den 4 Ziffern
9
>     }
10
>   }
11
>

Wozu auch immer...

Das Programm soll später den Jugendschutz am Tv rausmache, indem es den 
Code knackt.

Dazu muss es natürlich bei 0473 auch den entsprechenden IR code für die 
einzelnen Ziffern senden.
(welche ich vorher definiere)
#4535348
Lesenswert?

Wie macht man aus einen Integer (Ganzzahl) einen Character, resp String. 
Ohne Library Funktion.

char function DigitZuChar(u:int) {
 if u==0 { return 0x30; } // = "0"
 if u==1 { return 0x31; } // = "1"
 if u==2 { return 0x32; } // = "2"
 if u==3 { return 0x33; } // = "3"
 if u==4 { return 0x34; } // = "4"
 if u==5 { return 0x35; } // = "5"
 if u==6 { return 0x36; } // = "6"
 if u==7 { return 0x37; } // = "7"
 if u==8 { return 0x38; } // = "8"
 if u==9 { return 0x39; } // = "9"
}

Man sieht es gibt potential zum Vereinfachen.
Gast #4535352
Lesenswert?

Simon S. schrieb:
> Wenn also die zahl bspw. 0123 ist, soll er aus 0123 0 1 2 3 machen.
>
> Dann für 0 9482 einsetzen
> Für 1 0573
> Für 2 4939
> und für 3 4938

Ich bin nicht der einzige, der absolute keinen Zusammenhang hier erkennt 
oder?

Drück dich mal schlau aus mein Lieber.

Du willst 0000-9999 an einem Serialport ausgeben so das habe ich schon 
mal verstanden.

Du willst aus 1234 4 einzelne Variabeln mit je einer Ziffer haben auch 
das kommt noch einigermassen an.

Aber was danach folgt verstehst nur du, das ist absolute 
zusammenhangslos.
Gast #4535362
Lesenswert?

chris schrieb:
> Simon S. schrieb:
>> Dazu muss es natürlich bei 0473 auch den entsprechenden IR code für die
>> einzelnen Ziffern senden.
>> (welche ich vorher definiere)
>
> Willst du jetzt Brute Forcen oder weißt du den Code schon?
> Drück dich halt mal klar aus...

? Hab ich doch.

Es reicht ja nicht dem IR Sender zu sage:
Send mal ne 1!

Die 1 steht im IR Signal ja für (bsp) 5457.

Das heißt nur wenn ich 5457 sende versteht der Tv das als würde ich die 
Taste 1 drücken/ eine Ziffer des Codes 1 ist
Gast #4535364
Lesenswert?

mr.confused schrieb:
> Simon S. schrieb:
>> Wenn also die zahl bspw. 0123 ist, soll er aus 0123 0 1 2 3 machen.
>>
>> Dann für 0 9482 einsetzen
>> Für 1 0573
>> Für 2 4939
>> und für 3 4938
>
> Ich bin nicht der einzige, der absolute keinen Zusammenhang hier erkennt
> oder?
>
> Drück dich mal schlau aus mein Lieber.
>
> Du willst 0000-9999 an einem Serialport ausgeben so das habe ich schon
> mal verstanden.
>
> Du willst aus 1234 4 einzelne Variabeln mit je einer Ziffer haben auch
> das kommt noch einigermassen an.
>
> Aber was danach folgt verstehst nur du, das ist absolute
> zusammenhangslos.

Ok, ich versuche es nochmal.

Er soll ja ne Zahl von 0000-9999 ausgeben.
Soweit so gut.

Jedoch soll er dann hingehen und jede Ziffer ersetzen durch eine 
4-Stellige zahl.

Ich send gleich mal nen Beispiel Sketch den ich aus den Ergebnissen von 
(oben) zusammenbastel.
Gast #4535366
Lesenswert?

Ich greif das Beispiel von Peter auf:
1
int16_t zahl;
2
uint8_t ziffer[4];
3
for( zahl = 0; zahl < 10000; zahl++ ){
4
   unit16_t tmp = zahl;
5
   for( int8_t i = 3; i >= 0, i-- ){
6
      ziffer[i] = tmp % 10;
7
      tmp /= 10;
8
     
9
      switch(tmp):
10
         case 1:
11
            SendIRCode1();
12
            break;
13
         case 2:
14
            SendIRCode2();
15
            break;
16
         //usw.
17
     }
18
   }

Oder eben SendIRCode(tmp) und in der Funktion den entsprechenden Code 
aufdröseln ...
#4535369
Lesenswert?

Machen wir ein Gedankenexperiment:
Dein Programm läuft 100% so wie du es dir erträumst, was genau kommt aus 
dem Serialport raus ?

0001(hier evtl. \r\n ?)
0002
0003
.
.
.
9999
0000
0001
usw ?

Oder was anderes ?
Soll der "User" irgendwie mit dem Gerät interagieren ?

Den Ansatz mit 0 => 9482 versteh ich nicht.
Klingt an sich aber nach nem Job für ne Lookup-Tabelle.
Gast #4535371
Lesenswert?

Aber deine Fernbedienung hat 10 Zifferntasten, die man nacheinander 
drückt, keine 10000, bei dennen man nur einmal drückt, oder?


Also:
1
  for (int a=0; a<10; ++a) 
2
     for (int b=0; b<10; ++b) 
3
        for (int c=0; c<10; ++c) 
4
           for (int d=0; d<10; ++d) {
5
               SendeIRCodeFuerTaste(a);
6
               SendeIRCodeFuerTaste(b);
7
               SendeIRCodeFuerTaste(c);
8
               SendeIRCodeFuerTaste(d);
9
               // Delay/"Enter"-Taste senden etc.
10
            }
Gast #4535383
Lesenswert?

Was der Jung vor hat bekommt er nicht in Worte gefasst weil er einfach 
keinen Plan hat.

Bruteforce auf IRDA

also Versuch ich die Zahl "2541" zu  knacken
Da der TV aber nicht "2541" gespeichert hat sondern "2" "5" "4" "1" muss 
er entsprechend diese Zahlen schicken damit die Fernbeidenung oder was 
auch immer aus der "2" den entsprechenden IRDA Code macht.

Soweit, so easy.
Kommt davon wenn man nur Whatsapp schreibt und kein Deutsch mehr 
beherrscht.

Lieber TE - Deine Lösung sind verschachtelte Schleifen die jeweils von 0 
bis 9 zählen und die jeweilige Zahl an irgendwas rausgeben was dir den 
IRDA Code generiert raushauen.
Den IRDA Inhalt kannst du per Lib einbinden, per Tabelle oder wie immer 
es dir beliebt.
Mehr hast du nicht zu tun, mehr ist das Programm nicht

Pseudocode

For 0 bis 9 /* Schleife für die zahl auf Position 1
    For 0 bis 9 /* Schleife für die zahl auf Position 2
     ..
     Bis Position 4
     next
next

Wenn ich Arduino halbwegs richtig im Kopf habe sind das  keinen 20 
Zeilen.
Gast #4535386
Lesenswert?

/*
BurteForcePreview
*/

int 1= 7685;
int 2= 7245;
int 3= 9275;
int 4= 7628;
int 5= 5482;
int 6= 6347;
int 7= 2168;
int 8= 0134;
int 9= 0458;

setup()
{
  Serial.begin(9600);

  Serial.print("GO);
}


void loop()
{
  for( zahl = 0; zahl < 10000; zahl++ )

  /*
   * Wenn dann die Zahl 5735 ist, soll er
   * (5 = 5482 / 7 = 2168 / 3 = 9275 / 5 = 5482)
   * Serial.print(Zahl5);
   * Serial.print(Zahl7);
   * Serial.print(Zahl3);
   * Serial.print(Zahl5);
   */
}

Und im Serial-Monitor steht dann:
"5482 2168 9257 5485" (ohne die Lücken)
Gast #4535391
Lesenswert?

Reinhard M. schrieb:
> Simon S. schrieb:
>> Das Programm soll später den Jugendschutz am Tv rausmache, indem es den
>> Code knackt.
>
> Wenn ich das hier so lese, keine gute Idee.

Ob ich das jz am Fernseher bin oder am PC sitze und euch nerve...

Und egal ob ihr/du es glaubst/glaubt oder nicht.

Mich interessiert nicht mal der Zugriff auf dem TV.

Das bekomm ich auch anders hin...

Mir geht es nur um die Möglichkeit/das Wissen mit dem Arduino einen 
Brute Force Angriff zu machen.
Gast #4535398
Lesenswert?

Simon S. schrieb:
> Der Tipp mit der for-Schleife war gut, nur bei meinem Programm nicht
> praktikabel.
Simon S. schrieb:
> for( zahl = 0; zahl < 10000; zahl++ )
Das schließt sich doch gegenseitig aus.

Simon S. schrieb:
> Nur mal so:
> Wer andere so korrigiert und meint ein auf oberschlau zu machen und dann
> sowas fragt...
Mir scheint, du hast verstanden, wie soziale Interaktion funtkioniert.
(Leichte Ironie)

Bernd K. schrieb:
> Jedoch ist Dein Tonfall schon im zweiten Posting geeignet auch diese
> letzten unerschrockenen 10% noch zu vertreiben.
Richtig. In dem Sinne: Tschüss :D
Gast #4535405
Lesenswert?

Peter D. schrieb:
> Du willst also einen Code je Ziffer senden.
> Das macht man mit einem Array:  uint16_t IR_code[10] = { 1234, 45, 789,
> 19050 }; // usw.
>
> void send_ir_ziffer( uint8_t val )
> {
>   SendIRCode( IR_code[val] );
> }

Genau das ist, das was Du brauchst und machen willst.

Hans
Gast #4535415
Lesenswert?

Dussel schrieb:
> Simon S. schrieb:
>> Der Tipp mit der for-Schleife war gut, nur bei meinem Programm nicht
>> praktikabel.
> Simon S. schrieb:
>> for( zahl = 0; zahl < 10000; zahl++ )
> Das schließt sich doch gegenseitig aus.

Ich bin ja immernoch überzeugt das es so nicht geht, war ja auch nur ein 
Beispiel...

> Simon S. schrieb:
>> Nur mal so:
>> Wer andere so korrigiert und meint ein auf oberschlau zu machen und dann
>> sowas fragt...
> Mir scheint, du hast verstanden, wie soziale Interaktion funtkioniert.
> (Leichte Ironie)

Me 2


> Bernd K. schrieb:
>> Jedoch ist Dein Tonfall schon im zweiten Posting geeignet auch diese
>> letzten unerschrockenen 10% noch zu vertreiben.
> Richtig. In dem Sinne: Tschüss :D

Gj
Gast #4535416
Lesenswert?

Oliver S. schrieb:
> Simon S. schrieb:
>> /*
>>    * Wenn dann die Zahl 5735 ist, soll er
>>    * (5 = 5482 / 7 = 2168 / 3 = 9275 / 5 = 5482)
>
> Auch wenn dich das im Moment noch völlig überfordert, stelle ich schon
> mal den Begriff Array in den Raum.
>
> Nur für den Fall, daß du in deinem C-Buch irgend wann einmal über Seite
> drei hinauskommst.
>
> Oliver

Diese Leute die nur # Kommentare bringen aber nichts konstruktives...

Den Begriff Array kenn ich auch.
Nur wie wende ich es an... (in diesem Fall)
Gast #4535422
Lesenswert?

Hans M. schrieb:
> Peter D. schrieb:
>> Du willst also einen Code je Ziffer senden.
>> Das macht man mit einem Array:  uint16_t IR_code[10] = { 1234, 45, 789,
>> 19050 }; // usw.
>>
>> void send_ir_ziffer( uint8_t val )
>> {
>>   SendIRCode( IR_code[val] );
>> }
>
> Genau das ist, das was Du brauchst und machen willst.
>
> Hans

Danke, nur wie sag ich ihm nun er soll dann auch bei der Zahl 0123 
entsprechend:

SendIRCode( IR_code[0] );
SendIRCode( IR_code[1] );
SendIRCode( IR_code[2] );
SendIRCode( IR_code[3] );

schreiben/machen ?
Gast #4535426
Lesenswert?

https://www.arduino.cc/en/Reference/Array

setup()
{
  Serial.begin(9600);
  Serial.print("GO);
}

void loop()
{
int irda[] = {1234, 5678, 4321, 8765, 1111, 2222, 3333, 7777, 8888, 
9999};
int i;
int j;
int k;
int l;

for (i = 0; i < 10; i = i + 1) {
for (j = 0; j < 10; j = j + 1) {
for (k = 0; k < 10; k = k + 1) {
for (l = 0; l < 10; l = l + 1) {
Serial.println(irda[i]);
Serial.println(irda[j]);
Serial.println(irda[k]);
Serial.println(irda[l]);
}
}
}
}

}
#4535428
Lesenswert?

Simon S. schrieb:
> Den Begriff Array kenn ich auch.
> Nur wie wende ich es an... (in diesem Fall)

Als ersten Schritt mal so, in dem du deine Liste von Integer-Werten in 
ein Array packst, und das dann mit einer for-Schleife Index für Index 
abarbeitest.

Und nein, DAS macht dir jetzt keiner vor. Das ist grundlegendes 
Programmierhandwerk, das schaffst du selber.

Oliver
Gast #4535463
Lesenswert?

Max D. schrieb im Beitrag #4535455:
> Das hier liefert dir Werte von 0 bis 4, wie du es auf 0-10 aufbohrst sei
> dir überlassen.
> Wenn du 0-10 hast kommst du mal wieder und wir machen den modulo
> durch...

Das nützt dem TE doch nichts, das gibt die Strings ja immer in der 
gleichen Reihenfolge aus.
#4535534
Lesenswert?

Wie Du hast die Lösung immer noch nicht?


...
void loop()
{
  for (Z1 = 0; Z1 < 10; Z1 = Z1 ++)
  {
      for (Z2 = 0; Z2 < 10; Z2 = Z2 ++)
      {
          for (Z3 = 0; Z3 < 10; Z3 = Z3 ++)
          {
              for (Z4 = 0; Z4 < 10; Z4 = Z4 ++)
              {
                  Serial.println(irda[Z1]);
                  Serial.println(irda[Z2]);
                  Serial.println(irda[Z3]);
                  Serial.println(irda[Z4]);
              }
          }
     }
  }
}
....
Gast #4535555
Lesenswert?

Y. W. schrieb:
> Wie Du hast die Lösung immer noch nicht?
> void loop()
> {
>   for (Z1 = 0; Z1 < 10; Z1 = Z1 ++)
>   {
>       for (Z2 = 0; Z2 < 10; Z2 = Z2 ++)
>       {
>           for (Z3 = 0; Z3 < 10; Z3 = Z3 ++)
>           {
>               for (Z4 = 0; Z4 < 10; Z4 = Z4 ++)
>               {
>                   Serial.println(irda[Z1]);
>                   Serial.println(irda[Z2]);
>                   Serial.println(irda[Z3]);
>                   Serial.println(irda[Z4]);
>               }
> [...]


Nun ja, der geht nicht ;D
#4535574
Lesenswert?

Verstehe ich nicht...
1
/*
2
  BurteForcePreview
3
 */
4
int Z1;
5
int Z2;
6
int Z3;
7
int Z4;
8

9
int NZ1;
10
int NZ2;
11
int NZ3;
12
int NZ4;
13

14
int irda[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
15

16

17
void setup()
18
{
19
  Serial.begin(9600);
20
  Serial.print("GO");
21
}
22

23

24
void loop()
25
{
26
  for (Z1 = 0; Z1 < 10; Z1 = Z1 ++)
27
  {
28
    for (Z2 = 0; Z2 < 10; Z2 = Z2 ++)
29
    {
30
      for (Z3 = 0; Z3 < 10; Z3 = Z3 ++)
31
      {
32
        for (Z4 = 0; Z4 < 10; Z4 = Z4 ++)
33
        {
34
          Serial.print(irda[Z1]);
35
          Serial.print(irda[Z2]);
36
          Serial.print(irda[Z3]);
37
          Serial.print(irda[Z4]);
38
          Serial.println();
39
        }
40
      }
41
    }
42
  }
43
}

ergibt dieses:

GO0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
...

Aber vielleicht habe ich Dich wirklich nicht verstanden. Ach ja die 
Werte des Arrays solltest Du natürlich wieder anpassen aber sonst hätte 
ich die Ausgabe nicht verstanden.
Gast #4535577
Lesenswert?

Wenn ich da an früher denke. Da hat man sich noch hingesetzt, und auf 
einem Blatt Papier mitgeschrieben. Oder zumindest nach jeder Zeile noch 
mal Variablen ausgegeben.
Heute nimmt man jeden Pups ins Internet, und andere sollen das 
verbessern.
Wo ist da die eigene Initiative, Kreativität und eigenes Denken.

Und dann sieht man hier fertige Lösungen, und der Junge nimmt die 
Ratschläge nicht einmal an. Ist das jetzt Arroganz gepaart mit 
Unfähigkeit?

Ich prgrammiere auch gerne mit Arduinos. Nur wenn man das sieht, dann 
versteht man das Verhalten von anderen Leute hier, wenn die nur Arduino 
lesen....
Gast #4535580
Lesenswert?

Y. W. schrieb:
> Verstehe ich nicht...
>
> ergibt dieses:
>
> GO0000
> 0001
> 0002
> 0003
> 0004
> 0005
> 0006
> 0007
> 0008
> ...
>
> Aber vielleicht habe ich Dich wirklich nicht verstanden. Ach ja die
> Werte des Arrays solltest Du natürlich wieder anpassen aber sonst hätte
> ich die Ausgabe nicht verstanden.

Ernsthaft, bei mir kommt:
0000
0000
0000
0000
0000
Gast #4535581
Lesenswert?

PittyJ schrieb:
> Wenn ich da an früher denke. Da hat man sich noch hingesetzt, und auf
> einem Blatt Papier mitgeschrieben. Oder zumindest nach jeder Zeile noch
> mal Variablen ausgegeben.
> Heute nimmt man jeden Pups ins Internet, und andere sollen das
> verbessern.
> Wo ist da die eigene Initiative, Kreativität und eigenes Denken.
>
> Und dann sieht man hier fertige Lösungen, und der Junge nimmt die
> Ratschläge nicht einmal an. Ist das jetzt Arroganz gepaart mit
> Unfähigkeit?
>
> Ich prgrammiere auch gerne mit Arduinos. Nur wenn man das sieht, dann
> versteht man das Verhalten von anderen Leute hier, wenn die nur Arduino
> lesen....

Ich machs ja A selber und B geht die "fertig" Lösung bei mir nicht.
Gast #4535588
Lesenswert?

Es geht auch einfach:
1
int Zahl;
2
char Nummer[5];
3

4

5
void setup()
6
{
7
  Serial.begin(9600);
8
  Serial.println("GO");
9
}
10

11

12
void loop()
13
{
14
  for (Zahl = 0; Zahl < 10000; Zahl = Zahl + 1)
15
  {
16
    sprintf (Nummer, "%04d", Zahl);
17
    Serial.println(Nummer);
18
    delay(1000);
19
  }
20
}

Eigentlich wollte ich Dir nicht mehr helfen - aber das kann man sich ja 
nicht anschauen :-)
Gast #4535603
Lesenswert?

Simon S. schrieb:
> Jetzt geht es.
>
> Und ich soll C/C++ lernen...

Echt so. Die anderen hier können noch viel von dir und deinen Künsten 
der Fehlerbehebung lernen.

Würd mich mal interessieren ob das gesamte Vorhaben dann so klappt ;)
(Wie überträgst du denn die Ausgabe von der Seriellen Schnittstelle auf 
deine Fernbedienung usw...)

Bei deinen Kenntnissen sollte das aber natürlich kein Problem 
darstellen.

MFG amüsierter Leser :)
#4535611
Lesenswert?

Simon S. schrieb:
> Y. W. schrieb:
>> Verstehe ich nicht...
>>
>> ergibt dieses:
>>
>> GO0000
>> 0001
>> 0002
>> 0003
...
> Ernsthaft, bei mir kommt:
> 0000
> 0000

Ihr habt beide recht. "Z1 = Z1++" ist undefined behavour. Es ist nicht 
definiert, ob das Resultat von Z1++ vor oder nachdem es inkrementiert 
wird in Z1 zurückgeschrieben wird. Das Ergenis eines post-increment ist 
der Wert vor dem Inkrementieren.

Simon S. schrieb:
> Fehler gefunden:
>
> FALSCH:
> for (Z1 = 0; Z1 < 10; Z1 = Z1 ++)
>
> RIGHTIG:
> for (Z1 = 0; Z1 < 10; Z1 = Z1 + 1)

Ich bevorzuge "for (Z1 = 0; Z1 < 10; Z1++)", aber das ist 
Geschmackssache.
Gast #4535613
Lesenswert?

Jemand schrieb:
> Simon S. schrieb:
>> Jetzt geht es.
>>
>> Und ich soll C/C++ lernen...
>
> Echt so. Die anderen hier können noch viel von dir und deinen Künsten
> der Fehlerbehebung lernen.
>
> Würd mich mal interessieren ob das gesamte Vorhaben dann so klappt ;)
> (Wie überträgst du denn die Ausgabe von der Seriellen Schnittstelle auf
> deine Fernbedienung usw...)
>
> Bei deinen Kenntnissen sollte das aber natürlich kein Problem
> darstellen.
>
> MFG amüsierter Leser :)

Kann nur mit Theorie dienen :D

Mein IR Sender hat sich mangels Wiederstand verabschiedet...

Antwort kommt in den nächsten Tagen.
#4535753
Lesenswert?

Simon S. schrieb:
> Immerhin habt ihr wegen mir euern Humor nicht verloren :D
>
> Nochmal danke an alle.
>
> Werde in Zukunft anders "fragen".

Prima. ;-)

Ok, you tiny little grashopper, so you want to be a hacker. Kung Fu 
time:
1
#define BUFLEN 5
2
#define OUTLEN 21
3

4
#include <stdio.h>
5

6
const char* code[] = {
7
    "0100", "0101", "0102", "0103", "0104",
8
    "0200", "0201", "0202", "0203", "0204"};
9

10

11
int main(void) {
12
    char out[OUTLEN];
13
    char buf[BUFLEN];
14

15
    for(int i = 0; i <= 9999; ++i) {
16
        snprintf(buf, BUFLEN, "%04d", i);
17
        snprintf(out, OUTLEN, "%s %s %s %s",
18
                 code[buf[0]-'0'], code[buf[1]-'0'],
19
                 code[buf[2]-'0'], code[buf[3]-'0']);
20
        printf("%s: %s\n", buf, out);
21
    }
22
    
23
    return 0;
24
}

Der Code ist weder schön, noch schnell. Doch wenn Du ihn verstanden 
hast, bist Du kein blutiger Anfänger mehr. ;-)

Beim Verständnis hilft natürlich das gute alte Standardwerk [1]: have 
fun!

http://www.amazon.de/Programming-Language-Prentice-Hall-Software/dp/0131103628/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren