Problème Arduino Nano (Led + Servo)

Bonjour,
Je souhaite utiliser mon arduino Nano pour faire tourner un servo et une led mais cela ne fonctionne pas.

Le code pour allumer juste la led fonctionne et celui uniquement pour faire tourner le servo également.

code led :

const int led1 = 9; // Connectée à la broche 9 (PWM)

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

void loop() {
  analogWrite(led1, 128); 
  
  delay(10000);
  
  analogWrite(led1, 0); // 0 sur 255 pour éteindre

  delay(5000);
}

code servo :

#include <Servo.h>

const int servoPin = 7;    // Broche du servo
const int servoAngle = 0;  // Angle du servo

Servo myServo;

void setup() {
  myServo.attach(servoPin);
}

void loop() {
  myServo.write(servoAngle);     // Tourner le servo à 90 degrés

  delay(1000); // Délai pour observer l'effet
}

Les deux réunis dans un seul et même code ne fonctionnent pas. Le servo tourne mais la led ne s'allume plus.

code avec les deux :

#include <Servo.h>

const int ledPin = 9;       // Broche PWM pour la LED
const int servoPin = 7;    // Broche du servo
const int ledPower = 30;    // Puissance de la LED (0-255)
const int servoAngle = 90;  // Angle du servo

Servo myServo;

void setup() {
  pinMode(ledPin, OUTPUT);
  myServo.attach(servoPin);
}

void loop() {
  analogWrite(ledPin, ledPower); // Allumer la LED avec la puissance définie
  myServo.write(servoAngle);     // Tourner le servo à 90 degrés

  delay(1000); // Délai pour observer l'effet
}

Le même code sur mon arduino mega fonctionne.

Je suis novice sur les cartes Arduino, je ne comprends pas trop.
Merci pour votre aide.

Si tu regardes la doc de la librairie Servo tu verras que sur une Nano l'utilisation de Servo interdit le PWM sur les broches 9 et 10.
Si tu connectes ta LED sur une autre broche qui fait du PWM cela fonctionnera.

Merci pour l'information !
ça fonctionne mieux maintenant. Cependant, je souhaite utiliser deux leds et j'en ai seulement une qui s'allume.

Une idée ?

#include <Servo.h>


const int led1 = 4; 
const int led2 = 5; 
const int servoPin1 = 6; 
const int servoPin2 = 7; 

Servo servo1;
Servo servo2;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  
  servo1.attach(servoPin1);
  servo2.attach(servoPin2);
 
  servo1.write(0);
  servo2.write(0);
}

void loop() {
  analogWrite(led1, 30); 
  analogWrite(led2, 30); 
  servo1.write(42); 
  servo2.write(142); 
  
  delay(10000);
  
 
  analogWrite(led1, 0); 
  analogWrite(led2, 0); 
  servo1.write(180); 
  servo2.write(0); 
  
 
  delay(10000);
}

Bonsoir,

La broche 4 n'est pas une broche PWM, utilise 3, 5, 6, (pas la 9 ni la 10), 11 ou 13 pour avoir une sortie PWM

Bonjour,
Ou sinon les sorties dites "analogiques" (voir message de @68tjs)

Je cite...

Ce que l'équipe arduino appelle complètement à tord sortie analogique est en fait une sortie numérique qui délivre un signal de fréquence fixe et dont la largeur du "1" est modulable (PWM).

Qui, quand à elles, ne sont pas utilisées par les bibliothèques (j'allais dire les timers) me semble-il (je dis peut-être une grosse bêtise... dites moi si je me trompe!).

Cordialement
Pandaroux007

Voir ici le brochage de la carte Nano.
Les sorties PWM sont symbolisées par un tilde devant le nom de la broche, par exemple, ~D5

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.