====== ESP8266 : sorties ====== Attention, pour la Wemos D1 R1 development board, des ambiguïtés subsistent concernant les sorties D8 (GPIO0) et D9 (GPIO2) qui sont en pull-up et la sortie D10 (GPIO15) en pull-down. Les sorties sont en 10 bits (0-1023) ===== Clignoter une LED ===== Rien d'original si ce n'est que la LED intégrée au module est sur la sortie n°2. À savoir, la variable "BUILTIN_LED" permet de s'affranchir du numéro physique de la sortie. int led = 2; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); } ===== Plusieurs LEDs ===== * {{:materiel:esp8266:esp-wemosd1-shematics.pdf|}} ==== Wemos D1 ==== Sur la carte Wemos D1, les numéros de sorties sont un peu différents. Par exemple ici pour les sorties 13, 12 et 11 d'une Arduino classique, il s'agit en fait de 14, 12 et 13 (ou on peut aussi écrire D13, D12, D11). {{:materiel:esp8266:esp-pwm-pins.png|}} const int led1 = 14; //D13 const int led2 = 12; //D12 const int led3 = 13; //D11 //PWM : 10 bits int brightness = 0; // how bright the LED is (0 = full, 512 = dim, 1023 = off) int fadeAmount = 5; // how many points to fade the LED by const int delayMillis = 10;// how long to pause between each loop void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop() { // set the LED brightness analogWrite(led1, brightness); analogWrite(led2, brightness); analogWrite(led3, brightness); // increment/decrement the brightness for the next loop brightness = brightness + fadeAmount; // limit to 10-bit (0-1023) if (brightness < 0) brightness = 0; if (brightness > 1023) brightness = 1023; // reverse the direction of the fading at each end if (brightness == 0 || brightness == 1023) { fadeAmount = -fadeAmount; } // pause so you can see each brightness level delay(delayMillis); } ==== Wemos mini ==== /* Wemos Mini : test three outputs D5, D6, D7 * * Mapping Wemos Arduino * D0 16 Digital (HIGH = on, LOW = OFF) * D5 14* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D6 12* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D7 13* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D8 15* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D1 5* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D2 4* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D4 2* Digital (HIGH = on, LOW = OFF), Analog (1023 = HIGH, 0 = LOW) * D3 ?? * D0 ?? * D1 ?? */ #define LED1 14 // ou D5 #define LED2 12 // ou D6 #define LED3 13 // ou D7 void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); } void loop() { digitalWrite(LED1, HIGH); delay(5000); digitalWrite(LED1, LOW); delay(2000); analogWrite(LED2, 1023); delay(5000); analogWrite(LED2, 0); delay(2000); for (int i = 0 ; i < 1023 ; i=i+10){ analogWrite(LED1, i); analogWrite(LED2, i); analogWrite(LED3, i); delay(20); } for (int i = 0 ; i < 1023 ; i=i+10){ analogWrite(LED1, i); delay(20); } for (int i = 0 ; i < 1023 ; i=i+10){ analogWrite(LED2, i); delay(20); } for (int i = 0 ; i < 1023 ; i=i+10){ analogWrite(LED3, i); delay(20); } } ===== Servo motors ===== **Wemos mini** /* * Wemos mini > 2 servos * * Wemos mapping * D1 Servo 1 signal * D2 Servo 2 signal * GND GND * 5V (extern) */ #include Servo servo1, servo2; void setup() { } void loop() { int pos; // Attach servos servo1.attach(D1); servo2.attach(D2); for(pos = 0; pos <= 180; pos += 1) { servo1.write(pos); servo2.write(180-pos); delay(15); } for(pos = 180; pos>=0; pos-=1) { servo1.write(pos); servo2.write(180-pos); delay(15); } delay(3000); // Detach servos (needed sometimes sounds from servo are off) servo1.detach(); servo2.detach(); delay(3000); } ===== Monster shield ===== **Wemos mini** /* Wemos Mini > Monster Shield * * Mapping Wemos MonsterShield * D0 D7 : CW digital (pins 7 et 9 soudées : inversées) * D5 D8 : CCW digital (pins 8 et 4 soudées : inversées) * D6 D5 : PWM1 * D7 D6 : PWM2 * 5V 5V * GND GND * 9V */ #define CW 16 #define CCW 14 #define PWM1 12 #define PWM2 13 void setup() { pinMode(PWM1, OUTPUT); pinMode(PWM2, OUTPUT); pinMode(CW, OUTPUT); pinMode(CCW, OUTPUT); } void loop() { // direction CW digitalWrite(CW, HIGH); digitalWrite(CCW, LOW); analogWrite(PWM1, 0); analogWrite(PWM2, 0); delay(3000); analogWrite(PWM1, 400); // ! PWM / 1023 analogWrite(PWM2, 400); delay(3000); // direction CCW digitalWrite(CW, LOW); digitalWrite(CCW, HIGH); analogWrite(PWM1, 0); analogWrite(PWM2, 0); delay(3000); analogWrite(PWM1, 800); analogWrite(PWM2, 800); delay(3000); }