Arduino - long Variable nimmt nur Höchstwert einer int an!

#4605507
Lesenswert?

Hallo,
ich habe ein total simples Programm das nicht so macht wie ich mir das 
vorstelle:

void setup() {
    Serial.begin(115200);
    }

void loop () {
    int Poti = 0;
    long verzoegerung;
    int Potiwert;
    Potiwert = analogRead(Poti);
    verzoegerung = Potiwert*1000;
    Serial.print("Poti: "); Serial.println(Potiwert);
    Serial.print("Verzoegerung: "); Serial.println(verzoegerung);
    delay (verzoegerung);
    }

Ich benutze: Arduino Mega 2560 V3 und Arduino IDE 1.0.5-r2


Das Problem ist dass die Variable "verzoegerung" die ich als long-Typ 
deklariert habe keinen Wert über 32768 annehmen möchte!

Also wenn ich das Poti einstelle dass "Potiwert" = 32 ist dann habe ich 
als "verzoegerung" = 32000 auf dem Serial-Monitor stehen und delay macht 
dann auch 32 Sekunden.
Wenn ich aber "Potiwert" = 33 einstelle dann ist "verzoegerung" = -32536
und bei "Potiwert" = 34 ist "verzoegerung" = -31536 ! Es wirkt so als 
wäre
"verzoegerung" immer noch eine int-Variable.

Ich hatte diesen Programmteil eigentlich in einer selber geschriebenen 
Library verwendet und dachte es liegt an einer fehlerhaften Deklaration 
aber als ich den Programmteil nochmal separat als neuer Sketch probiert 
habe fiel ich aus allen Wolken - das Problem ist immer noch vorhanden!

Das ist bestimmt nur ein Leichtsinnsfehler von mir aber ich mache jetzt 
schon einen kompletten Tag daran rum und komme einfach nicht auf die 
Lösung!
Gast #4605526
Lesenswert?

> int Potiwert;
> verzoegerung = Potiwert*1000;

Potiwert ist ein Integer.
1000 ist auch ein Integer (gilt für alle Zahlen, die nicht zu groß 
sind).

Integer * Integer ergibt einen Integer, weil ein Algorithmus verwendet 
wird, der nur Integer kann.

Du musst einen der beiden Operanden als Long Integer kennzeichnen. Am 
Einfachsten so:

verzoegerung = Potiwert * 1000L;

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