Bon je sèche, j'arrive à transférer mais le résultat ne ressemble pas vraiment à ce que j'envois. C'est plutôt pénible et énervant. du coup j'ai des question @zedrummer. pour envoyer une image de 128 x 32 pixels en 64 couleurs, il faut : envoyer le message &H81, &HC3, &HE7, &HB suivi de la taille du message A + B*256 + C*65536+ D*16777216, suivi de la palette (65*3 octets) suivi des 6 plans de 512 octets contenant l'index de la position de la couleur dans la palette. En sachant que l'index de la couleur
Bon jusque là je pense que j'ai bon.
Mon pb est que je ne sais pas comment les plans sont construits et comment l'image est parcourue (de haut en bas, bas en haut, de gauche a droite ou de droite à gauche) etc...
Donc un peu d'aide serait la bienvenue si vous savez bien sur.
Merci d'avance.
Red
zedrummer Modérateur
Messages : 7605 Département : 68
Sujet: Re: [WIP] ZeDMD Mar 12 Avr 2022 - 17:47
Vu que c'est moi qui ai codé la partie PC et Arduino pour le ZePinDMD de bout en bout, évidemment, je sais comment ça tourne exactement: L'image est parcourue de gauche à droite puis de haut en bas (il manque la fin de ta phrase "en sachant que l'i_ndex de la couleur...")
Dim panel(4096 * 6 / 8 + 64 * 3) As Byte ' le tableau d'octet envoyé à ZePinDMD For i = 0 To 63 ' on récupere la palette Dim color As Color = _palette.getColor(i) panel(i * 3) = color.R panel(i * 3 + 1) = color.G panel(i * 3 + 2) = color.B Next i
Dim b1, b2, b3, b4, b5, b6, b7, b8 As Byte Dim r1, r2, r3, r4, r5, r6 As Byte Dim pos = 64 * 3 'position dans le panel apres la palette
For x = 0 To 127 Step 8 For y = 0 To 31 'on récupére 8 index de couleur de palette b1 = _pixels(x + y * 128) b2 = _pixels(x + y * 128 + 1) b3 = _pixels(x + y * 128 + 2) b4 = _pixels(x + y * 128 + 3) b5 = _pixels(x + y * 128 + 4) b6 = _pixels(x + y * 128 + 5) b7 = _pixels(x + y * 128 + 6) b8 = _pixels(x + y * 128 + 7)
'on reconstruit 6 octets avec les 8 couleurs r1 = b1 << 2 r1 = r1 Or (b2 >> 4) r2 = ((b2 And 15) << 4) Or (b3 >> 2) r3 = ((b3 And 3) << 6) Or b4 r4 = (b5 << 2) Or ((b6 And 240) >> 4) r5 = ((b6 And 15) << 4) Or ((b7 And 252) >> 2) r6 = ((b7 And 3) << 6) Or b8
'on stocke les 6 octets dans les 6 plans panel(pos) = r1 panel(0 + 512 * 1 + pos) = r2 panel(0 + 512 * 2 + pos) = r3 panel(0 + 512 * 3 + pos) = r4 panel(0 + 512 * 4 + pos) = r5 panel(0 + 512 * 5 + pos) = r6 pos = pos + 1 Next y Next x
serial.Write(New Byte() {&H81, &HC3, &HE7, &HF}, 0, 4) 'on envoi un check hand histoire de voir si cela conmunique jsute pour le debug à virer serial.Write(New Byte() {&H81, &HC3, &HE7, &HB}, 0, 4) 'on envoi le message attention image en palette 64 couleurs serial.Write(New Byte() {&HC0, &HC, &H0, &H0}, 0, 4) 'on envoi la taille du message serial.Write(panel, 0, 3072 + 64 * 3) 'on envoi le message
je comprend pas
zedrummer Modérateur
Messages : 7605 Département : 68
Sujet: Re: [WIP] ZeDMD Mar 12 Avr 2022 - 18:14
Je suis en train de te rédiger la réponse avec le code corrigé, tu mets tes pixels bout à bout au lieu de faire des plans de bits
Tu ne construis pas des plans de bit, mais tu mets tes pixels bout à bout. Alors je ne suis pas une flèche en basic, mais je ferais ainsi dans tes calculs de b1... et r1...:
Code:
'on récupére 8 index de couleur de palette dim b(8) as byte for i=0 to 7 b(i) = _pixels(x + y * 128+i) next i 'on reconstruit 6 octets avec les 8 couleurs dim r(6) as byte dim maskpos as byte dim maskpix as byte maskpos=1 for i=0 to 5 r(i)=0 maskpix=1 for j=0 to 7 if (b(j)&maskpos)>0 then r(i)=r(i)+maskpix maskpix<<1 next j maskpos<<1 next i
Pas sûr que ça marche à 100%, mais ça me semble juste
Je suis dessus, je tiens à rester sur mes ESP32 pour l'instant. Ce qui m'embête en priorité, c'est le transfert des données via USB qui n'est pas fiable, je suis en train de voir pour passer à du BT
ok je connais pas la différence entre tout ça, je suis sure que tu trouvera un truc qui marche bien.
arnoz
Messages : 420 Département : drome
Sujet: Re: [WIP] ZeDMD Jeu 14 Avr 2022 - 13:41
Si tu en es la Zed, ça vaudrais pas le coup de jeter un oeil du coté du wifi plutôt avec le browserstream, perso je m'amuse un peu avec ça marche pas mal et niveau débit ça devrait aller. de plus il suffit que le cab ai une connec wifi ou même rj45 et wifi de la bow au cul pour que ça marche, c'est plus courant que le BT dans nos cab... dans le dmddevice.ini :
Code:
[browserstream]
; if enabled, stream to your browser in your LAN enabled = false port = 9090
zedrummer Modérateur
Messages : 7605 Département : 68
Sujet: Re: [WIP] ZeDMD Jeu 14 Avr 2022 - 16:24
@arnoz Le problème, c'est que je ne suis pas sûr que le Wifi supporte plusieurs connexions en même temps, et si l'ordi a le wifi, il est forcément connecté à internet déjà, non? Sinon, je suis 100% d'accord, le wifi est plus stable et bien plus rapide, j'y avais pensé, mais j'ai abandonné à cause de ce que j'ai écrit au dessus
tu entends quoi par "plusieurs connexions en même temps" ? Pareil, je comprends pas pourquoi tu me parles d'internet ? Quand je parlais de box internet, c'etait juste pour dire que si le PC est dépourvue de wifi, on peut passer via le reseau de la maison, donc dans 90% des cas la BOX internet, qui rebalance tout en wifi. C'est juste pour utiliser le wifi de l'ESP qui n'aura qu'a se connecter au réseau de la maison. Suis je assez clair ? Chez moi ça marche nickel avec tablette et téléphone pour tester...
si je peux me permettre un truc autonome sera bien plus pratique non ?
zedrummer Modérateur
Messages : 7605 Département : 68
Sujet: Re: [WIP] ZeDMD Jeu 14 Avr 2022 - 19:06
Tu as raison aussi, c'est pour ça que j'étais parti sur une connexion directe du PC sur l'ESP32 via BT (sachant qu'une clé usb BT vaut 2€50 sur AliExpress) ou une connexion Wifi directe du PC vers l'ESP
Je suis l'avancement de temps en temps et je trouve le projet et le résultat terrible ! Bravo ! J'ai vu la vidéo mise à jour sur le premier post et c'est parfait !
J'ai pas tout compris pourquoi tu veux passer par autre chose que l'USB puisque ça a l'air de fonctionner, mais je suis d'accord avec Benoît33 : il faut que ce soit autonome et pas avoir à passer par le WIFI de la maison : il y a des gens qui éteignent leur box, d'autres qui captent mal dans certaines pièces, d'autres encore qui déplacent leur Cab en expo etc etc...
Encore bravo pour ce projet
arnoz
Messages : 420 Département : drome
Sujet: Re: [WIP] ZeDMD Ven 15 Avr 2022 - 7:30
Le fait de passer en BT ou WIFI c'est exactement pareil, c'est juste la couche 1 qui change, on peut etre aussi autonome avec les deux...
zedrummer Modérateur
Messages : 7605 Département : 68
Sujet: Re: [WIP] ZeDMD Ven 15 Avr 2022 - 7:36
Ce n'est pas ce qu'ils disent @arnoz, ils disent que passer par une box ou en connexion directe, ça change tout. En WiFi, si tu passes par un dns extérieur type box ou routeur, tu n'es plus autonome. C'est pour ça que je parlais de possibilité d'avoir plusieurs connexions avec un seul dispositif WiFi: il faudrait quand même une connexion DIRECTE, sans passer par la box/le routeur entre l'ESP32 et le PC, alors que ce dernier peut être déjà connecté à la box pour avoir internet.
bein si la personne as pas de box ou autre, tu passes en wifi direct, sinon via ta box, c'est du réseau de base apres, c'est pas le plus dur à adapter ça.... y'a pas de DNS ou autre à gérer, tu balance ta tramme DMD dans ton réseau, et l'ESP est connecté à ce réseau (via la box, PC direct ou autre c'est pareil) récup l'info...
comment ça pas le même ? ta tramme est envoyée "dans le réseau", apres pour la connection tu as moultes bases de script pour gerer la connec wifi (en stand alone access point, ou connection à un réseau existant, un peu comme dans WLED)