Diversity DIY
Modérateur : Dehas
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Moi en général je fait l'import des librairies via:
Sketch > Include library > Add ZIP library
Sketch > Include library > Add ZIP library
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
je vais essayer ce soir
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
je viens d essayer et il me dit ca:
j'ai essayé de suivre ce tuto mais je doit pas bien faire quelques choses:
https://github.com/sheaivey/rx5808-pro- ... no-nano.md
Code : Tout sélectionner
In file included from C:\Users\Windows Seven\Desktop\rx5808-pro-diversity-master\src\rx5808-pro-diversity\rx5808-pro-diversity.ino:47:0:
C:\Users\Windows Seven\Documents\Arduino\libraries\Adafruit_SSD1306/Adafruit_SSD1306.h:36:26: fatal error: Adafruit_GFX.h: No such file or directory
#include <Adafruit_GFX.h>
^
compilation terminated.
Plusieurs bibliothèque trouvées pour "Adafruit_SSD1306.h"
Utilisé : C:\Users\Windows Seven\Documents\Arduino\libraries\Adafruit_SSD1306
Non utilisé : C:\Users\Windows Seven\Documents\Arduino\libraries\arduino_750135
Non utilisé : C:\Users\Windows Seven\Documents\Arduino\libraries\arduino_44396
exit status 1
Erreur lors de la compilation.
https://github.com/sheaivey/rx5808-pro- ... no-nano.md
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
J'ai réessayer c est pas bon:
Les fichiers qu'ils disent sont déjà modifiés 'j'ai rien toucher:
fichier settings.h:
ensuite (toujours rien toucher):
fichier Adafruit_SSD1306.h (là j'ai du le modifier de ca:
à
mais quand je compile j'ai ca:
JE comprends que j'ai une erreur sur la reglage de résolution mais ou ?? c est un casse tete
Les fichiers qu'ils disent sont déjà modifiés 'j'ai rien toucher:
fichier settings.h:
Code : Tout sélectionner
// Choose the display you will be using
// you will also have to uncomment the includes in the main project.
//#define TVOUT_SCREENS
#define OLED_128x64_ADAFRUIT_SCREENS
Code : Tout sélectionner
// uncomment depending on the display you are using.
// this is an issue with the arduino preprocessor
#ifdef TVOUT_SCREENS
// #include <TVout.h>
// #include <fontALL.h>
#endif
#ifdef OLED_128x64_ADAFRUIT_SCREENS
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#include <SPI.h>
#endif
Code : Tout sélectionner
// #define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16
Code : Tout sélectionner
#define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16
Code : Tout sélectionner
oled_128x64_adafruit_screens.cpp:47: error: #error ("Screen size incorrect, please fix Adafruit_SSD1306.h!");
#error("Screen size incorrect, please fix Adafruit_SSD1306.h!");
^
sketch\oled_128x64_adafruit_screens.cpp:437:0: warning: "RSSI_BAR_SIZE" redefined [enabled by default]
#define RSSI_BAR_SIZE 101
^
sketch\oled_128x64_adafruit_screens.cpp:406:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 119
^
sketch\oled_128x64_adafruit_screens.cpp:497:0: warning: "RSSI_BAR_SIZE" redefined [enabled by default]
#define RSSI_BAR_SIZE 108
^
sketch\oled_128x64_adafruit_screens.cpp:437:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 101
^
exit status 1
#error ("Screen size incorrect, please fix Adafruit_SSD1306.h!");
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Tu n'a pas une multiple définition de Adafruit_SSD1306.h ? je dit ça car avant tu avait mis la lib au même endroit que le fichier rx5808-pro-diversity.ino
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
oui c est ca, j'ai telecharger et copier les 2 fichiers a coté: Adafruit_SSD1306.h et Adafruit_GFX.h.
j'ai importer celle des bibliothèques, mais le tuto demande de modifier le fichier adafruit ssd1306, mais je ne sais pas acceder ouvrir les bibliothèque de arduino.
Donc , je m 'étais rabattu sur le première solution.
Sinon c est quoi la marche a suivre
j'ai importer celle des bibliothèques, mais le tuto demande de modifier le fichier adafruit ssd1306, mais je ne sais pas acceder ouvrir les bibliothèque de arduino.
Donc , je m 'étais rabattu sur le première solution.
Sinon c est quoi la marche a suivre
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Tu retire les 2 fichiers Adafruit_SSD1306.h et Adafruit_GFX.h qui sont dans le répertoire du projet (et éventuellement les autres fichiers que y avait déposé) afin de repartir au propre.
Ensuite ce ne sera que les fichier de la librairie que tu vas modifier donc la tu l'ouvre sous Arduino de son répertoire d'installation, tu fait la modif, tu la sauvegarde, tu compil et normalement ce doit être OK.
Ensuite ce ne sera que les fichier de la librairie que tu vas modifier donc la tu l'ouvre sous Arduino de son répertoire d'installation, tu fait la modif, tu la sauvegarde, tu compil et normalement ce doit être OK.
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
ca y est ca marche, juste un petit défaut sur l'affichage:
j'ai la bande jaune qui est trop large, je pense au reglage 128x64, qui doit pas etre bien defini dans le Adafruit_SSD1306.h de la bibliotheque (je trouve pas comment le regler) ou alors j'ai pas pris le bon modele d’écran mais je crois pas
j'ai la bande jaune qui est trop large, je pense au reglage 128x64, qui doit pas etre bien defini dans le Adafruit_SSD1306.h de la bibliotheque (je trouve pas comment le regler) ou alors j'ai pas pris le bon modele d’écran mais je crois pas
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
J'ai pas d'oled.
Mais demain je regarde le source et si peux aider je te ferais un retour.
C'est bien tu avance. Y-a plus qu'à
Mais demain je regarde le source et si peux aider je te ferais un retour.
C'est bien tu avance. Y-a plus qu'à
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
merci encore a toi, por ton aide sinon je patinerai encore beaucoup
l écran était estampillé: " Serial-128x64-oled-ecran-led-module-Ecran-Blanc-Bleu-SPI-I2C-LCD-arduino". mais j'aurai du prendre une version sans couleur,au pire je recommanderais une version monochrome.
maintenant je continue les soudures..
merci encore pour ton aide bruno
l écran était estampillé: " Serial-128x64-oled-ecran-led-module-Ecran-Blanc-Bleu-SPI-I2C-LCD-arduino". mais j'aurai du prendre une version sans couleur,au pire je recommanderais une version monochrome.
maintenant je continue les soudures..
merci encore pour ton aide bruno
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
TiTTaN,
Concernant la bande jaune qui est trop large.
Je ne garantie pas à 100% mais j'ai l'impression que tu pourra régler ce Pb dans le fichier TVOut_screens.cpp en ligne 81 tu y trouvera la fonction drawTitleBox:
La fonction draw_rect est définie dans TVout.ccp:
et donc il suffirait de jouer sur la hauteur du rectangle (paramètre h).
N'ayant pas la possibilité de tester ce que je dit, je te laisse faire. Tu me dira si c'est Ok.
Concernant la bande jaune qui est trop large.
Je ne garantie pas à 100% mais j'ai l'impression que tu pourra régler ce Pb dans le fichier TVOut_screens.cpp en ligne 81 tu y trouvera la fonction drawTitleBox:
Code : Tout sélectionner
void screens::drawTitleBox(const char *title) {
TV.draw_rect(0,0,127,95, WHITE);
TV.printPGM(((127-strlen_P(title)*8)/2), 3, title);
TV.draw_rect(0,0,127,14, WHITE,INVERT);
}
Code : Tout sélectionner
/* draw a rectangle at x,y with a specified width and height
*
* Arguments:
* x0:
* The x coordinate of upper left corner of the rectangle.
* y0:
* The y coordinate of upper left corner of the rectangle.
* w:
* The widht of the rectangle.
* h:
* The height of the rectangle.
* c:
* The color of the rectangle.
* (see color note at the top of this file)
* fc:
* The fill color of the rectangle.
* (see color note at the top of this file)
* default =-1 (no fill)
*/
N'ayant pas la possibilité de tester ce que je dit, je te laisse faire. Tu me dira si c'est Ok.
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- TiTTaN
- Octocopter
- Messages : 634
- Enregistré le : ven. 2 janv. 2015 12:00
- Réputation : 0
- Localisation : DAX
- Genre :
Re: Diversity DIY
je viens d essayer mais ca fait rien, j'ai plutot que ca vient de l'ecran qui lui est coupé en 2
TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Ha le pb c'est que j'ai pas d'oled pour aller plus loin via test. Désolé de ne pouvoir plus t'aider.
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
-
- Messages : 3
- Enregistré le : sam. 15 oct. 2016 21:43
- Réputation : 0
Re: Diversity DIY
bonjour plusieurs mois que je suis sur ce projet et je n'arrive a rien peut on faire un autre explication
quelle ficher télécharger , quelle librery prendre et koi modifier car quand je compile j'ai les même erreur
dans C:\Users\asus\Documents\Arduino\libraries
j'ai
Adafruit_SSD1306-
Adafruit-GFX-Library-master
pollserial
TVout
TVoutfonts
dans le repertoire rx5808-pro-diversity
oled_128x64_adafruit_screens.cpp
oled_128x64_u8g_screens.cpp
screens.h
settings.h
TVOut_screens.cpp
rx5808-pro-diversity.ino
es sa plante voila le résultat
Arduino : 1.6.11 (Windows 7), Carte : "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"
sketch\oled_128x64_adafruit_screens.cpp:454:0: warning: "RSSI_BAR_SIZE" redefined
#define RSSI_BAR_SIZE 101
^
sketch\oled_128x64_adafruit_screens.cpp:423:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 119
^
sketch\oled_128x64_adafruit_screens.cpp:514:0: warning: "RSSI_BAR_SIZE" redefined
#define RSSI_BAR_SIZE 108
^
sketch\oled_128x64_adafruit_screens.cpp:454:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 101
^
In file included from sketch\pollserial.cpp:28:0:
C:\Users\asus\Documents\Arduino\libraries\pollserial/pollserial.h:46:16: error: conflicting return type specified for 'virtual void pollserial::write(uint8_t)'
virtual void write(uint8_t);
^
In file included from C:\Users\asus\Documents\Arduino\libraries\pollserial/pollserial.h:28:0,
from sketch\pollserial.cpp:28:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:48:20: error: overriding 'virtual size_t Print::write(uint8_t)'
virtual size_t write(uint8_t) = 0;
^
exit status 1
Erreur de compilation pour la carte Arduino Pro or Pro Mini
quelle ficher télécharger , quelle librery prendre et koi modifier car quand je compile j'ai les même erreur
dans C:\Users\asus\Documents\Arduino\libraries
j'ai
Adafruit_SSD1306-
Adafruit-GFX-Library-master
pollserial
TVout
TVoutfonts
dans le repertoire rx5808-pro-diversity
oled_128x64_adafruit_screens.cpp
oled_128x64_u8g_screens.cpp
screens.h
settings.h
TVOut_screens.cpp
rx5808-pro-diversity.ino
es sa plante voila le résultat
Arduino : 1.6.11 (Windows 7), Carte : "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"
sketch\oled_128x64_adafruit_screens.cpp:454:0: warning: "RSSI_BAR_SIZE" redefined
#define RSSI_BAR_SIZE 101
^
sketch\oled_128x64_adafruit_screens.cpp:423:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 119
^
sketch\oled_128x64_adafruit_screens.cpp:514:0: warning: "RSSI_BAR_SIZE" redefined
#define RSSI_BAR_SIZE 108
^
sketch\oled_128x64_adafruit_screens.cpp:454:0: note: this is the location of the previous definition
#define RSSI_BAR_SIZE 101
^
In file included from sketch\pollserial.cpp:28:0:
C:\Users\asus\Documents\Arduino\libraries\pollserial/pollserial.h:46:16: error: conflicting return type specified for 'virtual void pollserial::write(uint8_t)'
virtual void write(uint8_t);
^
In file included from C:\Users\asus\Documents\Arduino\libraries\pollserial/pollserial.h:28:0,
from sketch\pollserial.cpp:28:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:48:20: error: overriding 'virtual size_t Print::write(uint8_t)'
virtual size_t write(uint8_t) = 0;
^
exit status 1
Erreur de compilation pour la carte Arduino Pro or Pro Mini
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Le repertoire rx5808-pro-diversity est ton répertoire projet.
Les différentes librairies ont été importées ou copier coller dans le répertoire library ?
Les différentes librairies ont été importées ou copier coller dans le répertoire library ?
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
-
- Messages : 3
- Enregistré le : sam. 15 oct. 2016 21:43
- Réputation : 0
Re: Diversity DIY
repertoire rx5808-pro-diversity est ton répertoire projet oui
librairies copier coller dans le répertoire library ? oui
j'ai tous fait au moins 60 fois
je me demande si je utiliser le bon programme
la carte sur la carte que jai il est marquer
RCD T-Box v1.0
rev 4
PCB design by Tupoar
code by shea Ivey
gitHub: rx5808-pro-diversity
une petite recherche sur google
je telecharger ici
https://github.com/sheaivey/rx5808-pro-diversity" onclick="window.open(this.href);return false; ( il y a pas les librery dedans donc je cherche sur google ,trouver et mi dans document / librery)
peut être je n'utiliser pas le même programme que vous ?
librairies copier coller dans le répertoire library ? oui
j'ai tous fait au moins 60 fois
je me demande si je utiliser le bon programme
la carte sur la carte que jai il est marquer
RCD T-Box v1.0
rev 4
PCB design by Tupoar
code by shea Ivey
gitHub: rx5808-pro-diversity
une petite recherche sur google
je telecharger ici
https://github.com/sheaivey/rx5808-pro-diversity" onclick="window.open(this.href);return false; ( il y a pas les librery dedans donc je cherche sur google ,trouver et mi dans document / librery)
peut être je n'utiliser pas le même programme que vous ?
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Ok
Je ne peux compiler pour le moment. Je regarde ça demain une fois de retour à la maison.
Je ne peux compiler pour le moment. Je regarde ça demain une fois de retour à la maison.
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Diversity DIY
Bonjour
Je viens de faire le test et chez moi ça compil, pas de Pb en version 1.6.9.
Croquis > Inclure une bibliothèque > Gérer les bibliothèques
Si toutes les bibliothèques nécessaire sont bien installées.
Je viens de faire le test et chez moi ça compil, pas de Pb en version 1.6.9.
Regarde dans le menu:Le croquis utilise 26 502 octets (82%) de l'espace de stockage de programmes. Le maximum est de 32 256 octets.
Les variables globales utilisent 1 143 octets (55%) de mémoire dynamique, ce qui laisse 905 octets pour les variables locales. Le maximum est de 2 048 octets.
Croquis > Inclure une bibliothèque > Gérer les bibliothèques
Si toutes les bibliothèques nécessaire sont bien installées.
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D