Bonjour,
je suis en train de regrouper sur une carte UNO, diverses mesures sur ma maison (2 anémomètres et 2 fois 10 opta resistances : évaluer les ombres sur 2 sections d toit à équiper en panneaux solaires)
Sur pas mal d'aspect vous m'avez fait bien avancer ...mais là !!!
Je galère depuis 3 jours... surement un truc trivial mais ...... grrrr
Donc : une carte UNO, 1 shield SD + RTC, 1 oled 128x64 pixels. J'ai mis 2 resistances 6.8 K en pull up sur A4 et A5.
ET donc SD+RTC => OK, OLED seul => OK mais les 3 => le programme plante.
Ci après le code, le scan des 2 x I2C reconnu, et le shield utilisé.
Désolé de vous mettre encore a contribution
Jusque là, j'étais en mode essai/echec/re-essai.. j'aimerai passer en mode plus apprentissage mais je ne sais pas par ou commencer ..principalement concernant les Bibliothèques, compatibilité , ..etc
Cordialement
// racourcis pour faicliter les message de mise au point
#define sp Serial.print(" ")
#define rc Serial.println()
#define pr Serial.print
#define ap display.print
#define aprc display.println();
#include <SD.h>
#include <Wire.h>
#include <SPI.h>
// Horloge TR
#include <RTClib.h>
RTC_DS1307 RTC;
DateTime time ;
// Afficheur OLED
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
/*
#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);
*/
byte win_in ;
byte speed_win ;
byte fini = 1;
const byte arret = 3; // bouton d'interruption
const byte Led_surveillance = 8; // led de surveillance fonctionnement (verte) fixe = ecriture / clignotant = en attente
const byte Led_alarme = 7; // led d' alarme (rouge) => while(1) nb de clignotement = code alarme.
const byte Pin_win=0; // lecture vitesse vent
// Carte SD
// Variables utilisées pour la SD Card
#define sdCardPinChipSelect 10 // Le lecteur de SD card sera branché sur les pins 10 (CS), 11 (MOSI), 12 (MISO), et 13 (SCK)
File monFichier;
String nomDuFichier;
void setup() {
pinMode (arret, INPUT_PULLUP);
pinMode (Led_surveillance, OUTPUT);
pinMode (Led_alarme, OUTPUT);
Serial.begin(9600); //lancement liaison Serie
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //lancement OLED
RTC.begin(); //lancement RTC
// CNX carte SD
if (!SD.begin(sdCardPinChipSelect)) {
Serial.println(F("Erreur carte SD!"));
erreur(2);
}
nomDuFichier="Test.txt";
if (!SD.exists(nomDuFichier)) {
Serial.println(F("Nouveau fichier "));
monFichier = SD.open(nomDuFichier, FILE_WRITE);
if (!monFichier){
Serial.println(F("Échec d'ouverture"));
erreur(3);
}
}
else {
Serial.println(F("Rajout au fichier"));
monFichier = SD.open(nomDuFichier, FILE_WRITE);
if (!monFichier){
Serial.println(F("Échec d'ouverture"));
erreur(4);
}
}
// Ecriture fichier et close....
pr("print ");Serial.println (monFichier.println("ligne kkkkk 1")); // nb octets écrits
//pr("flush ");Serial.println (monFichier.flush()); // voir si Code retour ???
//pr("close ");Serial.println (monFichier.close());
monFichier.close();
// essai d'écriture pour 1. Tracer l'anancement 2. tester l'écriture sur OLED
display.clearDisplay();display.display();
display.setTextColor(WHITE);ap("Bonjour truc 4");aprc;aprc;
display.display();
pr("hhhh");rc;
// utilisation de RTC
time = RTC.now();
pr(" heure :");pr(time.hour());pr(" Mn :");pr(time.minute());rc;
ap(" heure :");ap(time.hour());ap(" Mn :");ap(time.minute());rc;
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
delay (100);
}
// Diverses procédures de service
// void attente (int nb_min, int cycle) { (Attente avec clichotement LED VERTE )
// void erreur (int code) { ( Boucle sans fin avec nb de clignoment LED rouge)
//