* audio utilisée sous la licence creative commons, voir youtube pour plus de détails.
Le contrôleur graphique fait trois choses :
1) accepte afficher des instructions d’un port USB (port com virtuel compatible avec les anciens plugins winamp).
2) lectures affichent des scripts depuis une carte SD. Scripts d’affichage sont faites sur un PC en utilisant le programme seq_txt (et source) joints à cette instructable.
3) décode les instructions de l’écran et les envoie à la planche de pilote.
USB
Le Bureau utilise une broche 28 PIC avec un périphérique USB. C’est super facile à mettre en oeuvre l’utilisation du pilote USB CDC de microchip. Je n’ai pas pris la peine de mettre en œuvre cette encore. Je ne prévois pas à l’utiliser et il faut un peu de ruse de la mémoire. Les photos de USB 18fX550 ont seulement 2K de ram. Le système de fichiers FAT (ci-dessous) utilise 2 tampons de 512K à lire la carte SD. Qui est tirée le supérieur 1k normalement réservé pour l’USB par le pilote de la puce électronique CDC. SO: depuis USB utilise la volonté toujours avoir la priorité (c’est à dire jouer carte SD s’arrête et attend de la table pour obtenir des instructions après l’USB branché) nous pouvons réutiliser juste les tampons mémoire FAT pour l’USB lorsqu’il est connecté. À noter également : la broche Vcc USB est effectivement connectée à une broche PIC. C’est ainsi que nous pouvons détecter un câble usb sans énumération complète (peut-être?).
Carte SD
Fichiers d’animation peuvent être faits avec le programme seq_txt.exe (windows) (et source) attaché à cette instructable. Les fichiers originaux se trouvent ici. Je n’ai pas écrit ces. Je crois qu’ils ont été créés par l’utilisateur instructables Mathieu Roncheau. Son un fichier EXE nu d’une source inconnue. Utilisation à vos propres risques (mais je n’ai eu aucun problème). Cliquez sur les cases dans ce programme pour créer des images qui affiche la table daft punk, cliquez sur ' >' pour faire un nouveau cadre. Cliquez sur le disque pour enregistrer une représentation sous forme de texte brut des images que vous avez dessiné.
Voici un exemple du fichier qui va de pair avec l’image affichée dans la capture d’écran ci-dessous :
1 2 4 8 16
Il s’agit de la représentation ascii de l’équivalent binaire de chaque colonne, au dessus de 0. La première colonne est 10000 = 1, le troisième est 00100 = 4 et ainsi de suite. Chaque ligne représente un frame, chaque ligne se termine par \r et de \n.
Ces fichiers d’animation sont copiées sur une carte SD (comme votre appareil photo numérique utilise), à l’instar de n’importe quel autre disque. Le contrôleur accepte les cartes SD dans les formats courants (FAT12/16/32) grâce à une version allégée de DOSFS par Lewin Edwards.
Le contrôleur se lit à travers tous le *.dpt (daft punk table) des fichiers dans le répertoire racine de la carte SD et « joue » de chacun d’eux. Lorsque tous les fichiers sont lus, il recommence au début.
Affichage de décodage
Peu importe comment les données pénètre dans le contrôleur, il arrive comme représentation ASCII des images bitmap. Beurk.
Nous avons besoin de convertir les données ascii à un entier réel. Dans l’exemple ci-dessus la dernière colonne (00001 en binaire) est représenté par 16 en décimal. 16 est en fait représenté par deux octets sur un PC - 1 et 6. En outre, ces octets sont encodés en ASCII, 1 est en fait 0 x 31 et 6 est en fait 0 x 36.
Un) soustraire 0 x 30 de chaque chiffre (| = 0 x 30... xor?).
B) ajouter le premier chiffre à nouvelle variable X
C) multiplier X par 10
D) ajouter le second chiffre, répéter C & D selon les besoins pour traiter tous les chiffres.
Une fois que c’est fini c’est juste une question de se taper les bits sur quelques épingles.
Code statut
Le code est juste à peine alpha. J’ai voulu obtenir le PCB et le code affiché parce que peu de gens ont écrit exprimant l’intérêt. Le pilote USB n’est pas encore implémenté et nécessite une certaine attention à l’organisation de la mémoire. Les matières grasses & SD libs travaux parfait, il lit les fichiers dans une boucle sans aucun problème, mais seulement de FAT 16 a été testé. Le code n’a pas encore été déplacé en fonctions soignées, son tout simplement « tel quel » de mon premier prototype fonctionnel.
Améliorations futures :
- Connectivité USB par le biais de CDC (port com virtuel/série).
- Construit dans la police pour le texte rendu sur USB ou en lisant des fichiers .txt de la carte SD.
- Utilisation construite en polices pour afficher les messages sans carte/BAD CARD.
- Gestion sur SD lectures et animation l’analyse des erreurs.
- Ports de l’ADC ont été laissés disponibles pour la commande de vitesse de détection basée.
- Ports de ADC/DIO laissées libres pour les commutateurs ou les potentiomètres.
- Ajoutez les instructions de boucle et vitesse pour le format de script d’animation... depuis les valeurs de bitmap sont toujours 0-31, une valeur de 32 pourrait déclencher une boucle de N fois déterminée par le prochain chiffre. Une valeur de 33 pourrait spécifier un nouveau taux de mise à jour (vitesse).
- Matériel test/puissance sur l’auto test (POST) - écrire des octets dans l’expanseur de IO et lire la sortie du dernier Conseil d’administration de la chaîne. Si octets out = octets, alors le matériel fonctionne correctement (exige le retour de boucle raccordement à dernière planche d’extenseur de sortie de la chaîne).
Présentation du matériel
PCB et circuit sont au format Cadsoft Eagle.
Firmware écrit avec compilateur MPLAB & C18.
Pour les geeks : le microcontrôleur est une broche 28 8 bit PIC18f2550 avec un périphérique USB et 2K de ram. Il fonctionne à 5 volts, car elle a besoin de 48 MHZ à faire l’interface USB (via un cristal de 20Mhz). La carte SD est 3.3V seulement logique. La carte SD a son propre + 3.3 approvisionnement d’un LM317 se nourrissent de la 5.1V partagée par le PIC et les LEDs. Ses pas strictement parfait, mais ça marche. La signalisation dans la carte SD est divisée à autour de 3V à l’aide d’un diviseur de résistance 2,2 K et K 3,3. La sortie de données de la carte vers le PIC est laissée à nue, le 3.3V haute suffit pour déclencher Vh sur le PIC. J’ai ramassé la conception de diviseur de tension à partir du manuel de compilateur MikroeBasic. Ce n’est pas un arrangement idéal, j’ai dû couper la vitesse SPI à horloge/64 avant je pouvais communiquer efficacement avec la carte SD. Cependant, c’est lire seule opération où la vitesse n’a aucune importance donc ça a marché parfaitement (et pas cher!).