Photoresistance controle LED

bonjour j'ai un probleme avec mon code j'aimerais que la lumière soit moins forte quand il y a plus de lumières et plus forte lorsque il y a moins de lumieres et mon programme fait l'inverse.

int ledPin = 3;
int photoresistance = 0;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {

photoresistance = (analogRead(0)/2); // Divides input 0-1023 to resemble to 0-255

analogWrite(ledPin, photoresistance);
// The delay can be change to get the desired dimming effect
delay(20);

}

Bonjour,

Le sens de la variation dépend du branchement de ta photorésistance.
Si elle est connectée au gnd la valeur lue va diminuer avec l'intensité de la lumière, si elle est connectée au +5V la valeur va augmenter avec l'intensité.

Dans ton cas il suffit d'inverser le sens de la commande
analogWrite(ledPin, 255-photoresistance);

En fait la valeur lue ne va pas varier de 0 à 1023 car il y a une résistance en série avec la ldr (enfin, il faut l'espérer).
Pour affiner la chose affiche la valeur lue avec Serial.print() et convertit cette valeur pour la commande avec la fonction map().

merci pour ta réponse mais je ne comprends pas vraiment comment tu procède pourrait tu renvoyer le programme mais avec ta modification stp car je ne sais pas si je dois retirer quelque chose ou non

Edit:
Je procède avec un modules grove pour la photoresistance

Tu remplaces ta ligne
 analogWrite(ledPin, photoresistance);
par

 analogWrite(ledPin, 255-photoresistance);

Ca ne fonctionne pas sa reste toujours allumer juste des fois ça bouge un peu

Fait comme je t'ai dit

  • tu affiches la valeur lue avec Serial.print()
  • tu prends la valeur min et max
  • tu calcules la valeur de sortie avec la fonction map()

Donc j'ai en valeur min et max: 0 et 194
et pour la valeur de sortie j'ai 34
maintenant je fais quoi avec ses données ?

tu calcules fais

photoresistance = map(analogRead(0),0,194,255,0); // mets à l'échelle
analogWrite(ledPin, photoresistance);