Arduino : 1.8.5 (Windows Store 1.8.10.0) (Windows 10), Carte : "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
Les options de compilation ont été modifiées, tout sera recompilé
clock:4: error: no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'
DS3231 rtc(SDA, SCL);
^
C:\Users\Skyy\Documents\Arduino\clock\clock.ino:4:21: note: candidates are:
In file included from C:\Users\Skyy\Documents\Arduino\clock\clock.ino:1:0:
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:64:3: note: DS3231::DS3231()
DS3231();
^
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:64:3: note: candidate expects 0 arguments, 2 provided
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:60:7: note: constexpr DS3231::DS3231(const DS3231&)
class DS3231 {
^
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:60:7: note: candidate expects 1 argument, 2 provided
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:60:7: note: constexpr DS3231::DS3231(DS3231&&)
C:\Users\Skyy\Documents\Arduino\libraries\DS3231/DS3231.h:60:7: note: candidate expects 1 argument, 2 provided
C:\Users\Skyy\Documents\Arduino\clock\clock.ino: In function 'void setup()':
clock:7: error: 'class DS3231' has no member named 'begin'
rtc.begin();
^
C:\Users\Skyy\Documents\Arduino\clock\clock.ino: In function 'void loop()':
clock:13: error: 'class DS3231' has no member named 'getTimeStr'
lcd.print(rtc.getTimeStr());
^
clock:17: error: 'class DS3231' has no member named 'getDateStr'
lcd.print(rtc.getDateStr());
^
exit status 1
no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'
Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
je cherche depuis plusieurs jour mais impossible de trouver
Merci de votre aide
Merci pour ton aide, par contre vu que je suis extremement debutant, comment dois-je noter les pins si ils sont sur le SDA 20 et SCL 21 (sur Arduino Mega2560)
Arduino.h (avec un A majuscule) est inclu automatiquement par l'IDE il n'est pas utile de l'inclure.
On le trouve dans les fichiers internes à l'IDE.
Il est très utile de le lire et d'en avoir une copie papier sous la main.
On y apprend des "choses" très utiles pour la compréhension du "système" Arduino.
Comme le fait remarquer Alain46 on peut y voir que de nombreuses définitions ont déjà été faites et qu'il est inutile de les recommencer, sauf si les noms à ralonge et en anglais gonflent un peu.
Les valeurs SDA et SCL sont prédéfinies. Au moins pour les Arduino Mega, Uno et Pro Mini car la compilation du petit programme suivant n'indique aucune erreur pour chacun de ces modules. Je suppose qu'il en est de même pour les autres types de modules.
class Truc {
public:
Truc(uint8_t v1, uint8_t v2) {
}
};
Truc machin(SDA, SCL);
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Bon ce n'est pas défini dans "Arduino.h" mais dans "pins_arduino.h" (on a aussi le droit de chercher dans l'arborescence de l'IDE).
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <avr/pgmspace.h>
#define NUM_DIGITAL_PINS 20
#define NUM_ANALOG_INPUTS 6
#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1)
#if defined(__AVR_ATmega8__)
#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11)
#else
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11)
#endif
#define PIN_SPI_SS (10)
#define PIN_SPI_MOSI (11)
#define PIN_SPI_MISO (12)
#define PIN_SPI_SCK (13)
static const uint8_t SS = PIN_SPI_SS;
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK = PIN_SPI_SCK;
#define PIN_WIRE_SDA (18)
#define PIN_WIRE_SCL (19)
static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;
#define LED_BUILTIN 13
#define PIN_A0 (14)
#define PIN_A1 (15)
#define PIN_A2 (16)
#define PIN_A3 (17)
#define PIN_A4 (18)
#define PIN_A5 (19)
#define PIN_A6 (20)
#define PIN_A7 (21)
static const uint8_t A0 = PIN_A0;
static const uint8_t A1 = PIN_A1;
static const uint8_t A2 = PIN_A2;
static const uint8_t A3 = PIN_A3;
static const uint8_t A4 = PIN_A4;
static const uint8_t A5 = PIN_A5;
static const uint8_t A6 = PIN_A6;
static const uint8_t A7 = PIN_A7;
#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0))
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
#ifdef ARDUINO_MAIN
.......
.......
......
Note importante les dénominations Ao..A5 sont aussi valables en D14..D19.
Puisque A0.. A5 sont au démarrage des entrées numériques comme les autres.
L'extrait ci-dessus concerne le fichier pins_arduino.h STANDART.
Il existe dans le sous répertoire "variants" un fichier complémentaire adapté à chaque modèle de carte.
Peu importe où sont définies les pins SDA et SCL.
De toute manière, il n'y a qu'un seul bus I2C et celui-ci est pris en charge par les bibliothèques wire.h et twi.h fournies avec l'IDE, aussi bien pour une uno que pour une mega.
A mes yeux, dans une classe destinée à gérer la communication avec un périphérique I2C (ici en l'occurrence un ds3231), on ne devrait jamais avoir à fournir les pin SDA ou SCL dans le constructeur d'objet.
Elle sort d'où la ds3231.h utilisée ici ?
Est-ce à dire qu'elle n'est pas contruite par-dessus wire.h, et qu'elle embarque toutes les fonctionnalités de gestion I2C ? Ce qui la rendrait encore plus douteuse à mes yeux.
The library has not been tested in combination with the Wire library and I have no idea if they can share pins. Do not send me any questions about this. If you experience problems with pin-sharing you can move the DS3231/DS3232 SDA and SCL pins to any available pins on your development board. This library will in this case fall back to a software-based, TWI-/I2C-like protocol which will require exclusive access to the pins used.
A moins d'avoir un besoin spécifique, ce qui n'est en général pas le cas avec un projet de débutant, je ne vois pas du tout l'intérêt d'utiliser une telle bibliothèque.
Cela s'éloigne des standards proposés par l'IDE arduino, et donc cela ne fait qu'augmenter la probabilité de problèmes potentiels.
La preuve : dès le départ on tombe sur un écueil "quelle valeur pour SDA et SCL?"