Forum: Mikrocontroller und Digitale Elektronik Arduino int in 2x byte wandlen


von marc2805 (Gast)


Lesenswert?

Hallo bräuchte mal wieder eure hilfe.

Ich möchte aus einer Integer zahl mit komma 2 byte declarationen machen.

das ganze sieht wie folgt aus


int weg[] = {35,23};

jetzt möchte ich im Loop den Weg abfragen und dieser soll jetzt wie 
folgt aufgeschlüsselt werden

weg           ( byte länge, byte breite)

35,23                  35          23

so in etwa.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

marc2805 schrieb:
> int weg[] = {35,23};

Das ist keine "Integer-Zahl", das ist ein int-Array mit zwei Element.

marc2805 schrieb:
> weg           ( byte länge, byte breite)
>
> 35,23                  35          23

int[] weg = {35,23};

char laenge;
char breite;

while(0) {
    laenge = weg[0];
    breite = weg[1];
}

von spess53 (Gast)


Lesenswert?

Hi

Kennt den keiner der Aruino-Jünger highByte(x) und lowByte(x)?

MfG spess

von marc2805 (Gast)


Lesenswert?

zumindest weiß ich jetzt nach was ich suchen muss danke

von Amateur (Gast)


Lesenswert?

>Kennt den keiner der Aruino-Jünger highByte(x) und lowByte(x)?

... geht bei:

int weg[] = {35,23};

aber in die Hose ...

von marc2805 (Gast)


Lesenswert?

Mir wäre daniels variante auch lieber.


allerdings hab ich mehrere wege. gibt es da auch einen allgemein befehl.

zb.

int weg[] = {35,23};
int weg1[] = {12,23};
int weg2[] = {27,6};

char laenge;
char breite;

while(0) {
    laenge = [0];
    breite = [1];
}




so das ich im loop nur den weg weg1 oder weg2 benenne und dann die 
zahlen im array nach laenge und breite ausgegeben werden

von spess53 (Gast)


Lesenswert?

Hi

>so das ich im loop nur den weg weg1 oder weg2 benenne und dann die
>zahlen im array nach laenge und breite ausgegeben werden

Stichwort: Mehrdimensionale Arrays.

http://forum.arduino.cc/index.php?topic=30445.0

Mfg Spess

von Daniel H. (Firma: keine) (commander)


Lesenswert?

marc2805 schrieb:
> so das ich im loop nur den weg weg1 oder weg2 benenne und dann die
> zahlen im array nach laenge und breite ausgegeben werden

Ich verstehe das ehrlich gesagt nicht ganz. Willst du zur Laufzeit 
entscheiden welches der Arrays ausgegeben werden soll? Das wäre wie 
folgt möglich (keine Garantie, dass der Code compilierbar ist):
1
int weg[] = {35,23};
2
int weg1[] = {12,23};
3
int weg2[] = {27,6};
4
5
char laenge;
6
char breite;
7
8
int *pWeg;
9
10
...
11
12
switch(selectedWeg) {
13
    case 0:
14
        pWeg = weg;
15
        break;
16
    case 1:
17
        pWeg = weg1;
18
        break;
19
    case 2:
20
        pWeg = weg2;
21
        break;
22
    default:
23
        pWeg = weg;
24
        break;
25
26
27
while(0) {
28
    laenge = *pWeg;
29
    breite = *(pWeg + sizeof(int));
30
}

von W.S. (Gast)


Lesenswert?

marc2805 schrieb:
> Hallo bräuchte mal wieder eure hilfe.
>
> Ich möchte aus einer Integer zahl mit komma 2 byte declarationen machen.

Wirrkopf.
Versuche doch BITTE !!!! zu allererst mal deine wirren Gedanken so in 
Form zu bringen, daß man verstehen kann, was dir eigentlich im Kopf 
herumgeht.

Also:
Eine Integerzahl hat KEIN Komma. Entweder ist sie 35 oder 23, aber 
niemals 35,23.

Wenn du 2 Bytes zusammen haben willst, dann deklariere dir einen Struct 
so etwa wie dieser:
struct TPoint
{ byte x;
  byte y;
};

und ne Variable dazu
struct TPoint MyPoint;

und benutze diese Variable dann nach Gutdünken, z.B.
MyPoint.x = 24;
MyPoint.y = 38;

Ich hab's bislang nicht wahrhaben wollen, was für verheerende Folgen 
dieses Arduino-Zeugs auf lange Sicht hat. Daa Blinky aus den 
Demo-Beispielen kriegt zwar jeder Akolyth binnen 5 Minuten zum Blinken, 
aber direkt dahinter kommt die geistige Wüste, die sich selbst darin 
äußert, daß die Arduino-Bastler es nicht einmal schaffen, ihre Gedanken 
in eine verstehbare Form zu bringen. Was soll bloß DARAUS werden?

Ich halt mich derweil lieber an eine 2010er Kanzler Spätlese, da hat man 
mehr davon.

W.S.

von Amateur (Gast)


Lesenswert?

Schmeiß doch mal eine Pupille auf die grundlegenden Datentypen in C.

mit:

>int weg[] = {35,23};

deklarierst Du zwei Integerzahlen und initialisierst sie mit den Werten 
35 [0] und 23 [1].


Kannst Du aber später mittels

>char laenge;

diese einem char-Wert zuweisen, stellt sich mir die Frage:

Warum nicht gleich

char weg[] = {35,23};

Den größeren Wertebereich der Ausgangszahlen kannst Du ja doch nicht 
ausnutzen, wenn Du sie später in einen char stopfst bzw. stopfen kannst.

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.