Frage zu Array

Hallo Leute,

ich habe eine Frage zu Array

Also ich habe eine float Variable x die Werte fuer diese Variable wird aus einem Sensor abgelesen

nun möchte ich die Variable über DAC zeichnen bzw. ausgeben lassen

AnalogWrite(PinNummer,Value)

ich dachte ich schreiben an der Stelle von Value einfach meine Variable x rein es geht aber nicht kann jemand mir sagen ob ich einen Array für die Variable x brauche um die dann auszugeben ?

Hi

Syntax

analogWrite(pin, value)
Parameters

pin: the pin to write to.

value: the duty cycle: between 0 (always off) and 255 (always on).

Also nur Werte zwischen 0 und 255 möglich

Schau dir mal das Beispiel dazu an: Klick

Am einfachsten geht es wenn du den Float auf Integer rundest. Dann kannst du map() nehmen um das auf 0-255 umzusetzen:

Die Formel für map() ist aber angegeben. Du kannst dir auch deine eigene Version schreiben die Floats aufnimmt und ein paar der Teil-Rechungen in Float macht:

byte map(float x, float in_min, float in_max, byte out_min, byte out_max)
{
  return ((x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min) + 0.5;
}

Aufruf dann z.B.:

float value = 25.0;
byte mapped = map(value, 0, 50.0, 0, 255);

Dann hat mapped die Hälfte des maximalen Ausgangswerts (aufgerundet). Also 255 / 2 + 0,5

EDIT:
Auf dem Due hast du einen 12-Bit DAC. Dann solltest du das so machen:

unsigned int map(float x, float in_min, float in_max, unsigned int out_min, unsigned int out_max)
{
  return ((x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min) + 0.5;
}

Und das obere Limit auf 4095 setzten. 2^12-1

Welchen Arduino willst Du verwenden?
Außer dem DUE hat keiner einen DAC.
Grüße Uwe

Dem Namen nach zu urteilen und da er viel im Due Forum schreibt, einen Due :slight_smile: