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)
}
noiasca
December 27, 2022, 11:56am
2
bitte lies hier nach wie man code in code tags postet und editier deinen ersten Post.
Bitte lies die Hinweise zur Benutzung dieses Forums, um Tipps zum Verfassen von Forumsbeiträgen zu erhalten und dieses Forum optimal zu nutzen. Vielen Dank! Das Arduino Forum Team .
Dies ist eine Ăśbersetzung von How to get the best from this forum von Perry Bebbinton .
Hallo,
Willkommen im Arduino Forum.
Dieser Leitfaden erklärt, wie Sie dieses Forum am besten nutzen können. Bitte lesen und befolgen Sie die folgenden Anweisungen.
Wenn Sie neu hier sin…
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.
fony
December 27, 2022, 11:58am
3
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 %)
fony
December 27, 2022, 12:29pm
6
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.
fony
December 27, 2022, 12:45pm
9
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.
fony
December 27, 2022, 1:16pm
13
Warum nimmst du nicht das was habe reingetan es funktioniert doch
Was hast du mit dem long?
Deine werte sind kleiner als int erlaubt
fony
December 27, 2022, 1:17pm
14
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
Mensch, du bist heute auch mal wieder extrem empfindlich.
Tommy56
December 27, 2022, 5:07pm
17
long map(...) nimmt Dir der Compiler ab?
GruĂź Tommy
fony
December 27, 2022, 5:14pm
18
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);
}
Plumps
January 2, 2023, 2:19pm
20
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.