Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Les circuits
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Les circuits

Posté le 22/10/2018 13:47

Slt, je cherche à créer un petit programme qui simule le fonctionnement de circuits électriques qu'il serait possible de créer au préalable. Ma question est donc, comment ou plutôt comment fonctionne l'algo qui permet de faire progresser un signal dans les câbles et surtout comment gérer les ramifications du circuit: diviser le signal et faire qu'il poursuive sa route dans deux câbles différents ou plus si possible. Si vous avez une piste pour m'aider
Merci et a+ sur PC


Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 24/10/2018 17:34 | #


Ben non pas trop, je vois comment je fais parcourir un signal dans un câble: en regardant autour de la position ou je suis et si il trouve un câble ou autre élément il va dessus... mais je vois pas comment, quand j'arrive à un noeud, diviser le signal...
Alexot Hors ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 24/10/2018 17:47 | #


Il y a un automate cellulaire : wireworld qui fait ce que tu cherches. Par contre, le problème avec les automates cellulaires, c'est qu'ils sont lent à exécuter en basic car il faut actualiser chaque case pour faire avancer la simulation d'un pas. C'est d'ailleurs à peu près ce que tu décris ici
Disperseur a écrit :

Perso, je pense comme ça:
L'écran texte est composé de 21 colonnes et 7 lignes. Tu crée une matrice de la taille de l'écran donc de 7*21 (ordre de saisie Y,X) et tu y place tes éléments électroniques sous forme de nombres. Par exemple, un câble non alimenté pourrait se noter "10" et un câble alimenté "11" ainsi qu'une lampe éteinte "20" et une lampe allumée "21" etc. De la sorte, on va lire la matrice (toute ses cases) et si une case "câble" valant "10", donc étant non alimentée se trouve à coté d'une case "câble" (ou interrupteur par exemple) valant "11", donc étant alimentée, on alimente la case sur laquelle on se trouve et ainsi de suite. Cette description est assez succincte donc n'hésitez pas à demander des précisions.

Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 24/10/2018 19:02 | #


Ben en fait je le vois exactement comme ça, le defis est de creer une matrice avec les coordonnées de chaque élément et sont état ainsi qu'une matrice qui affiche le circuit.. et les mettres en relation..
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 24/10/2018 21:35 | #


Ben non pas trop, je vois comment je fais parcourir un signal dans un câble: en regardant autour de la position ou je suis et si il trouve un câble ou autre élément il va dessus...

C'est ça, en fait quand ton courant arrive sur un noeud (dipôle ou ramification), il regarde s'il y a des arêtes qui mènent à d'autres noeuds, et s'il y en a il envoie du courant dedans.

mais je vois pas comment, quand j'arrive à un noeud, diviser le signal...

Une ramification, c'est quoi ? C'est un noeud qui possède plusieurs arêtes sortantes, c'est-à-dire qu'il y a plusieurs arêtes qui partent du noeud pour aller ailleurs (il faut que le graphe soit orienté car le courant ne passe que dans un sens). Quand tu arrives sur un noeud, tu envoies du courant dans toutes les arêtes sortantes, donc en particulier ton courant se coupe en deux.

Je te ferais bien un dessin, mais il est trop tard... désolé. x_x

WireWorld ne prend pas du tout la même approche, c'est plutôt le genre de choses qu'on fait pour de l'électronique.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 08:47 | #


Lephenixnoir a écrit :
c'est plutôt le genre de choses qu'on fait pour de l'électronique.

Wireworld ?
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 25/10/2018 09:27 | #


Oui, wireworld pour l'électronique, mais pas pour des circuits électrique (tu connais la différence ? )

Sinon pour Wireworld, j'ai fais un programme Basic qui simule ça durant la nuit, je le post ce weekend si tu veux
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 10:10 | #


Mais heuuu c'etait mon idée
Mais comment tu gere chaque point rt le déplacement du courant. .. avec for ?
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 25/10/2018 13:02 | #


