// --- Pins utilisées ---
// "PWM" : D9 et D10
// "Normales" : D2 et D4
// "Analogiques" : A0 et A1 (fonctionnent comme D14 et D15)
const int pinAnalogWrite_PWM = 9; // PWM
const int pinAnalogWrite_Normale = 2; // non-PWM
const int pinAnalogWrite_Analog = A0; // "sortie analogique"
const int pinDigitalWrite_PWM = 10; // PWM
const int pinDigitalWrite_Normale = 4;// non-PWM
const int pinDigitalWrite_Analog = A1;// "sortie analogique"
// --- Variables ---
unsigned long previousMillis = 0;
const unsigned long interval = 20; // temps entre chaque pas de variation
int brightness = 0;
int fadeAmount = 5; // variation à chaque pas
void setup() {
// Configure les 6 sorties
pinMode(pinAnalogWrite_PWM, OUTPUT);
pinMode(pinAnalogWrite_Normale, OUTPUT);
pinMode(pinAnalogWrite_Analog, OUTPUT);
pinMode(pinDigitalWrite_PWM, OUTPUT);
pinMode(pinDigitalWrite_Normale, OUTPUT);
pinMode(pinDigitalWrite_Analog, OUTPUT);
Serial.begin(9600);
Serial.println("Comparaison des sorties PWM, normales et analogiques");
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// --- analogWrite() progressif ---
analogWrite(pinAnalogWrite_PWM, brightness);
analogWrite(pinAnalogWrite_Normale, brightness);
analogWrite(pinAnalogWrite_Analog, brightness);
// --- digitalWrite() clignotement progressif simulé ---
// (on allume quand brightness dépasse la moitié de sa plage)
digitalWrite(pinDigitalWrite_PWM, brightness > 127 ? HIGH : LOW);
digitalWrite(pinDigitalWrite_Normale, brightness > 127 ? HIGH : LOW);
digitalWrite(pinDigitalWrite_Analog, brightness > 127 ? HIGH : LOW);
// variation
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount; // inverse la direction du fondu
}
}
}