Les développeurs voulaient! Nous recherchons des développeurs React et C ++ talentueux pour aider ce projet. Consultez le code et si vous êtes intéressé, contactez [email protected].

Davepl, 19/09/2021
NightDiversTrip est un package de code source pour la construction d'un programme flash que vous téléchargez sur le microcontrôleur ESP32. Il peut conduire jusqu'à 8 canaux de LED de style WS2812B connectés aux épingles de puce et afficher des couleurs et des motifs de fantaisie et des conceptions. Il existe de nombreux effets intégrés qui peuvent être configurés pour être affichés sur la bande LED, y compris les effets audio / musique / battement réactifs pour les modules équipés d'un microphone. Il peut également recevoir éventuellement des données de couleur pour les LED dans un format simple compressé (ou non compressé) sur une prise TCP / IP ouverte par défaut sur le port 49152. L'ESP32 maintient son horloge en synchronisation à l'aide de NTP.
Nighteriver peut conduire à la fois des bandes de style WS2812B et des matrices de style Hub75.
Plus récemment, un installateur Web a été ajouté au projet avec lequel la plupart des projets de nuit peuvent être flashé sur des appareils pris en charge, en utilisant rien d'autre qu'un navigateur Web. Veuillez vous référer à la section suivante si c'est ainsi que vous souhaitez commencer.
Une application Web a été mise à disposition qui peut être utilisée pour installer la majorité des projets de nuit sur les appareils pris en charge. Cela vous permettra de flasher rapidement un projet sur votre appareil ESP32, de le connecter au WiFi et de commencer à l'utiliser sans avoir à travailler avec le code source.
Notez que l'installateur nécessite un navigateur qui prend en charge Web Serial. Au moment de la rédaction du moment de la rédaction, les navigateurs qui incluent un tel soutien sont des versions récentes de Chrome, Edge et Opera.
Veuillez suivre ces étapes pour flash et, si elles sont prises en charge, configurez le WiFi sur votre appareil:
Connectez votre appareil à votre ordinateur avec un câble USB.
Accédez à l'URL suivante dans votre navigateur: https://plummerssoftwarellc.github.io/nightdriversTrip. Il devrait ensuite afficher un écran qui ressemble à ceci: 
Sélectionnez votre appareil (comme "M5Stickc Plus") dans la liste déroulante. Une deuxième liste déroulante avec des projets pris en charge sur cet appareil apparaîtra alors.
Sélectionnez le projet que vous souhaitez flasher dans la deuxième liste déroulante. Lorsque vous le faites, un bouton de connexion apparaît en dessous. Notez que l'étiquette de chaque projet comprend une indication des fonctionnalités clés activées dans la construction en question. La légende de chacune des lettres de fonctionnalité est présentée sous le chaland-down du projet.
Cliquez sur le bouton Connecter. Une boîte de dialogue vous demande de sélectionner un port série. Selon votre système, il peut en montrer qu'une seule ou une liste. Dans le cas où plusieurs sont affichés, ce sera généralement celui qui est clairement appelé "Port série USB (COMN)". Sélectionnez le port correct et cliquez sur Connecter.
Une nouvelle boîte de dialogue s'affichera. L'une des options qu'il propose est "Installer <Prold> pour <Pemarment>". Cliquez sur cette option.
Une boîte de dialogue montrera vous demandant si vous souhaitez effacer l'appareil. Vérifiez la case si c'est la première fois que vous flashez NightDriverstrip sur votre appareil, ou si vous souhaitez flasher une installation propre. Cela réinitialisera tous les paramètres de leurs valeurs par défaut. Notez que la configuration WiFi sera effacée si vous choisissez d'effacer ou non. Cliquez sur Suivant.
Il vous sera maintenant demandé de confirmer que vous souhaitez flasher l'appareil. Cliquez sur Installer.
Une boîte de dialogue apparaîtra vous montrant la progression de l'installation. Habituellement, cela prendra environ 2 minutes. Une fois le clignotement terminé, cliquez sur Suivant.
À ce stade, quatre choses peuvent arriver:
Si votre appareil ne prend pas en charge le WiFi, vous pouvez passer au point 12.
Dans la boîte de dialogue Informations sur la connexion WiFi, sélectionnez ou entrez votre SSID et votre mot de passe. Cliquez sur Connexion. Dans certains cas, la boîte de dialogue de connexion WiFi redevienne après une connexion réussie réellement établie. Dans ce cas, cliquez sur Skip. Il est également possible qu'un temps mort soit signalé alors que le WiFi s'est réellement connecté avec succès. Dans ce cas, cliquez en arrière.
Maintenant, une boîte de dialogue apparaîtra qui montrera les détails du projet que vous avez flashé. Il fournira également des options pour flasher à nouveau et afficher les journaux et la console de l'appareil. En outre, si votre appareil prend en charge les options WiFi, des options seront disponibles pour visiter l'application Web de l'appareil (à condition que le serveur Web à disque soit également activé) ou modifier les paramètres WiFi. Notez que si vous avez flashé une image de périphérique qui inclut le serveur Web / application Web, il peut prendre une minute environ pour venir une fois que la connexion au réseau WiFi a été établie.
Si vous souhaitez modifier la configuration WiFi sur un périphérique déjà flashé, utilisez les étapes suivantes:
Connectez votre appareil à votre ordinateur avec un câble USB.
Accédez à l'URL suivante dans votre navigateur: https://plummerssoftwarellc.github.io/nightdriversTrip.
Sélectionnez votre appareil (comme "M5Stickc Plus") dans la liste déroulante. Une deuxième liste déroulante avec des projets pris en charge sur cet appareil apparaîtra alors.
Sélectionnez le projet que vous avez flashé plus tôt, dans le deuxième déroulement. Lorsque vous le faites, un bouton de connexion apparaît en dessous.
Cliquez sur le bouton Connecter. Une boîte de dialogue vous demande de sélectionner un port série. Selon votre système, il peut en montrer qu'une seule ou une liste. Dans le cas où plusieurs sont affichés, ce sera généralement celui qui est clairement appelé "Port série USB (COMN)". Sélectionnez le port correct et cliquez sur Connecter.
Une nouvelle boîte de dialogue s'affichera. S'il n'affiche pas encore les options "Connecter au Wi-Fi" ou "Modifier Wi-Fi", ouvrez la fenêtre "Logs & Console" et attendez que les lignes de journal apparaissent. Fermez ensuite la fenêtre en cliquant sur Retour. Lorsque l'option "Connecter au Wi-Fi" ou "Modifier Wi-Fi" est affichée, cliquez dessus.
Dans la boîte de dialogue Informations sur la connexion WiFi, sélectionnez ou entrez votre SSID et votre mot de passe. Cliquez sur Connexion. Dans certains cas, la boîte de dialogue de connexion WiFi redevienne après une connexion réussie réellement établie. Dans ce cas, cliquez sur Skip. Il est également possible qu'un temps mort soit signalé alors que le WiFi s'est réellement connecté avec succès. Dans ce cas, cliquez en arrière.
Les images incluses dans l'installateur sont construites en utilisant l'état actuel du code source de ce référentiel. S'il y a quelque chose que vous souhaitez changer (la configuration de) le projet que vous souhaitez utiliser, il est temps de passer à l'étape suivante.
Étant donné que l'étape suivante nécessitera assez rapidement une certaine connaissance de la structure de l'application qu'est NightDriverstrip, cela peut être le bon moment pour lire l'introduction à la base de code Nightriversrip.
Sur les appareils avec WiFi, NightDriversTrip peut démarrer un serveur Web qui héberge l'interface utilisateur Web qui fait partie du projet. Il peut être utilisé pour visualiser et modifier quel effet est en cours d'exécution et obtenir des statistiques de performances en direct de l'appareil.
Lorsque l'appareil est démarré avec le serveur Web activé, l'interface utilisateur Web est accessible en ouvrant un navigateur Web et en tapant l'adresse IP de votre appareil dans la barre d'adresse. Une fois chargés, les icônes à gauche de l'écran peuvent être utilisées pour basculer les vues à l'intérieur de l'interface utilisateur.
Plus d'informations sur l'interface utilisateur Web peuvent être trouvées dans son propre Readme.md.
Outre l'interface utilisateur Web, le serveur Web publie également une API de type repos. Entre autres, une gamme de paramètres de configuration peut être lue et modifiée à l'aide. Plus d'informations sur l'API sont disponibles dans REST_API.md.
Je vous recommande de faire ce qui suit:
DEMO . Certains pointeurs sur ce qui est nécessaire pour le faire peut être trouvé ci-dessous.globals.h ou plateforme.ini comme WiFi et Webserver. Voir la fonctionnalité définit ci-dessous. Assurez-vous que votre WiFi SSID et votre mot de passe sont définis dans Inclut / Secrets.h, qui peut être créé en faisant une copie de include / secrets.example.h.
Veuillez vous assurer de les définir dans Inclut / Secrets.h, pas dans Inclut / Secrets.example.h!
Activer le wifi en définissant le activer_wifi Define à 1 dans Globals.h.
# define ENABLE_WIFI 1Cela peut également être configuré dans le fichier PlatformoIo.ini, comme décrit dans la fonction définit la section ci-dessous.
Ceux-ci définissent permettent les principales caractéristiques de Nightedriverstrip. Définissez-les dans Build_Flags de Platformo.ini ou dans Globals.h. Remarque: Certains définissent spécifiques à la carte, ceci est noté ci-dessous.
| Caractéristique définir | Description |
|---|---|
| Activer_wifi | Connectez-vous au WiFi |
| Entrant_wifi_enabled | Accepter les données et les commandes des couleurs entrantes |
| Activer_webserver | Activez le serveur Web interne |
| Time_before_local | Combien de secondes avant que la lampe ne se déroule et ne montre que le contenu local |
| Activer_ntp | Définissez l'horloge à partir du Web |
| Activer_ota | Accepter les mises à jour du flash aérien |
| Spécifique au matériel | Description | Cartes soutenues |
|---|---|---|
| Use_m5display | Activer l'affichage des statistiques sur l'écran LCD intégré | M5stick-c et m5stick-c Plus |
| Use_oled | Activer l'affichage des statistiques sur OLED intégré | Kit wifi heltec 32 |
| Use_lcd | Activer l'affichage des statistiques sur l'écran LCD ILI9341 externe | Wrover32 |
| Use_tftspi | Activer l'affichage des statistiques sur l'écran LCD TTGO externe | ESP32DEV |
| Activer_audio | Écoutez l'audio du microphone et traitez-le | M5stick-c et m5stick-c Plus |
| Activer_remote | Télécommande IR | Nécessite du matériel IR |
Exemple dans PlatformoIo.ini (préfixez les drapeaux avec -D , par exemple ENABLE_WIFI=1 devient -DENABLE_WIFI=1 )
build_flags = - DENABLE_WIFI =1Exemple dans Globals.h:
# define ENABLE_WIFI 1 Pour ajouter de nouveaux effets, vous:
LEDStripEffect (ou d'une classe d'effet existante) et les bonnes choses se produisent dans la seule fonction importante, Draw() . Découvrez ce que font les effets intégrés, mais en bref, vous dessinez essentiellement dans un tableau d'objets CRGB qui représentent chacun un triplet de couleur 24 bits. Une fois que vous avez terminé, le tableau CRGB est envoyé aux LED et on vous demande immédiatement la trame suivante. Votre méthode de tirage devrait prendre quelque part environ 30 ms, idéalement, et doit delay() pour dormir pour l'équilibre si c'est plus rapide. Vous pouvez dessiner à plusieurs reprises dans une boucle occupée, mais ce n'est pas nécessaire.#define pour votre classe d'effet aux effects.h . Chaque classe d'effet n'a besoin qu'un seul numéro d'effet et veuillez vous assurer que le numéro que vous choisissez n'est pas déjà utilisé par une autre classe d'effet! Plus d'informations sur le lien entre une classe d'effet et son numéro d'effet associé peuvent être trouvées en effects.h .LoadEffectFactories() en effects.cpp (dans votre section de configuration de build, comme DEMO ). La macro ADD_EFFECT() attend le numéro d'effet et le nom de type de votre nouvel effet en tant que paramètres. Tous les paramètres supplémentaires sont transmis au constructeur de l'effet lors de sa création. Il existe une instance Global EffectManager qui crée d'abord la table d'effet à partir d'un fichier JSON sur SPIFFS, s'il est présent. Ensuite, il ajoute tous les autres effets enregistrés dans LoadEffectFactories() mais non inclus dans le fichier JSON. Il tourne ensuite entre ces effets à un taux contrôlé par DEFAULT_EFFECT_INTERVAL . Les effets ne sont pas informés lorsqu'ils deviennent actifs ou non, on leur demande simplement de dessiner en cas de besoin.
Chaque canal de LED a une instance LEDStripGfx qui lui est associée. _GFX[0] est le LEDStripGfx associé à LED_PIN0 , et ainsi de suite. Vous pouvez obtenir le tampon LED de PIN0 en appelant _GFX[0]->leds() , et il contiendra _GFX[0]->GetLEDCount Pixels. Vous pouvez dessiner dans le tampon sans jamais toucher les octets bruts en appelant fill_solid , fill_rainbow , setPixel et autres fonctions de dessin.
La configuration la plus simple, DEMO , suppose que vous avez une bande de mètres de 144 LED et une alimentation connectée à votre ESP32. Il démarre, trouve une seule RainbowFillEffect dans la fonction LoadEffectFactories() et appelle à plusieurs reprises sa méthode Draw() pour mettre à jour le tableau CRGB avant de l'envoyer aux LED. Si vous travaillez correctement, il doit dessiner une palette arc-en-ciel de défilement sur votre bande LED.
Cette configuration la plus simple, appelée ici simplement «démo», est fournie par un environnement de construction spécifique à la carte. La liste de ces environnements peut être vue en exécutant «Python3 Tools / show_envs.py», qui indiquerait au lecteur que, à ce jour, les variations spécifiques au matériel de «démo» incluent:
Ces types de build peuvent être choisis par l'argument «-e» à PIO ou dans une option de menu à l'intérieur du code PLATTformIO IDE / VS.
Le tableau des effets est persisté dans un fichier JSON sur SPIFFS à intervalles réguliers, pour conserver l'état des effets (et en fait la liste des effets) à travers les redémarrages. Ceci est en grande partie en préparation des futures mises à jour de NightDriversTrip, où la composition de la configuration des effets individuels des effets des effets peut être modifiée à l'aide de l'application Web de l'appareil. Les points de terminaison de l'API pour faciliter cela sont déjà disponibles et prêts à l'emploi (voir l'interface utilisateur et l'API de l'appareil ci-dessous.)
Cela fait qu'un remplacement de SerializeToJSON() et un constructeur désérialisant correspondant doivent être fournis pour les effets qui nécessitent (ou souhaitent) persister plus que les propriétés qui sont (DE) sérialisées de / vers JSON par LEDStripEffect par défaut.
Tout au long du projet, la bibliothèque utilisée pour la manipulation JSON et la série (DE) est Arduinojson. Entre autres, cela signifie que:
Conformément à la convention dans Arduinojson, les fonctions SerializeToJSON() doivent retourner true sauf lorsqu'une fonction Arduinojson (comme JsonObject::set() ) renvoie false pour indiquer qu'il manquait de mémoire tampon. Toute fonction SerializeToJSON() renvoyant false déclenchera une augmentation du tampon de sérialisation global et un redémarrage du processus de sérialisation.
La mémoire requise pour l'opération de sérialisation d'une instance de classe individuelle doit être réservée au préalable , en créant l'un ou l'autre:
StaticJsonDocument< tampon de tampon >() qui réserve la mémoire sur la pile. Ceci peut être utilisé pour les petites tailles de tampon (inférieures à 1024 octets) uniquement.AllocatedJsonDocument( taille du tampon ) qui réserve la mémoire sur le tas.La quantité de mémoire requise dépend du nombre, du type et du contenu des propriétés sérialisées (DE), et est en fait un peu un jeu de devinettes - ce qui signifie que les valeurs que vous verrez dans la base de code sont également des suppositions éduquées. Lorsque les propriétés qui sont sérialisées ne parviennent pas à apparaître dans le JSON généré, il est raisonnable de supposer que le processus de sérialisation est à court de mémoire tampon et que la mémoire tampon doit donc être augmentée.
Pour mieux comprendre les détails liés à la sérialisation JSON (DE), vous pouvez envisager de jeter un coup d'œil aux didacticiels respectifs dans la section "First Contact" de la documentation Arduinojson.
Par exemple, pendant le développement, la liste des effets (JSON-Persisted) sur votre carte peut se synchroniser avec les effets que vous ajoutez en effet.cpp (dans la fonction LoadEffectFactories() spécifiquement) à un point qu'il devient désordonné ou ennuyeux. Si cela se produit, vous pouvez réinitialiser la liste des effets sur la carte par défaut, via le réseau. Pour que cela fonctionne, le conseil d'administration doit être connecté au WiFi et le serveur Web doit être exécuté.
La réinitialisation peut être effectuée en effectuant une publication de formulaire HTTP sur http: // <Pemarque_ip> / réinitialiser avec les champs suivants SET: EffectsConfig = 1 et Board = 1. Sur les systèmes avec une boucle "régulière" disponible, la commande suivante doit faire l'affaire:
curl -d " effectsConfig=1&board=1 " -X POST http:// < device_IP > /resetIl est possible que la possibilité d'effectuer cette réinitialisation soit ajoutée dans une future mise à jour de l'interface utilisateur Web.
En outre, il est également possible de "ignorer" la liste des effets persistants et de charger toujours la liste des effets standard au démarrage. La documentation sur la façon de procéder est disponible vers le haut de la fonction LoadEffectFactories() susmentionnée.
Si vous développez un effet qui nécessite que les données soient tirées d'Internet, vous pouvez enregistrer une fonction de lecteur de réseau avec la classe NetworkReader , qui est disponible via la référence globale g_ptrSystem->NetworkReader() . Vous pouvez utiliser les PatternSubscribers ou PatternWeather Effets comme sources d'inspiration. PatternStocks tire des devis en direct (délai de 15 minutes) à partir d'un serveur privé.
Le projet peut être construit à l'aide de la plate-forme. Il y a une plate-forme IDE disponible, qui est construite sur le code Visual Studio. Il y a les outils de plate-forme en ligne de commande de commande. Ils peuvent également être installés seuls si vous préférez ne pas utiliser l'IDE.
Pour compiler l'application frontale (qui fait partie de chaque version de plate-forme), une version récente de NodeJs avec NPM est requise. Ils peuvent être téléchargés à partir du site Web de Nodejs. Les instructions pour les moyens prises en charge d'installer NodeJs y sont également disponibles. Veuillez les lire et les suivre.
Notez que l'installation de NodeJS à l'aide du gestionnaire de package par défaut de votre système d'exploitation / Distribution est susceptible de vous laisser une version NodeJS beaucoup plus ancienne que vous avez besoin.
L'application a été testée sur le nœud version 16.15.1 et 18.17.1 avec la version 8.13.2 du NPM; Les versions plus récentes devraient également fonctionner en principe.
Pour plus de détails sur le travail avec l'application Frontend, voir Site / Readme.md.
Lorsque l'IDE ou le noyau est installé, NightDriversTrip peut être construit à partir d'un shell de commande en entrant dans le répertoire du projet / référentiel et en émettant la commande suivante:
pio run -e demo
Cela créera la configuration demo .
Si vous obtenez une erreur que
pion'est pas trouvée, vous devrez peut-être l'ajouter à votre chemin.
Pour créer toutes les configurations disponibles, utilisez la commande suivante (cela peut prendre un certain temps):
pio run
Pour construire et télécharger le système de fichiers qui peut être utilisé par les effets (bien qu'il ne le fasse actuellement), vous devrez créer et télécharger l'image SPIFFS sur Flash de votre carte à l'aide de Platformo. Vous pouvez le faire à l'aide de l'interface utilisateur Platformo ou à l'aide de l'outil de ligne de commande pio :
pio run --target buildfs --environment <project name>
pio run --target uploadfs --environment <project name>
Ce référentiel comprend un certain nombre de scripts pour effectuer diverses tâches pendant ou après les projets de construction. Ils sont inclus dans le répertoire tools . Veuillez noter que les scripts prévoient être démarrés à partir du répertoire principal du projet. Donc, en utilisant:
tools/buddybuild.shAu lieu de:
cd tools
./buddybuild.shÉcrivez quelque chose de simple à envoyer des données de couleur à la prise. Le format est très basique: quel canal, combien de LED vous dessinez, quand les dessiner et les données de couleur elle-même. Vous pouvez envoyer des données non compressées avec un horodatage zéro tant que vous envoyez l'en-tête correct avant vos données, ce qui est très simple. Les données avec un horodatage zéro seront simplement dessinées immédiatement sans tampon.
| Octets | FONCTION | |
|---|---|---|
| 0, 1 | Commandant | (Réglez-le sur 3, qui est WIFI_COMMAND_PIXELDATA64 ) |
| 2, 3 | Canalaire | (Réglez-le sur 1 pour un seul canal, bien que 0 fonctionne aussi pour des raisons historiques) |
| 4 - 7 | Longueur | (Nombre de PIXELS 24 bits en cours de réglage) |
| 8 - 15 | Secondes | (Réglez-le sur 0) |
| 16 - 24 | Micros | (Réglez-le sur 0) |
| 25+ | RVB | (Données de couleur RVB 24 bits, un par PIXEL spécifié en longueur ci-dessus) |
S'il est construit avec ENABLE_WIFI et INCOMING_WIFI_ENABLED , si la puce est en mesure d'obtenir une connexion WiFi et une adresse DHCP, elle ouvrira une prise sur le port 49152 et attendre les paquets formés comme décrit ci-dessus.
Générez une série de 24 images par seconde (ou 30 si moins de 500 LED) et définissez l'horodatage sur "maintenant" plus 1/2 la seconde. Envoyez-les à la puce sur WiFi et ils seront tirés 1/2 seconde à partir de maintenant dans un flux constant, car les horodatages que vous avez donnés à chaque paquet sont dû.
Divulgation complète: En tant qu'associé Amazon, Plumerssoftwarellc gagne la commission des achats éligibles. Il n'est pas ajouté au prix d'achat et n'augmente pas du tout votre coût. De plus, tous les bénéfices de 2021 du canal de garage de Dave, qui comprennent ces ventes, iront au UW Autism Center.
Plutôt que de produire un ensemble complexe de directives, voici ce que j'espère que la collaboration open source apportera au projet: que les gens ajouteront des fonctionnalités importantes et corrigeront les défauts et les lacunes dans le code. Lorsqu'ils ajoutent des fonctionnalités, ils le feront d'une manière cohérente avec la façon dont les choses se font dans le code existant. Ils résistent à l'envie de reconstituer et de réécrire tout dans leur propre image et de mettre leurs efforts pour maximiser l'amélioration fonctionnelle tout en réduisant le thrash du code source et le changement.
Considérons la dénomination incohérente, qui doit être fixée. Certains sont CamelCase, certains sont pszhungariens, et ainsi de suite, selon la source. Je préférerais que tous aient été mis à jour vers un seul TBD standard. Jusqu'à ce que le TBD soit déterminé, je me penche vers la norme Win32.
Lorsque vous travaillez dans une fonction, travaillez dans le style de la fonction. Lorsque vous travaillez sur une classe, travaillez dans le style de la classe. Lorsque vous travaillez sur un fichier, travaillez dans le style du fichier. Si ceux-ci sont incohérents, faites tout ce qui minimise les modifications. Les changements stylistiques ne doivent être introduits qu'après la discussion dans le groupe et doivent généralement être propriétaires de ce changement de style dans l'ensemble du projet.
Ensuite, considérons #define s pour contrôler la construction. Il peut y avoir des façons mieux et plus élégantes de faire les choses. Il pourrait y avoir des plates-formes de configuration entières. Mais je préférerais rester simple. Et je définis le plus simple pour être "le moins qu'un programmeur C ++ expérimenté doit apprendre avant d'être constructif avec le code en question". Je ne veux pas apprendre une nouvelle bibliothèque de classe si je peux l'éviter!
Une durée de vie de codage m'a appris à se tromper du côté de la simplicité, alors veuillez ne pas introduire des constructions de modèles variadiques à moins qu'ils ne rétrécissent manifestement le code source. Tout ce qui augmente la complexité et la longueur du code devrait être suspect.
Ajoutez ce que vous voulez et / ou avez besoin de réaliser vos rêves de LED. Réparez mes bévues. Combler les lacunes évidentes dans mes connaissances. Tout ce qui a le plus clignotant pour le moins de bits, obtenez mon vote. Vous n'obtenez que tellement de clignotements cool supplémentaires pour chaque octet de code et de programme. Ce rendement est mesuré dans BlinkenPerbit, la quantité de génialité clignotante Le code ajoute divisé par l'impact sur la source (et le binaire).
Pour reproduire, construisez le projet Mesmerizer. Ensuite, supprimez Pio / Build_Cache et construisez à nouveau, en prenant le temps pour la deuxième version.
ASUS 7995WX [96-Core, 192-Thread] -> [Davepl, 02/11/2024] 20,73 secondes
HP Z6 G5A, 7995WX, 128 Go [96-Core, 192-Thread] -> [Davepl 11/29/2023] 25.270 secondes
3970x, 128 Go [32-core, 64-thread] Windows11 + WSL2 / Ubuntu02.04lts -> [Davepl 11/29/2023] 34.292 secondes
Mac M1 Ultra Studio [10-core, 20-thread] -> [Davepl 11/29/2023] 48.368 secondes
Il est temps de créer la configuration du spectre ( pio run -e spectrum ). Suppose une version propre après que tout ait été installé et téléchargé.
AMD 3970 32-cores, 128 Go, RAID SSD -> [Davepl 09/19/2021] 12,93 secondes (en cours d'exécution sous WSL)
AMD 5950X 16-cores, 64 Go, SSD -> [Davepl 09/19/2021] 16,90 secondes
Apple MacBook Pro M1 Max, 8 + 2 cœurs, 64 Go, 4TB SSD -> [Davepl 15/12/2021] 20,90 secondes
Apple MacBook Air M2, 16 Go, 256 Go SSD -> [Vaaski 28/02/2023] 56.17 secondes
MacBook Pro 2020, 8 cœurs 2,4 GHz i9, 64 Go, 4 To SSD -> [Davepl 09/19/2021] 34,09 secondes
Mac Mini, 4 cœurs perf, 16 Go -> [Davepl 09/19/2021] 39,06 secondes
Mac Pro, 6 cœurs, 3,5 GHz, 64 Go, 1 To SSD -> [Davepl 09/19/2021] 48,42 secondes
Xeon Silver, 20 cœurs, 2,1 GHz, 16 Go VM -> [Davepl 10/10/2022] 53.11 secondes
Raspberry Pi 4, Ubuntu LTS 64 bits, 4 Core, 4 Go -> [Davepl 09/23/2021] 6 min 25 secondes
Jetson Nano 2G, 4 Core ARM A57 -> [Davepl 10/04/2021] 2 min 56 secondes