Page 11 sur 13

Re: DSPIY 2560 - Proto 1

Posté : mar. 12 janv. 2016 23:09
par louisr
Je galère un peu avec cet écran. J'ai commencé à retravailler la librairie, principalement en supprimant ce qui ne me sera pas utile, mais j'ai toujours un soucis, je pense au niveau du tableau du buffer. Voici comment il est déclaré dans la librairie de base :

Code : Tout sélectionner

static uint8_t buffer[(SSD1305_LCDHEIGHT * SSD1305_LCDWIDTH / 8)] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0C, 0x3E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x1F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFD,
0xFB, 0x7B, 0xBF, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
#if (SSD1305_LCDHEIGHT == 64)
0xFE, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF1,
0xC1, 0x01, 0x00, 0x00, 0x70, 0x78, 0x7C, 0x7C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0xFC, 0xFC, 0xF8,
0xF0, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0xFC, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x70, 0x78, 0x7C, 0x7C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0xFC, 0xFC, 0xF8, 0xF0, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x3D, 0x3D, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x70, 0x38,
0x3C, 0x3C, 0x3C, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC,
0xFC, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C,
0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03,
0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xF9, 0xF9, 0xF9,
0xF9, 0xF8, 0xF8, 0xF8, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xF9, 0xF9, 0xF9, 0xF9,
0xF8, 0xF8, 0xF8, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8,
0xF8, 0xF9, 0x09, 0xF9, 0x09, 0xD8, 0xB8, 0x78, 0x08, 0xF8, 0x09, 0xE9, 0xE9, 0x19, 0xF8, 0x08,
0xF8, 0xF8, 0x08, 0xF8, 0xD8, 0xA8, 0xA9, 0x69, 0xF9, 0xE9, 0x09, 0xE9, 0xF8, 0x09, 0xA9, 0x29,
0xD9, 0xF8, 0x08, 0xF9, 0x09, 0xA9, 0xA9, 0xF8, 0xD8, 0xA8, 0xA9, 0x69, 0xF9, 0xF9, 0xF9, 0xF9,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01
#endif
};


Le premier soucis, c'est qu'il contient une ligne de trop pour la partie 32 et une ligne en moins pour la partie 64. J'ai donc une erreur de compilation quand je teste avec la librairie telle quelle. J'ai donc tenté de supprimer une lignes, mais bien sur ça ne marche pas beaucoup mieux. En fait je ne comprend pas pourquoi le tableau est initialisé avec ces valeurs :(
Je vais essayer de reprendre ça plus calmement demain :ange:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 07:51
par thierryvalk
Le premier soucis, c'est qu'il contient une ligne de trop pour la partie 32 et une ligne en moins pour la partie 64

Comprend pas les parties 32 et 64, il s'agit d'un buffer à une dimension de 128*32/8 si écran de 128*32 pixels.

En fait ton buffer est déclaré ET initialisé; certain compilateurs n'apprécient pas trop d'initialiser des variables dans des .h
Je présume que l'auteur avait une image tel que le "Hello DSPiy" a afficher après l'initialisation de l'écran.

Une forme plus élégante aurait été de déclarer :
#define SSD1305_LCDHEIGHT 128
#define SSD1305_LCDWIDTH 32
static uint8_t buffer[(SSD1305_LCDHEIGHT * SSD1305_LCDWIDTH / 8)];


Puis initialiser le buffer par une fonction qui doit surement exister pour le mettre a zéro; du style :
void CLR_Buffer()
{
int n;
for(n=0;n<(SSD1305_LCDHEIGHT * SSD1305_LCDWIDTH / 8);n++) buffer[n]=0;
}


Il faut aussi voir comment est utilisé ce buffer.
Il représente soit l'écran soit la RAM interne du contrôleur. Certains utilisent un buffer plus grand que le LCD (de taille de la mémoire du contrôleur) ce qui permet par exemple de déplacer la fenêtre d'affichage dans cette mémoire.

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 11:34
par louisr
En fait dans le .h on définit soit un écran 128x32 soit un 128x64. Donc quand on choisi 128x32 il ne tient pas compte de la seconde partie du tableau, mais retourne une erreur car on initialise avec trop de valeurs. Comme j'utilise que un écran de 128x32 j'ai enlevé tout ce qui est pour le 128x64. La partie du code que j'ai envoyé provient de la librairie de base donc avec les valeurs pour 128x64 également.
Dans tous les cas je comprenais pas pourquoi le tableau n'était pas initialisé à 0, mais effectivement le programme de test affiche une image au tout début du programme qui doit correspondre aux valeurs du tableau. La fonction clear existe mais utilise la fonction memset, mais ça revient au même :

Code : Tout sélectionner

// clear everything
void Adafruit_SSD1305::clearDisplay(void) {
  memset(buffer, 0, (SSD1305_LCDWIDTH*SSD1305_LCDHEIGHT/8));
}


Je vais initialiser le tableau à 0 et voir si ça marche mieux. Merci de ton aide Thierry !

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 13:19
par louisr
Bon je laisse tomber avec cette lib :rougefaché:
j'vais reprendre ce que NewHaven fourni :
http://www.newhavendisplay.com/app_notes/OLED_2_23_12832.txt
et la réécrire pour l'arduino. Il faut principalement que je réécrire les fonctions oled_command et oled_display pour l'adapter au SPI de l'atmega, mais ça ça devrait aller. Enfin on verra ce soir si l'écran est passé par la fenêtre ou pas :ange:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 13:28
par thierryvalk
Sinon j'ai une lib qui fonctionne mais pauvre en commentaires. ;)

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 13:31
par louisr
ça m'intéresse, mais c'est pas la lib qui appartient à ta boite ?

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 13:42
par thierryvalk
Certains morceaux oui, cela dépend si compte mettre tout en libre ou pas.
Si c'est pour ton propre usage, il n'y a pas de soucis.

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 13:51
par louisr
A priori non, de toute façon j'utilise cet écran pour l'instant pour "m'entraîner" et essaye de me familiariser un peu avec les écrans, mais je compte utiliser son grand frère après, qui utilise un autre driver, le SSD1322 :cote:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 14:11
par thierryvalk
OK, je te prépare cela ce soir, vais faire un peu de ménage.

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 14:18
par louisr
Super, merci beaucoup Thierry ! :amen:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 19:00
par louisr
Je suis en plein décryptage du code obscur de Thierry 8/
Non je plaisante, c'est assez compréhensible, enfin il y a des petits trucs que je ne saisis pas mais dans l'ensemble ça va. J'ai écrit les fonctions command_oled et data_oled pour envoyer des commandes et des donnés à l'écran en utilisant le SPI de l'arduino. Ça, ça va.
Première petite question :
dans ton .h, tu déclares le buffer comme ça :

Code : Tout sélectionner

uint8_t glcd_Buffer[8][128];//buffer écran pour 128*64

C'est fait exprès de laisser 8x128 ? 4x128 ça suffit non ? Ou il y a quelque chose que j'ai pas saisi :0

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 19:13
par thierryvalk
heuuuuuuu....
Je pense que fait exprès car à l'origine du DSPiy on n'était pas certain de l'écran et le firmware avait été +- pensé pour accueillir d'autres modèles.
Mais oui, 4*128 c'est suffisant.

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 19:39
par louisr
ça me rassure ::d

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 19:44
par thierryvalk
Tu en verras surement d'autres :hehe:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 19:46
par louisr
Oui enfin pour l'instant j'aimerai voir les miennes, parce que ce que je vois sur l'écran c'est plein de petits pixels, et pas un joli "Hello DSPIY" :hehe:
Petite pause film, je reprendrai ça ce soir ou demain :]

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 20:02
par alka
t'as le code aussi Louis ?
a chaque goto que tu trouves, Thierry t'offre une bière. hips. :mrgreen:

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 20:05
par louisr
Juste de la lib de l'écran !
C'est quoi le soucis avec les goto ?
J'ai souvenir qu'un prof d'info nous disais de ne pas les utiliser mais je ne me rappelle plus pourquoi :]

Re: DSPIY 2560 - Proto 1

Posté : mer. 13 janv. 2016 20:11
par thierryvalk
C'est bien le goto, mais faut pas en abuser.
Les informaticiens n’aiment pas car tu pourrais faire boucler sans fin.
Par contre while(1); ne dérange personne. :0

En assembleur on utilise jump à toute les sauces, et le compilateur va transformer pas mal de code en jump qui est en fait un goto. :0