Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » ELYSIUS - Suite scientifique C.Basic
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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 :
Numéro atomique et symbole atomique
Masse atomique
Electronégativité et Valence
Masse volumique
T° de fusion et ébullition
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°"

   75%



= 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 :
Constantes fondamentales (h, c, G, ...)
Constante physico-chimique (R, kB, ...)
Constantes électromagnétiques (ε0, µ0, ...)

   40%



==== 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à
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

   40%



=== 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
Générateurs de courant continu ou alternatif (sinusoïdal)
Générateurs de tension continue ou alternatif (sinusoïdale)
Résistances/Impédances
Capacités (à partir de C et w)
Bobines à induction (à partir de L et w)
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 :
Point d'entrée (illimité)
Point de sortie (illimité)
Porte logique AND
Porte logique OR
Porte logique NOT
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.

   50%



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 :




   20%


Fichier joint


1, 2 Suivante
Ninestars Hors ligne Membre Points: 2456 Défis: 24 Message

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
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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é Avec ma Graph100+, au début, je n'avais pas de câble pour la connecter à l'ordi et comme Physium me faisait envie aux vues des mes cours de sciences, mon premier vrai gros programme sur ma calculatrice était un tableau periodic. Et puis j'ai trouvé un jour un câble dans une brocante et j'ai enfin pu tester cet add-in, mais j'ai toujours trouvé qu'il manquait des informations et des constantes, d'où l'idée de continuer à en coder un moi-même Idée renforcée par l'achat de ma nouvelle calculatrice (HS pour l'instant ...) et la découverte de C.Basic
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

Citer : Posté le 14/01/2022 09:20 | # | Fichier joint


Petite mise ) jour J'ai bien avancé sur le module de résolution de circuit électrique (quelque chose qui, à mon gout, manque cruellement dans les programmes dispo pour Casio). Mon programme gère en principe tous types de circuits basiques (DC/AC, résistance/capacité/solénoïdes et groupements en paralèlle/série), avec un éditeur graphique permettant de dessiner soi-même son circuit avant de le résoudre ! Je vous joins un petit aperçu de l'éditeur, le reste de l'interface étant encore en phase de peaufinage



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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 ?
Shadow15510 Hors ligne Administrateur Points: 5424 Défis: 16 Message

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 (Note que je n'ai étudié que des composants linéaires, je suppose qu'avec des composants non linéaires, les équations perdent leur linéarité)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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).
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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 :
Lephenixnoir a écrit :
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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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.

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

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.
FlamingKite Hors ligne Membre Points: 516 Défis: 9 Message

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
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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 En fait c'est le seul système qu'on a mis en pratique dans nos cours/TP, du coup l'idée de proposer d'autres types de régimes ne m'a même pas effleuré
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 !!
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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 ). Mais en effet, ça donnerait un côté plus consistant de reproduire le style "moderne"
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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 Vous éditez le circuit de la même façon que pour un circuit électrique classique, et le programme vous sort alors une matrice avec les tables de vérité de chaque élément de sortie en fonction des valeurs en entrée ! Pour l'instant il gère le And, le Or et le Not. Je pense ajouter le Nand et le Nor, voir le Xor. D'autres suggestions ?

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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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".
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

Citer : Posté le 19/01/2022 09:17 | #


Je vais aller voir ça Pour l'instant je ne donne pas la formule, je résouds le circuit par un système de graphe. Mais ça pourrait être une chose intéressante, en effet. Surtout si j'arrive à simplifier au maximum la formule obtenue.

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 J'ai ajouté pas mal de constantes dans la partie ... "Constantes" (), le tableau périodique est présent avec les infos nécessaires sur tous les éléments et, enfin, j'ai fini de coder l'interprêteur de string pour le programme d'équilibrage des réactions chimiques !

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
Lephenixnoir Hors ligne Administrateur Points: 22888 Défis: 149 Message

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 ?
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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)
Un tableau périodique complet
Une librairie des constantes principales en physique, math et chimie
Un programme de conversion d'unités, d'angles, de coordonnées et de bases
Un programme d'équilibrage d'équation chimique
Un programme de résolution de circuits électriques.

En plus d'avoir amélioré ces programmes, les suivant ont également été ajoutés :
Un programme de résolution de cycle thermodynamique (on entre les données que l'on connaît (T,P,V,...) avant et après transformation, le type de transformation, le fluide, et le programme se charge de calculer toutes les inconnues
Un programme de visualisation 3D : surfaces (équation Z(x,y) et équations paramétriques) et formes (cube, sphère, plan, cylindre, pyramide, ...) !
Un programme de dessin d'images

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
Slyvtt Hors ligne Community Manager Points: 991 Défis: 0 Message

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
------------------------------------------------------------------
Le monde est dangereux à vivre ! Non pas tant à cause de ceux qui font le mal, mais à cause de ceux qui regardent et laissent faire.
-------------------------------------------------------------------
Albert Einstein
Mathématicien, Physicien, Scientifique (1879 - 1955)
Brickcities Hors ligne Membre Points: 91 Défis: 9 Message

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
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2023 | Il y a 56 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd