Ein Hinweis: int ist beim Arduino nur 16Bit und long 32Bit.
Code: Alles auswählen
long getTime() {
int sw = 50;
return sw * 1000;
}
void setup() {
Serial.begin(9600);
Serial.println("start");
}
void loop() {
long t = getTime();
Serial.println(t);
delay(1000);
}
Nach langer Suche habe ich den Fehler gefunden.
Es müsste so heissen, man beachte das L hinter 1000.
Code: Alles auswählen
return sw * 1000L;
Da verwundert es mich nicht, das die Entwicklung mit C++ sehr viel Zeit frisst, wen man sich um solchen Müll kümmern muss.
Wie liebe ich sehr Pascal.
Noch krasser:
Code: Alles auswählen
long getTime() {
int a = 50;
int b = 1000;
return a * b;
}
Pascal gibt 50'00 zurück, so wie erwartet.
Code: Alles auswählen
function getTime: integer;
var
a, b: Int16;
begin
a := 50;
b := 1000;
Result := a * b;
end;