Ça dépend ce que tu entends par for...

En fait, je crée une matrice de 21*7, dans laquelle je stock des 0 (rien), 1 (cable), 2 (tête) et 3 (queu).

Ensuite je crée une seconde matrice de 21*7 qui stocke en (i,j) le nombre de 2 dans les huit case autour de de la case (i,j) dans la première matrice.

Enfin, je parcours la matrice 1 et je remplace en suivant les règles de l'automate (càd 0->0, 1->2 si mat 2 (i,j) egal un ou deux, 1->1 sinon, 2->3, 3->1). J'afiche, puis je recommence. Et c'est le fait de faire avancer d'une génération l'automate qui fait avancer le courant.

Bien évidemment, l'implantation est un poil plus complexe, et on peut utiliser une chaîne de caractères au lieu d'une matrice, mais l'idée reste la même.

Sinon pour ta question principale, je pense qu'effectivement, Lephenixnoir à raison pour l'utilisation de graphe.
Manolo Hors ligne Membre Points: 910 Défis: 13 Message

Citer : Posté le 25/10/2018 13:16 | #


Bonjour!

j'ai pas lu les réponses par manque de temps désolé,

mais pour ma part,
j'utilise une technique qui consiste a faire deux points,
A et B (A pour le signal positif et B pour le signal négatif),
donc quatre variables (Ax, Bx, Ay et By) qui parte de la batterie et qui se déplacent si il y a un pixel allumé
( j'utilise le PxlTest)
et qui peuve se multiplier Ect...
tu peux aussi le faire avec une variable,
(que pour le signal positif) mais ça seras moins rapide.

(je sais, j'explique mal.)

au revoir et bonne continuation.

cordialement,

Manolo
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 14:10 | #


Mais le coeur du problème ce sont les noeuds ! Comment diviser le courant au niveau du noeud..?
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 25/10/2018 14:11 | #


En fonction de la résistance, tu prend un graphe avec des branches pondéré
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 25/10/2018 14:14 | #


Ah mais ça y est, j'ai compris le problème de Disperseur.

Tu peux avoir plusieurs bouts de courant qui évoluent en même temps. Tu peux pas juste faire une boucle avec à chaque tour de boucle, « le » courant qui avance. À chaque tour de boucle, tu dois prendre tous les courants et les faire avancer d'un pas. Quelque chose comme...

While 1
/* Pour chaque courant qui se balade dans le circuit */
For 1→I To C
  /* Déplacer le courant no. I dont les données sont dans une liste */
Next
WhileEnd

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Manolo Hors ligne Membre Points: 910 Défis: 13 Message

Citer : Posté le 25/10/2018 15:10 | #


Disperseur a écrit :
Mais le coeur du problème ce sont les noeuds ! Comment diviser le courant au niveau du noeud..?


avec des listes.
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 16:52 | #


En mettan dans une liste chaque division du signal ?
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 25/10/2018 16:58 | #


Ou bien une liste avec dans chaque élément une division du signal. Ça dépend si tu as beaucoup d'information à stocker pour chaque signal.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 18:52 | #


Ben electrique donc 0 ou 1..
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 25/10/2018 18:53 | #


Sa position, aussi.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 19:06 | #


Du coup une matrice.. de trois lignes et d'autant de colones que de signaux distincts..
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 25/10/2018 19:10 | #


C'est une bonne idée, oui. Tu vois comment t'y prendre ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/10/2018 19:15 | #


Ben je lis la matrice qui contient mon circuit, repere les positions de depart de signaux, puis je regarde si je peux propager chaque signal dans une direction et quand le signal se divise je mets les coordonnées de la ramification dans la matrice qui contient chaque position de chaque signal..
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 25/10/2018 19:22 | #


C'est bien ça, oui. Tu veux partir plutôt sur un graphe (électricité) ou sur une matrice (électronique à la wireworld) pour ton circuit ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 226 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