Hilfe beim Sketch

Ich bin kein Arduinoprofi und soll folgenden Sketch bearbeiten und komme einfach nicht weiter. Kann mir bitte jemand helfen. Danke
Zum Auslesen der Werte (Fotometer) wird im Sketch ein serieller Monitor verwendet. Im Dunklen liefert dieser den Messwert 31, im Hellen hingegen 607. Passe dem im Folgenden abgebildeten Sketch so an, dass am seriellen Monitor eine Transmission zwischen 0% und 100% angezeigt wird. (Sinnvolle Anzeige der Transmission in%)

Fotometer

int ldr = A2;
int led = 5;
long helligkeit;

void setup () {
Serial.begin (9600) ;
pinMode (ldr, INPUT) ;
pinMode (led, OUTPUT);
digitalWrite (led, HIGH);
}

void loop() {
helligkeit = analogRead (ldr);

Serial.println(helligkeit);

delay (100)

}

bitte lies hier nach wie man code in code tags postet und editier deinen ersten Post.

Einen fertigen Sketch wird dir keiner Schreiben da HausĂĽbung.

Welche Frage hast du genau?

Vorsicht - als Neuanmelder hast du nur eine limitierte Anzahl an Post - also stelle eine sehr genaue Frage.

Willkommen im Forum,

fehlt da nicht ein wie?
Wenn ja dann schau die die Funktion map an

Hallo,

Textaufgabe mit Prozentrechnung.
Was ist jetzt dein konkretes Problem?

Ich hätte jetzt ganz oben unter long Helligkeit noch long map eingetragen

  • beim void loop ()
    helligkeit= analog read (ldr)
    helligkeit(A2, 31,607,0,100)

serial.println(Helligkeit und %)

Na ja so wird das nix versuch das

const byte ldr = A2;
const byte led = 5;
int helligkeit;
byte proz;
void setup () {
  Serial.begin (9600) ;
  pinMode (ldr, INPUT) ;
  pinMode (led, OUTPUT);
  digitalWrite (led, HIGH);
}

void loop() {
  helligkeit = analogRead (ldr);
  helligkeit = constrain(helligkeit, 31, 607);
  proz = map(helligkeit, 31, 607, 0, 100);
  Serial.println(proz);

  delay (100);

}

Habe mall mit Poti rumgespielt @paulpaulson hatte recht mit 'constrain()' ist besser

1 Like

Man muss auch nicht auf Beiträge der User reagieren. Was einem nicht gefällt, wird einfach ignoriert.

Moin fony,

vllt noch einen Aufruf der constrain() Funktion spendieren, damit der gesamte Wertebereich in der map() Funktion bearbeitet werden kann.

Wen funktioniert schreib doch!

Ich versuche es gerade. Leider darf ich oben nichts ändern.
das heiĂźt ich versuche es jetzt so:

int ldr=A2;
int led = 5;
long helligkeit;
long map (31,607,0,100);
long proz;

void setup () {
Serial.begin (9600) ;
pinMode (ldr, INPUT) ;
pinMode (led, OUTPUT);
digitalWrite (led, HIGH);
}

void loop() {
helligkeit = analogRead (ldr);
proz = map(helligkeit, 31, 607, 0, 100);
Serial.println(proz);

delay (100);

}

bis jetzt geht noch nichts

Hallo

Dann kannst du die Arbeit einstellen.

Was bedeutet das?

Warum nimmst du nicht das was habe reingetan es funktioniert doch

Was hast du mit dem long?
Deine werte sind kleiner als int erlaubt

Und stelle dein Kode in Kode Tags keiner hat Lust mit der Maus rumtanzen.
In der IDE Bearbeiten -> FĂĽr Forum kopieren, hier einfĂĽgen Fertig :wink:

Mensch, du bist heute auch mal wieder extrem empfindlich. :nerd_face:

Wer ich ? :wink:

long map(...) nimmt Dir der Compiler ab?

GruĂź Tommy

Der TO ist wahrscheinlich beleidigt, und mit den long, na ja, und das long map (31,607,0,100); geht gar nicht muss exit 1 kommen 100%

Hallo, ich war leider krank und konnte mich nicht mehr melden. Das Problem ist, dass ich für die Schule einen Sketch wissen muss, bei dem ich nicht alle Programmiermöglichkeiten verwenden darf, weil wir sie noch nie durchgenommen haben. Ich kenne kein const byte, constraint, deshalb muss ich im Rahmen dessen, was ich kenne versuchen einen Sketch mit Pontiometer, LDR und LED schreiben. Am seriellen Monitor muss eine Transmission zwischen 0% und 100% angezeigt werden. Ich habe alles gesteckt und die LED leuchtet, aber der serielle Monitor gibt mir Werte bis zu 1058 und ich weiß einfach nicht warum.
Hier mein Sketch, ich hoffe ich habe es dieses mal im richtigen Format gemacht und kriege nicht wieder Ärger!?

int ldr = A2;
int led = 5;
int helligkeit;
int proz;

void setup () {
Serial.begin (9600) ;
pinMode (ldr, INPUT) ;
pinMode (led, OUTPUT);
digitalWrite (led, HIGH);
}

void loop() {
helligkeit = analogRead (ldr);
proz = map(helligkeit, 31, 607, 0, 100);
Serial.println(proz);

delay (100);

}

Ich denke, 31 und 607 sind nicht die Minmal und die Maximal Werte.

Gebe dir doch auch als Vergleich die LDR Werte mit auf dem SerialMonitor Monitor aus.

Nein, das hat nicht funktioniert. Wie es relativ einfach geht, wurde dir schon beschrieben.