ELYSIUS - Suite scientifique C.Basic
Posté le 06/01/2022 09:07
Salut à tous,
Après une petite prise en main de ma nouvelle calculatrice et, surtout, la découverte de l'incroyable module C.Basic, il est temps de vous présenter ce qui sera mon premier gros projet sur ce site : Une suite d'outils en physique/chimie !
===== 1. Tableau Périodique des Éléments =====
1. Tableau Périodique des Éléments
Il contient actuellement les informations suivantes sur l'ensemble des élements atomiques :
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Numéro atomique et symbole atomique
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Masse atomique
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Electronégativité et Valence
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Masse volumique
![](https://www.planet-casio.com/images/smileys/pointer.gif)
T° de fusion et ébullition
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Famille
En plus de l'affichage sous la forme d'un tableau, une recherche par numéro et symbole est également disponible, ainsi que la possibilité de parcourir les élements sous la forme d'une liste "NOM Symbole n°"
= 2. Recueil de Constantes Physico-Chimiques =
2. Recueil de Constantes Physico-Chimiques
Un peu comme Physium, ce programme vous propose une liste non-exhaustive des constantes utilisées en physique. Pour l'instant, les catégories suivantes sont disponibles :
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Constantes fondamentales (h, c, G, ...)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Constante physico-chimique (R, kB, ...)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Constantes électromagnétiques (ε0, µ0, ...)
==== 3. Programme de Conversion d'Unités ====
3. Programme de Conversion d'Unités
N./A.
====== 4. Analyse d'Équations Chimiques ======
4. Analyse d'Équations Chimiques
Pour l'instant, ce programme se limite à l'équilibrage d'une équation chimique. Vous entrer l'équation sous la forme d'un string et le programme vous sort les coefficients stoechiométriques résultants. Actuellement, je gère l'ensemble des éléments, les électrons et les ions positifs. Les ions négatifs devraient être gérés aussi mais apparemment j'ai commis un petite erreur de logique à ce niveau là
![](https://www.planet-casio.com/images/smileys/grin.gif)
A terme, ce programme aura pour but de fournir une analyse complête, avec un tableau d'avancement, le calcul de masse moléculaire et, si j'y arrive, le calcul de pKa, pKb, etc
=== 5. Solveur de circuits électriques/logiques ===
5. Solveur de circuits électriques/logiques
Partie la plus avancée à l'heure actuelle, ce programme permet de résoudre des circuits électriques et logiques à partir d'éditeurs graphiques !
5.1. Circuits électriques
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Générateurs de courant continu ou alternatif (sinusoïdal)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Générateurs de tension continue ou alternatif (sinusoïdale)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Résistances/Impédances
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Capacités (à partir de C et w)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Bobines à induction (à partir de L et w)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Diodes
Une fois le circuit desinné à partir de l'éditeur ci-dessus, le programme calcule les équations de Krichoff résultantes et les résouds, pour ensuite proposer les valeurs des courants passant dans chaque élément, des tensions aux bornes de chaque élément ainsi que les valeurs des circuits équivalents de Thévenin ou Norton pour l'un des éléments.
Figure 5.1 - Éditeur de circuits électriques
5.2. Circuits logiques
Dans cette partie, vous avez également accès à un éditeur de circuit (voir ci-dessous), vous permettant de définir votre circuit avec les éléments suivants :
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Point d'entrée (illimité)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Point de sortie (illimité)
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Porte logique AND
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Porte logique OR
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Porte logique NOT
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Porte logique XOR
Il est possible de définir des points de sortie intermédiaires (entre deux portes logiques par exemple) pour voir la façon dont progresse les valeurs, ainsi que d'utiliser des fonctions définies par l'utilisateur. Les calculs se faisant sous la forme de nombre entiers, il sera également possible, à terme, d'ajouter de l'arithmétique dans les circuits (+,*,<,>).
Figure 5.2 - Éditeur de circuits logiques
Une fois votre circuit validé, le programme étudie les différentes combinaisones de valeurs des points d'entrée et vous sort la (les) table(s) de vérité du circuit.
Alors, je sais, il y en a déjà beaucoup sur le site, mais mon objectif est de fournir quelque chose de vraiment poussé en terme de fonctionnalités, d'informations disponibles et, surtout, de fournir un ensemble de programmes avec un identité graphique cohérente et une expérience utilisateur la meilleure possible ! J'ai déjà pas mal d'expérience à ce sujet sur ma graphe 100+, où j'avais à l'époque codé un tableau périodique complet et un programme de conversion, mais la lenteur du Casio Basic (surtout sur G100 ...) m'avait vite conduit à laisser de côté certaines fonctionnalités. Avec la découverte de C.Basic, ça permettrait d'avoir à la fois des programmes éditables On-Calc (donc où chacun pourrait ajouter ses propres constantes, unités, ... directement dans le code) mais avec une rapidité digne d'un Add-In (car, pour des utilitaires comme ça, je pense que le gain des add-ins par rapport à C.Basic serait négligeable).
Bref, je crée ce topic pour voir si vous avez des idées de fonctionnalités pouvant servir en physique/chimie/ingéniérie et dont vous avez toujours rêvé
Et en guise d'avout-goût, je vous joins ce à quoi ressemblera le menu principal :
Fichier joint
Citer : Posté le 06/01/2022 18:34 | #
Salut ! Chouette projet.
Au cas où tu ne le savais pas, il existe un Add-in "Physium" qui fait déjà le tableau périodique et les constantes
Citer : Posté le 07/01/2022 08:38 | #
Oh oui, je sais, et pour être honnête c'est à partir de cet add-in que tout à commencé
Citer : Posté le 14/01/2022 09:20 | # |
Fichier joint
Petite mise ) jour
J'aimerais ajouter d'autres éléments de circuits, mais je ne sais pas encore trop quoi mettre ... Si quelqu'un a des suggestions, je suis preneur
Citer : Posté le 14/01/2022 09:29 | #
Wow, c'est beau ! Tu es parti dans des utilitaires de qualité. :o Je suis pas hyper à l'aise en électricité, mais sauf erreur de ma part si je te balance un circuit quelconque tu te retrouves avec une ou un système d'équa diffs... tu peux le résoudre comme ça, automatiquement ?
Citer : Posté le 14/01/2022 10:13 | #
De ce que je sais, on des équations linéaires issues des lois de Kirchhoff… Donc ça reste un système d'équations à n équations, n inconnues, donc ça se fait bien
Citer : Posté le 14/01/2022 10:20 | #
Oui, mais en plus de ces lois-là tu as les relations différentielles aux bobines et condensateurs (si je me trompe pas là aussi).
Citer : Posté le 14/01/2022 10:23 | #
Comme dit par Shadow, pour l'instant je me base uniquement sur des générateurs de même fréquence, dont on donne les valeurs de courants/tensions fourni(e)s, avec des éléments introduisant (ou non) un déphasage, mais ne modifiant le courant/la tension que de façon linéaire. Du coup, j'applique les lois de Kirchoff (loi des mailles et loi des noeuds) et je sors les tensions aux bornes de chaque composant et les courants circulant dans chaque composant
Si j'ajoute des diodes, des portes logiques, ce genre de chose, je vais devoir effectivement réfléchir à une autre façon de faire (je crois). Mais je me demande s'il ne serait pas possible, dans le cas de diodes et portes logiques, de simplement considérer la branche comme ouverte (et donc de l'ignorer). Mais ces investigations viendront plus tard, quand j'aurai déjà une version "finie" avec les élements de base
Ajouté le 14/01/2022 à 10:24 :
Oui, mais en plus de ces lois-là tu as les relations différentielles aux bobines et condensateurs (si je me trompe pas là aussi).
Non car le comportement des bobines et condensateurs peut simplement être représenter par un nombre complexe introduisant un déphasage, mais la résolution reste classique
Citer : Posté le 14/01/2022 10:29 | #
Ok, c'est plus clair merci. Pour information, si tu mets des portes logiques tu peux aisément avoir zéro ou plusieurs solutions, donc ça sonne pas comme un truc facile.
Dans ma tête le circuit RLC est régi par une équa diff d'ordre 2, et tu peux "uniquement" utiliser une impédance complexe si tu es en régime sinusoïdal, pour faire apparaître les exponentielles complexes. Mais du coup j'ai un doute ? Je dirais pas non à un petit rafraîchissement ici.
Citer : Posté le 14/01/2022 10:33 | #
Selon Wikipédia pour les circuits RLC, on peut effectivement utiliser les impédances complexes uniquement si le circuit est soumis à un régime sinusoïdal.
S'il est soumis à un échelon de tension, il faudrait utiliser des équa diff d'ordre 2
Citer : Posté le 14/01/2022 10:49 | #
Oui, au temps pour moi, j'ai oublié de préciser que dans le cas alternatif je me suis limité à un régime sinusoïdal
Citer : Posté le 14/01/2022 10:51 | #
Oook non mais d'accord c'est parfaitement raisonnable, c'est surtout moi qui avais des trous.
Fabuleux outil en tous cas ! Ça a l'air super bien parti. Ma seule suggestion peut-être serait de garder les F-Keys dans le style de l'OS puisque tu as déjà le menu principal déjà fait comme ça. Ce serait super stylé d'avoir genre un sous-menu d'applications !!
Citer : Posté le 14/01/2022 10:54 | #
Ah oui, de fait, le F-Keys sont dans le style de l'OS G100 (difficile de se défaire des bonnes vieilles habitudes
Citer : Posté le 19/01/2022 09:08 | # |
Fichier joint
Petite update : J'ai décidé d'ajouter dans mon programme de circuit un solveur de circuit logique
Comme toujours, ci-joint un aperçu de l'éditeur de circuit. Je ne suis pas super fan de mes portes logiques, je vais voir ce que je peux améliorer
Ajouté le 19/01/2022 à 09:10 :
Et pour Lephé, je sais, je dois encore mettre les F-Keyx dans le style de l'OS
Citer : Posté le 19/01/2022 09:13 | #
Je sais pas comment tu arrives à faire des éditeurs graphiques qui ont l'air si beau en si peu de temps... je testerai !
Suggestion à la con : linéarisation en formule voire méthode de Karnaugh pour obtenir une formule "pas trop grosse".
Citer : Posté le 19/01/2022 09:17 | #
Je vais aller voir ça
Et merci pour l'éditeur, mais en fait il est basé sur celui de mon "autre" solveur de circuit, c'est juste les élements qui changent, donc cette partie-ci a été facile à implémenter
Ajouté le 27/01/2022 à 13:10 :
Petite mise à jour
Je vais mettre tout ça à jour sur le topic principal et je pense que ça pourrait enfin valoir la peine d'en parler à la @RDP
Ajouté le 04/02/2022 à 14:04 :
Petite mise à jour ! Je n'ai pas beaucoup avancé dans les programmes, mais par contre j'ai avancé dans mon système de conversion G1M <-> .CSB ("Casio Basic Script"), et ajouté deux trois choses comme le fait de préprocesser par GCC
L'idée derrière tout ça est de pouvoir ensuite avoir une version d'Elysius à la carte. En gros, comme c'est un projet consistant, je n'ai pas envie de devoir forcer les gens à tout télécharger, je préfère laisser la possibilité de n'utiliser qu'une partie du programme. Du coup, j'ai ajouté cette étape de pré-processing dans l'idée de relier tout ça à des options CMake qui permettrait de générer les G1M liés seulement aux parties du programme voulue et, surtout, d'avoir un système de macro dans le code qui ne conserverait que les morceaux de codes liés à ces parties. Par exemple, dans le fichier 0~MENU__.cbs (le menu principal), j'ai ajouté des macros permettant de dessiner ou non certaines icônes du menu principal et de ne considérer que certains appuis sur les touches. Pour l'instant c'est pilôter à partir des définitions situées dans le haut du fichier, mais à terme c'est CMake qui gérera ça
Citer : Posté le 04/02/2022 14:08 | #
Aha ton archi de projet vient de se faire multiplier par 10
Il fait quelle taille le programme pour qu'il y ait besoin de le séparer en parties ?
Citer : Posté le 04/02/2022 14:31 | #
En terme de poids il n'est pas énorme, j'en suis à 35ko pour l'instant, même si ça risque d'augmenter encore dans les semaines à venir. Mais c'est surtout à niveau de la quantité de fichier que je trouve ça pratique, car j'essaie de compartimenter au maximum, et là du coup j'en suis à 45 .g1m, avec des dépendances entre certaines parties (comme l'analyseur d'équation chimique et le tableau périodique). Donc l'idée c'est surtout de pouvoir choisir ce qu'on veut à ce niveau là sans devoir s'ennuyer à transférer les 40+ fichiers.
Cependant, je dois aussi reconnaître que ces changements viennent avant tout d'un "défi" personnel
Citer : Posté le 24/01/2023 14:17 | # |
Fichier joint
Après presque un an, me voilà de retour avec pas mal d'avancées ! Bien que n'ayant plus rien posté ici, j'ai continué à ajouter des programmes/fonctionnalités, et ma suite contient maintenant les programmes suivants (déjà présent il y a un an mais beaucoup plus complets)
En plus d'avoir amélioré ces programmes, les suivant ont également été ajoutés :
Plus d'informations suivront, mais en guise de teaser je vous joint un .gif de l'application de tracé de surfaces en 3D
N'hésitez pas à commenter, ça fait toujours plaisir :P
Citer : Posté le 24/01/2023 16:47 | #
Je connais pas du tout le C.Basic, mais le moins qu'on puisse dire c'est que ta suite d'utilitaire en jette un max.
Ca a l'air vraiment "propre" et surtout simple d'utilisation, chapeau.
Dans le module de visualisation 3D, as tu codé un parser pour "déchiffrer" les équations entrées par l'utilisateur ?
Bravo à toi, cela permet vraiment d'étendre les fonctionnalités de base des machines.
Je ne sais pas si tu recherches des idées de modules supplémentaires. Si oui il y a pas mal de truc en physique / mécanique (calculs de torseurs par exemple, calculs de roulements, ...) / science des matériaux ... qui pourraient être intéressants de coder.
Tu pourrais aussi peut être proposer un "template" pour que les utilisateurs puissent coder eux-même leurs modules (et pourquoi pas les échanger).
A mon avis ça mérite largement une Revue de Projet
Citer : Posté le 24/01/2023 17:09 | #
L'idée des templates est une super idée, je vais me pencher là dessus, merci
Pour la partie équations 3D, je n'ai pas eu besoin de parler, non. Le C.Basic fonctionne comme le basic en fait, mais en beaucoup beaucoup plus rapide, et du coup j'enregistre simplement les fonctions dans des Strings et puis j'évalue leur valeur quand je veux évaluer une fonction