Oui, elle sont occupées, ainsi que toutes les autres. en fait je dois réaliser un clignoteur avec ce shield, intégrant un RTC pour la gestion du lever et coucher du soleil. il y a aussi une roue codeuse câblée sur GND, D0,D5,D6 et D7. D3 et D4 sont paramétrées en sortie pour alimenter des leds.
Si vous voulez voir mon code, le voici:
#include "RTClib.h"
RTC_DS3231 rtc;
#include <sunset.h>
SunSet sun;
#include <Wire.h>
#define TIMEZONE 1
#define LATITUDE 48.856614
#define LONGITUDE 2.3522219
const int ledPin = D3; // SORTIE 1
const int E1 = D6;
const int E2 = D7;
const int E3 = D5;
const int E4 = D0;
int lum = 1023;
void setup() {
pinMode(E1, INPUT_PULLUP);
pinMode(E2, INPUT_PULLUP);
pinMode(E3, INPUT_PULLUP);
pinMode(E4, INPUT_PULLUP);
Serial.begin(115200);
Wire.begin();
rtc.begin();
rtc.adjust(DateTime(2022,02,19,18,9,0)); // année, mois, jour, heure, minute, seconde
sun.setPosition(LATITUDE, LONGITUDE, TIMEZONE);
}
void loop() {
//0,5s/1s
if (digitalRead(E1)==LOW and digitalRead(E3)==LOW and digitalRead(E2)==HIGH and digitalRead(E4)==HIGH) {
Serial.println("D6 et D5");
analogWrite(ledPin, lum);
delay(500);
analogWrite(ledPin, 0);
delay(1000);
}
// 0,1s/1,5s
if (digitalRead(E1)==LOW and digitalRead(E2)==LOW and digitalRead(E3)==HIGH and digitalRead(E4)==HIGH) {
Serial.println("D6 et D7");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(1500);
}
// 0,1s/2s
if (digitalRead(E2)==LOW and digitalRead(E3)==LOW and digitalRead(E1)==HIGH and digitalRead(E4)==HIGH) {
Serial.println("D5 et D7");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(2000);
}
// 1s/2s
else if (digitalRead(E1)==LOW and digitalRead(E2)==HIGH and digitalRead(E3)==HIGH and digitalRead(E4)==HIGH) {
Serial.println("D6");
analogWrite(ledPin, lum);
delay(1000);
analogWrite(ledPin, 0);
delay(2000);
}
// 0,5s/0,5s
else if (digitalRead(E3)==LOW and digitalRead(E1)==HIGH and digitalRead(E2)==HIGH and digitalRead(E4)==HIGH) {
Serial.println("D5");
analogWrite(ledPin, lum);
delay(500);
analogWrite(ledPin, 0);
delay(500);
}
// 01s/1s
else if (digitalRead(E2)==LOW and digitalRead(E1)==HIGH and digitalRead(E3)==HIGH and digitalRead(E4)==HIGH){
Serial.println("D7");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(1000);
}
// 1s/1s
else if (digitalRead(E1)==HIGH and digitalRead(E2)==HIGH and digitalRead(E3)==HIGH and digitalRead(E4)==HIGH){
Serial.println("AUCUNE ENTREE");
analogWrite(ledPin, lum);
delay(1000);
analogWrite(ledPin, 0);
delay(1000);
}
//0,1s x 2/1s
if (digitalRead(E1)==LOW and digitalRead(E2)==LOW and digitalRead(E3)==LOW and digitalRead(E4)==HIGH) {
Serial.println("D5 et D6 et D7");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(50);
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(1000);
}
//0,1s x 2/1,5s
if (digitalRead(E4)==LOW and digitalRead(E1)==HIGH and digitalRead(E2)==HIGH and digitalRead(E3)==HIGH) {
Serial.println("D0");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(50);
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(1500);
pinMode(E4, INPUT_PULLUP);
}
//0,1s x 2/2s
if (digitalRead(E1)==LOW and digitalRead(E4)==LOW and digitalRead(E2)==HIGH and digitalRead(E3)==HIGH) {
Serial.println("D0 et D6");
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(50);
analogWrite(ledPin, lum);
delay(100);
analogWrite(ledPin, 0);
delay(2000);
}
//soleil();
}
void soleil() {
DateTime now = rtc.now();
sun.setCurrentDate(now.year(), now.month(), now.day());
int sunrise = sun.calcSunrise();
int sunset = sun.calcSunset();
int c_time = now.hour() * 60 + now.minute();
if (c_time <= sunrise){
Serial.println("nuit matin");
lum = 30;
}
else if (c_time >= sunset){
Serial.println("nuit soir");
lum = 30;
}
else {
Serial.println("jour");
lum = 1023;
}
Serial.print(c_time);
Serial.print(":");
Serial.print(sunrise);//lever du soleil
Serial.print(":");
Serial.print(sunset);//coucher du soleil
Serial.println(" ");
}
j'ai testé D0 en INPUT_PULLDOWN_16, mais ça ne va pas, dans ce cas il faut la relier au 3,3V.
D4 ne figure pas dans le code, mais elle le sera plus tard.