Bonjour a tous,
je viens de terminer le cablage en suivant les instructions de adafruit :
instructions tres bien faites au demeurant.
Il me semble avoir bien suivi les instructions pour compiler les softs de demo mais j'ai les erreurs suivantes :
C:\Install\arduino-1.0.3-windows\arduino-1.0.3\libraries\Adafruit_GFX\Adafruit_ST7735.cpp: In member function 'void Adafruit_ST7735::commonInit(uint8_t*)':
C:\Install\arduino-1.0.3-windows\arduino-1.0.3\libraries\Adafruit_GFX\Adafruit_ST7735.cpp:273: error: 'SPI' was not declared in this scope
C:\Install\arduino-1.0.3-windows\arduino-1.0.3\libraries\Adafruit_GFX\Adafruit_ST7735.cpp:274: error: 'SPI_CLOCK_DIV4' was not declared in this scope
C:\Install\arduino-1.0.3-windows\arduino-1.0.3\libraries\Adafruit_GFX\Adafruit_ST7735.cpp:276: error: 'SPI_MODE0' was not declared in this scope
Merci d'avance pour votre aide et meilleurs voeux pour 2014
Je pencherais pour une erreur à l'installation des librairies. De ce que j'ai vu, il n'y a pas de fichier "Adafruit_ST7735.cpp" dans la librairie GFX. L'as-tu bien chargée depuis le dépôt adafruit sur Github?
Je ne sais pas où tu as trouvé cette librairie mais ce n'est pas une version officielle provenant d'Adafruit.
Je viens de vérifier sur leur dépot github, la version à jour date de juillet 2013 et ne contient pas les fichiers en question.
Sur mon PC j'ai une version légèrement plus ancienne et le contenu est le même aux dates de version des fichiers près.
Fdufnews
un grand merci, maintenant ca marche grace a toi.
Pour info environ 80% des led allumees et cela consomme 1,19 A sur une alim de labo.
Jacques
En attendant de maîtriser ma carte XMOS j'ai craqué et j'ai installé la librairie Adafruit pour essayer la matrice avec un arduino. La librairie en question est déjà pas mal et le rendu est plus que correct.
Et elle déchire on en prend plein les yeux. Je pense que je vais bien m'amuser.
fdufnews:
j'ai craqué et j'ai installé la librairie Adafruit pour essayer la matrice avec un arduino. La librairie en question est déjà pas mal et le rendu est plus que correct.
Et elle déchire on en prend plein les yeux. Je pense que je vais bien m'amuser.
C'est vrai que c'est pas mal et on peut déjà faire plein d'effets à des vitesses très honorables.
Dommage que ce soit mono dalle =(
@+
Je viens d'essayer d'écrire un petit jeu de la vie et là grosse déception. Le programme plantait tout le temps, je n'arrivais même pas à finir l'initialisation du plateau de jeu. J'ai ajouté Serial et freeMemory. Et je me suis aperçu qu'on atteint vite les limites de la carte. J'utilise une vieille Duemillanove avec un ATmega328.
J'ai continué à chercher et j'ai trouvé qu'avec un soft minimal sans aucune variable globale, on voit que la librairie bouffe toute la RAM. Juste après l'initialisation (matrix.begin()) il ne reste que 182 octets. autant dire qu'il va falloir viser plus haut question CPU.
Le code
#include <MemoryFree.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <RGBmatrixPanel.h> // Hardware-specific library
// If your 32x32 matrix has the SINGLE HEADER input,
// use this pinout:
#define CLK 8 // MUST be on PORTB!
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
// If your matrix has the DOUBLE HEADER input, use:
//#define CLK 8 // MUST be on PORTB!
//#define LAT 9
//#define OE 10
//#define A A3
//#define B A2
//#define C A1
//#define D A0
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false);
void setup() {
//Serial.println("begin");
byte clr,x,y;
//Serial.println(freeMemory());
randomSeed(analogRead(4));
matrix.begin();
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(freeMemory());
}
void loop() {
// do nothing
}
Le résultat en image
Edit: j'aurais du mieux lire la doc Adafruit. Ils disent que la librairie utilise 1600 octets pour ses buffers.
Bon comme la librairie occupe toute la RAM il n'y a plus la place pour stocker une copie de l'état de la matrice.
Alors j'ai ajouté 2 méthodes dans la librairie Adafruit pour relire l'état de celle-ci. C'est un peu limité mais je commence à pouvoir faire ce que je veux avec un simple ATmega328.
J'ai aussi fait un fichier keyword.txt pour la coloration syntaxique.
uint16_t RGBmatrixPanel::readPixel(int16_t x, int16_t y)
en entrée x, y coordonnée du point à lire
retourne la couleur sur un entier au format RGB 565
uint8_t RGBmatrixPanel::readPixelRGB(int16_t x, int16_t y, uint8_t *red, uint8_t *green, uint8_t *blue) {
en entrée x, y coordonnée du point à lire, 3 pointeurs vers des variables qui recevront les couleurs R,G,B
retourne 0 si coordonnées erronées
retourne 0xFF si les 3 composantes sont nulles (ça c'est pour mon besoin)
retourne 1 dans les autres cas
Il faudra aussi dans l'applicatif dans le cas de la UNO :
// If your 32x32 matrix has the SINGLE HEADER input,
// use this pinout: (for UNO)
#define CLK 8 // MUST be on PORTB!
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
et dans le cas de la MEGA :
// If your 32x32 matrix has the SINGLE HEADER input,
// use this pinout: (for MEGA)
#define CLK 50 // MUST be on PORTB!
#define OE 51
#define LAT 52
#define A A0
#define B A1
#define C A2
#define D A3
Finalement, on a 5790 octets de RAM disponible.
@+
Essayez de vous mettre de côté un ATmega1284 et les petits compo qui vont bien (quartz 16MHz, etc.)
Je suis en train de faire mon code pour gérer plusieurs dalles (en grattant sur le nombre de couleurs), 16Ko de SRAM ça fait plaisir pour travailler
Sinon pour la luminosité ... sortez les lunettes de soleil ! Ça dépote ! 8)
Mon bridge photo est incapable de faire la mise au point même avec un filtre spécial pour les photos en lumière directe.
Je suis obligé de réduire artificiellement la luminosité des leds sinon ça donne du blanc à tout les coups
skywodd:
Sinon pour la luminosité ... sortez les lunettes de soleil ! Ça dépote ! 8)
Mon bridge photo est incapable de faire la mise au point même avec un filtre spécial pour les photos en lumière directe.
Je suis obligé de réduire artificiellement la luminosité des leds sinon ça donne du blanc à tout les coups
skywodd:
Essayez de vous mettre de côté un ATmega1284 et les petits compo qui vont bien (quartz 16MHz, etc.)
Je suis en train de faire mon code pour gérer plusieurs dalles (en grattant sur le nombre de couleurs), 16Ko de SRAM ça fait plaisir pour travailler
Ok, je vais mettre en place le piège à ATmega1284 en espérant en attraper un rapidement.
Pour la programmation de la bestiole, on utilisera quoi comme environnement ?
@+
icare:
Ok, je vais mettre en place le piège à ATmega1284 en espérant en attraper un rapidement.
Fait gaffe à pas de faire piquer, ça a 40 dards prêt à se planter dans ton pied au moindre faux pas
icare:
Pour la programmation de la bestiole, on utilisera quoi comme environnement ?
Pour le code d'exemple à huit couleurs je ferai avec l'ide arduino et une carte UNO (histoire de commencer léger).
Ensuite je passerai directement à quelque chose de plus marrant en AVR-C + makefile
Donc AVR Studio ou n'importe quoi d'autre qui peut faire un "make" avec AVR-GCC fera l'affaire.
Pour ma part ce sera un bon vieux notepad++ avec une console sous Windows, on change pas une équipe qui gagne
Bonjour,
J'ai fait des tests pour de l'affichage de texte défilant et j'ai constaté que glcdfont.c présentait des caractères un peu fantaisiste au-dessus du code ASCII 127.
Vous trouverez ci-joint une adaptation de glcdfont.c qui tient compte de nos origines latines.
@+
L'article sur le principe de fonctionnement des matrices + tuto sur la lib d'Adafruit arrivera ce soir sauf cas de force majeur
Concernant les matrices : les drivers de led (pour les colonnes) sont des drivers à courant constant SM16126ES (pour les lignes c'est des mosfets).
Enfin ... ça c'est d’après le datasheet en chinois qui ne donne aucun détail et dont j'ai pu traduire que le titre pour le moment.
Théoriquement même si le rafraichissement des lignes reste bloqué sur une même ligne ça ne doit pas cramer les leds de la dite ligne par excès de courant. Mais bon ça c'est la théorie, donc si vous faite du code maison dans votre coin faite gaffe à pas planter votre rafraichissement des lignes (400Hz minimum, 960Hz/ligne = 60Hz/matrice x 16 lignes c'est le top).
skywodd:
Enfin ... ça c'est d’après le datasheet en chinois qui ne donne aucun détail et dont j'ai pu traduire que le titre pour le moment.
Tu mets le pdf dans google translate et tu récupères un truc exploitable. C'est le lien " importez un document à traduire" sous la fenêtre de saisie. C'est un peu charabia mais on comprends l'essentiel.
fdufnews:
Tu mets le pdf dans google translate et tu récupères un truc exploitable. C'est le lien " importez un document à traduire" sous la fenêtre de saisie. C'est un peu charabia mais on comprends l'essentiel.
Le problème c'est que même Google arrive pas à traduire le pdf
J'utilise l'app mobile de google translate pour traduire par morceau mais c'est pas génial.