DSPIY 2560 - Proto 1

Discutions générales sur le DSPiy et tout ce qui s'y rattache
louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mar. 12 janv. 2016 23:09

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:

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 07:51

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.

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 11:34

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 !

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 13:19

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:

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 13:28

Sinon j'ai une lib qui fonctionne mais pauvre en commentaires. ;)

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 13:31

ça m'intéresse, mais c'est pas la lib qui appartient à ta boite ?

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 13:42

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.

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 13:51

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:

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 14:11

OK, je te prépare cela ce soir, vais faire un peu de ménage.

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 14:18

Super, merci beaucoup Thierry ! :amen:

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 19:00

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

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 19:13

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.

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 19:39

ça me rassure ::d

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 19:44

Tu en verras surement d'autres :hehe:

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 19:46

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 :]

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: DSPIY 2560 - Proto 1

Messagepar alka » mer. 13 janv. 2016 20:02

t'as le code aussi Louis ?
a chaque goto que tu trouves, Thierry t'offre une bière. hips. :mrgreen:
acheter un DSPiy ? c'est ici

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: DSPIY 2560 - Proto 1

Messagepar louisr » mer. 13 janv. 2016 20:05

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 :]

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: DSPIY 2560 - Proto 1

Messagepar thierryvalk » mer. 13 janv. 2016 20:11

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


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités