<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bnguyen1</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bnguyen1"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Bnguyen1"/>
		<updated>2026-05-14T10:23:25Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=90579</id>
		<title>IMA3/IMA4 2021/2023 P2</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=90579"/>
				<updated>2023-02-15T15:11:41Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Résumé &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique. Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. &lt;br /&gt;
&lt;br /&gt;
D'un point de vue utilisation, cette bibliothèque vise à décrire dans un code C, un assemblage de composants logiques interconnectés (ports, bascule, registre...) comportant des entrées/sorties (bouton, LED, afficheur...). &lt;br /&gt;
&lt;br /&gt;
Ensuite, à l'exécution, le programme simule le comportement de ces composants et affiche une interface avec les différentes entrées/sorties pour l'utilisateur. &lt;br /&gt;
&lt;br /&gt;
En fin de projet, cette bibliothèque vise à être couplée avec un émulateur existant d'un microprocesseur de type Arduino (ou Avr8)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Présentation Générale&amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple_d'un_circuit_électronique_à_une_seule_sortie.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Contexte'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le monde des Systèmes Embarqués, les portes logiques sont la base de l'électronique numérique. &lt;br /&gt;
&lt;br /&gt;
Les applications de ces portes logiques sont infinies. Avec ces « briques » essentielles, on peut construire une multitude de circuits numériques allant d'un simple additionneur, à un processeur complexe &lt;br /&gt;
En fait, de nombreux systèmes qu'on utilise quotidiennement, tels que le PC, téléviseur, téléphone portable, etc., ont des milliards de portes logiques.&lt;br /&gt;
&lt;br /&gt;
== ''Objectif'' ==&lt;br /&gt;
&lt;br /&gt;
Le but consiste en la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. En effet, le projet est de développer une bibliothèque en langage informatique (Python) comportant des composants logiques contenant des entrées/sorties. &lt;br /&gt;
&lt;br /&gt;
Pour être plus précis, projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Description'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''1. Créer un circuit logique:&lt;br /&gt;
[[Fichier:CompoCircuitWiki.png]]&lt;br /&gt;
&lt;br /&gt;
Exemple basique de la composition d'un circuit logique via la librairie Simutech associé à la librairie graphique Gtkmm.&lt;br /&gt;
&lt;br /&gt;
 1.1. Initialiser les entrées, sorties et les composants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin d'initialiser les entrées et sorties du circuit logique, nous avons besoins de le créer et de récupérer son pointeur comme indiqué sur l'exemple ci-dessus.&lt;br /&gt;
&lt;br /&gt;
Ainsi, la syntaxe à utiliser est la suivante : &amp;lt;code&amp;gt;Object *nomComposant = new Object()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; est le nom du composant à créer (par exemple Button, And ou Led), &amp;lt;code&amp;gt;nomComposant&amp;lt;/code&amp;gt; est le nom que l'on souhaite attribuer à notre composant.&lt;br /&gt;
&lt;br /&gt;
'''Attention !''' C'est un pointeur d'objet qu'il nous faut, donc ne pas oublier '''l'astérisque (*)''' après la déclaration d'&amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Et enfin on peut assigner la création de l'objet avec la fonctionnalité &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; du langage C++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, vous n'êtes pas obligé de mettre des parenthèses à &amp;lt;code&amp;gt;... = new Object&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 1.2. Réaliser les liaisons entre les composants logiques&lt;br /&gt;
&lt;br /&gt;
Afin de lier les composants que l'on vient de créer, nous entrons dans la deuxième partie en dessous du commentaire &amp;lt;code&amp;gt;//Affectation of the sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y'a deux façons de lier les composants entre eux :&lt;br /&gt;
&lt;br /&gt;
Soit comme dans l'exemple ci-dessus, qui suit la syntaxe suivante : &amp;lt;code&amp;gt;nomComposant-&amp;gt;add_sources(nomAutreComposant)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ou l'on peut suivre une autre syntaxe : &amp;lt;code&amp;gt;(*nomComposant).add_sources(nomAutreComposant)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, la fonction &amp;lt;code&amp;gt;add_sources&amp;lt;/code&amp;gt; est une fonction surchargée, donc on peut ajouter plusieurs composant en même temps plutôt que de répéter x fois l'étape add_sources. Cependant la librairie de dispose que de 4 surcharges de cette fonction, on ne peut seulement ajouter 4 sources en même temps au maximum. La syntaxe est la suivante : &amp;lt;code&amp;gt;add_sources(nomComposant1, nomComposant2, ..., nomComposant4)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 1.3. Lier les entrées et sorties à la fenêtre&lt;br /&gt;
&lt;br /&gt;
Si lors la conception de votre circuit logique vous avez créer des entrées ainsi que des sorties telles que des boutons et des leds, il faut les lier à la fenêtre graphique maintenue par la librarie '''Gtkmm'''.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on utilise la fonction &amp;lt;code&amp;gt;add_input&amp;lt;/code&amp;gt; spécifique aux composants d'entrées et de sorties.&lt;br /&gt;
&lt;br /&gt;
La syntaxe pour utiliser cette fonction est la suivante : &amp;lt;code&amp;gt;nomComposant-&amp;gt;add_input(mainGrid, posX, posY)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où '''posX''' et '''posY''' sont les positions de ces composants sur la fenêtre.&lt;br /&gt;
&lt;br /&gt;
 '''2. Simuler le circuit logique:&lt;br /&gt;
&lt;br /&gt;
Notre librairie fonctionne, pour le moment, sur '''code::Blocks''' afin de nous faciliter la compilation des fichiers nécessaires pour la création d'un exécutable qui représente actuellement notre circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire d'ajouter ces deux lignes d'options lors de la compilation si l'on veut pouvoir compiler le programme avec la librairie '''Gtkmm''' : &amp;lt;code&amp;gt;`pkg-config gtkmm-3.0 --libs` `pkg-config gtk+-3.0 --libs`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.1. Charger un circuit logique&lt;br /&gt;
&lt;br /&gt;
Afin de charger un circuit logique, pour le moment, il suffit de récupérer le constructeur '''Fenetre''' (la méthode nommée &amp;lt;code&amp;gt;Fenetre::Fenetre()&amp;lt;/code&amp;gt;) d'un fichier fenetre.cpp et de le mettre à la place du constructeur '''Fenetre''' de notre programme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.2. Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous suffit qu'à build (sur code::Blocks) notre exécutable et de le lancer pour voir apparaître notre fenêtre et un terminal de débogage si l'on a crée une application console plutôt qu'une application GUI sur code::Blocks.&lt;br /&gt;
&lt;br /&gt;
 2.3. Résultat&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RésultatCircuit.png]]&lt;br /&gt;
&lt;br /&gt;
 '''3. Téléversement vers un émulateur ou un µ-Processeur Arduino: &lt;br /&gt;
&lt;br /&gt;
'''A venir'''&lt;br /&gt;
&lt;br /&gt;
 3.1. Lien entre la bibliothèque et le logiciel Arduino ou l’émulateur de circuit logique.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Équipements &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 Ordinateur de bureau&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Réalisations et résultats &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Bilan &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Gestion de projet &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 [https://docs.google.com/spreadsheets/d/1ydkccyK6gsxyToyrZNI2zCU4jU-hJD0H7tyHaqBBWJ0/edit?usp=sharing Diagramme de Gantt]&lt;br /&gt;
 [https://github.com/BleM3e/Simutech Github - Dépôt du code source de la librairie]&lt;br /&gt;
 [https://github.com/BleM3e/ConverterLogisimCircuit Github - Dépôt du code source du convertisseur]&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=90006</id>
		<title>IMA3/IMA4 2021/2023 P2</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=90006"/>
				<updated>2023-01-04T19:15:02Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Résumé &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique. Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. &lt;br /&gt;
&lt;br /&gt;
D'un point de vue utilisation, cette bibliothèque vise à décrire dans un code C, un assemblage de composants logiques interconnectés (ports, bascule, registre...) comportant des entrées/sorties (bouton, LED, afficheur...). &lt;br /&gt;
&lt;br /&gt;
Ensuite, à l'exécution, le programme simule le comportement de ces composants et affiche une interface avec les différentes entrées/sorties pour l'utilisateur. &lt;br /&gt;
&lt;br /&gt;
En fin de projet, cette bibliothèque vise à être couplée avec un émulateur existant d'un microprocesseur de type Arduino (ou Avr8)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Présentation Générale&amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple_d'un_circuit_électronique_à_une_seule_sortie.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Contexte'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le monde des Systèmes Embarqués, les portes logiques sont la base de l'électronique numérique. &lt;br /&gt;
&lt;br /&gt;
Les applications de ces portes logiques sont infinies. Avec ces « briques » essentielles, on peut construire une multitude de circuits numériques allant d'un simple additionneur, à un processeur complexe &lt;br /&gt;
En fait, de nombreux systèmes qu'on utilise quotidiennement, tels que le PC, téléviseur, téléphone portable, etc., ont des milliards de portes logiques.&lt;br /&gt;
&lt;br /&gt;
== ''Objectif'' ==&lt;br /&gt;
&lt;br /&gt;
Le but consiste en la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. En effet, le projet est de développer une bibliothèque en langage informatique (Python) comportant des composants logiques contenant des entrées/sorties. &lt;br /&gt;
&lt;br /&gt;
Pour être plus précis, projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Description'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''1. Créer un circuit logique:&lt;br /&gt;
[[Fichier:CompoCircuitWiki.png]]&lt;br /&gt;
&lt;br /&gt;
Exemple basique de la composition d'un circuit logique via la librairie Simutech associé à la librairie graphique Gtkmm.&lt;br /&gt;
&lt;br /&gt;
 1.1. Initialiser les entrées, sorties et les composants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin d'initialiser les entrées et sorties du circuit logique, nous avons besoins de le créer et de récupérer son pointeur comme indiqué sur l'exemple ci-dessus.&lt;br /&gt;
&lt;br /&gt;
Ainsi, la syntaxe à utiliser est la suivante : &amp;lt;code&amp;gt;Object *nomComposant = new Object()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; est le nom du composant à créer (par exemple Button, And ou Led), &amp;lt;code&amp;gt;nomComposant&amp;lt;/code&amp;gt; est le nom que l'on souhaite attribuer à notre composant.&lt;br /&gt;
&lt;br /&gt;
'''Attention !''' C'est un pointeur d'objet qu'il nous faut, donc ne pas oublier '''l'astérisque (*)''' après la déclaration d'&amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Et enfin on peut assigner la création de l'objet avec la fonctionnalité &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; du langage C++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, vous n'êtes pas obligé de mettre des parenthèses à &amp;lt;code&amp;gt;... = new Object&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 1.2. Réaliser les liaisons entre les composants logiques&lt;br /&gt;
&lt;br /&gt;
Afin de lier les composants que l'on vient de créer, nous entrons dans la deuxième partie en dessous du commentaire &amp;lt;code&amp;gt;//Affectation of the sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y'a deux façons de lier les composants entre eux :&lt;br /&gt;
&lt;br /&gt;
Soit comme dans l'exemple ci-dessus, qui suit la syntaxe suivante : &amp;lt;code&amp;gt;nomComposant-&amp;gt;add_sources(nomAutreComposant)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ou l'on peut suivre une autre syntaxe : &amp;lt;code&amp;gt;(*nomComposant).add_sources(nomAutreComposant)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, la fonction &amp;lt;code&amp;gt;add_sources&amp;lt;/code&amp;gt; est une fonction surchargée, donc on peut ajouter plusieurs composant en même temps plutôt que de répéter x fois l'étape add_sources. Cependant la librairie de dispose que de 4 surcharges de cette fonction, on ne peut seulement ajouter 4 sources en même temps au maximum. La syntaxe est la suivante : &amp;lt;code&amp;gt;add_sources(nomComposant1, nomComposant2, ..., nomComposant4)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 1.3. Lier les entrées et sorties à la fenêtre&lt;br /&gt;
&lt;br /&gt;
Si lors la conception de votre circuit logique vous avez créer des entrées ainsi que des sorties telles que des boutons et des leds, il faut les lier à la fenêtre graphique maintenue par la librarie '''Gtkmm'''.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on utilise la fonction &amp;lt;code&amp;gt;add_input&amp;lt;/code&amp;gt; spécifique aux composants d'entrées et de sorties.&lt;br /&gt;
&lt;br /&gt;
La syntaxe pour utiliser cette fonction est la suivante : &amp;lt;code&amp;gt;nomComposant-&amp;gt;add_input(mainGrid, posX, posY)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où '''posX''' et '''posY''' sont les positions de ces composants sur la fenêtre.&lt;br /&gt;
&lt;br /&gt;
 '''2. Simuler le circuit logique:&lt;br /&gt;
&lt;br /&gt;
Notre librairie fonctionne, pour le moment, sur '''code::Blocks''' afin de nous faciliter la compilation des fichiers nécessaires pour la création d'un exécutable qui représente actuellement notre circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire d'ajouter ces deux lignes d'options lors de la compilation si l'on veut pouvoir compiler le programme avec la librairie '''Gtkmm''' : &amp;lt;code&amp;gt;`pkg-config gtkmm-3.0 --libs` `pkg-config gtk+-3.0 --libs`&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.1. Charger un circuit logique&lt;br /&gt;
&lt;br /&gt;
Afin de charger un circuit logique, pour le moment, il suffit de récupérer le constructeur '''Fenetre''' (la méthode nommée &amp;lt;code&amp;gt;Fenetre::Fenetre()&amp;lt;/code&amp;gt;) d'un fichier fenetre.cpp et de le mettre à la place du constructeur '''Fenetre''' de notre programme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.2. Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous suffit qu'à build (sur code::Blocks) notre exécutable et de le lancer pour voir apparaître notre fenêtre et un terminal de débogage si l'on a crée une application console plutôt qu'une application GUI sur code::Blocks.&lt;br /&gt;
&lt;br /&gt;
 2.3. Résultat&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RésultatCircuit.png]]&lt;br /&gt;
&lt;br /&gt;
 '''3. Téléversement vers un émulateur ou un µ-Processeur Arduino: &lt;br /&gt;
&lt;br /&gt;
'''A venir'''&lt;br /&gt;
&lt;br /&gt;
 3.1. Lien entre la bibliothèque et le logiciel Arduino ou l’émulateur de circuit logique.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Équipements &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 Ordinateur de bureau&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Réalisations et résultats &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Bilan &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Gestion de projet &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 [https://docs.google.com/spreadsheets/d/1ydkccyK6gsxyToyrZNI2zCU4jU-hJD0H7tyHaqBBWJ0/edit?usp=sharing Diagramme de Gantt]&lt;br /&gt;
 [https://github.com/BleM3e/Simutech Github - Dépôt du code source]&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=89939</id>
		<title>IMA3/IMA4 2021/2023 P2</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=89939"/>
				<updated>2023-01-04T18:33:40Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : /*  Présentation Générale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Résumé &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique. Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. &lt;br /&gt;
&lt;br /&gt;
D'un point de vue utilisation, cette bibliothèque vise à décrire dans un code C, un assemblage de composants logiques interconnectés (ports, bascule, registre...) comportant des entrées/sorties (bouton, LED, afficheur...). &lt;br /&gt;
&lt;br /&gt;
Ensuite, à l'exécution, le programme simule le comportement de ces composants et affiche une interface avec les différentes entrées/sorties pour l'utilisateur. &lt;br /&gt;
&lt;br /&gt;
En fin de projet, cette bibliothèque vise à être couplée avec un émulateur existant d'un microprocesseur de type Arduino (ou Avr8)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Présentation Générale&amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple_d'un_circuit_électronique_à_une_seule_sortie.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Contexte'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le monde des Systèmes Embarqués, les portes logiques sont la base de l'électronique numérique. &lt;br /&gt;
&lt;br /&gt;
Les applications de ces portes logiques sont infinies. Avec ces « briques » essentielles, on peut construire une multitude de circuits numériques allant d'un simple additionneur, à un processeur complexe &lt;br /&gt;
En fait, de nombreux systèmes qu'on utilise quotidiennement, tels que le PC, téléviseur, téléphone portable, etc., ont des milliards de portes logiques.&lt;br /&gt;
&lt;br /&gt;
== ''Objectif'' ==&lt;br /&gt;
&lt;br /&gt;
Le but consiste en la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. En effet, le projet est de développer une bibliothèque en langage informatique (Python) comportant des composants logiques contenant des entrées/sorties. &lt;br /&gt;
&lt;br /&gt;
Pour être plus précis, projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Description'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''1. Créer un circuit logique:&lt;br /&gt;
[[Fichier:CompoCircuitWiki.png]]&lt;br /&gt;
&lt;br /&gt;
Exemple basique de la composition d'un circuit logique via la librairie Simutech associé à la librairie graphique Gtkmm.&lt;br /&gt;
&lt;br /&gt;
 1.1. Initialiser les entrées, sorties et les composants:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afin d'initialiser les entrées et sorties du circuit logique, nous avons besoins de le créer et de récupérer son pointeur comme indiqué sur l'exemple ci-dessus.&lt;br /&gt;
&lt;br /&gt;
Ainsi, la syntaxe à utiliser est la suivante : '''Object *nomComposant = new Object()'''&lt;br /&gt;
&lt;br /&gt;
où '''Object''' est le nom du composant à créer (par exemple Button, And ou Led), '''nomComposant''' est le nom que l'on souhaite attribuer à notre composant.&lt;br /&gt;
&lt;br /&gt;
'''Attention !''' C'est un pointeur d'objet qu'il nous faut, donc ne pas oublier '''l'astérisque (*)''' après la déclaration d''''Object'''.&lt;br /&gt;
&lt;br /&gt;
Et enfin on peut assigner la création de l'objet avec la fonctionnalité '''new''' du langage C++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, vous n'êtes pas obligé de mettre des parenthèses à '''... = new Object'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 1.2. Réaliser les liaisons entre les composants logiques&lt;br /&gt;
&lt;br /&gt;
Afin de lier les composants que l'on vient de créer, nous entrons dans la deuxième partie en dessous du commentaire ''//Affectation of the sources''.&lt;br /&gt;
&lt;br /&gt;
Il y'a deux façons de lier les composants entre eux :&lt;br /&gt;
&lt;br /&gt;
Soit comme dans l'exemple ci-dessus, qui suit la syntaxe suivante : '''nomComposant-&amp;gt;add_sources(nomAutreComposant)'''&lt;br /&gt;
&lt;br /&gt;
Ou l'on peut suivre une autre syntaxe : '''(*nomComposant).add_sources(nomAutreComposant)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, la fonction '''add_sources''' est une fonction surchargée, donc on peut ajouter plusieurs composant en même temps plutôt que de répéter x fois l'étape add_sources. Cependant la librairie de dispose que de 4 surcharges de cette fonction, on ne peut seulement ajouter 4 sources en même temps au maximum. La syntaxe est la suivante : '''add_sources(nomComposant1, nomComposant2, ..., nomComposant4)'''.&lt;br /&gt;
&lt;br /&gt;
 1.3. Lier les entrées et sorties à la fenêtre&lt;br /&gt;
&lt;br /&gt;
Si lors la conception de votre circuit logique vous avez créer des entrées ainsi que des sorties telles que des boutons et des leds, il faut les lier à la fenêtre graphique maintenue par la librarie '''Gtkmm'''.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on utilise la fonction '''add_input''' spécifique aux composants d'entrées et de sorties.&lt;br /&gt;
&lt;br /&gt;
La syntaxe pour utiliser cette fonction est la suivante : '''nomComposant-&amp;gt;add_input(mainGrid, posX, posY)'''&lt;br /&gt;
&lt;br /&gt;
où '''posX''' et '''posY''' sont les positions de ces composants sur la fenêtre.&lt;br /&gt;
&lt;br /&gt;
 '''2. Simuler le circuit logique:&lt;br /&gt;
&lt;br /&gt;
Notre librairie fonctionne, pour le moment, sur '''code::Blocks''' afin de nous faciliter la compilation des fichiers nécessaires pour la création d'un exécutable qui représente actuellement notre circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire d'ajouter ces deux lignes d'options lors de la compilation si l'on veut pouvoir compiler le programme avec la librairie '''Gtkmm''' : `pkg-config gtkmm-3.0 --libs` `pkg-config gtk+-3.0 --libs`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.1. Charger un circuit logique&lt;br /&gt;
&lt;br /&gt;
Afin de charger un circuit logique, pour le moment, il suffit de récupérer le constructeur '''Fenetre''' (la méthode nommée '''Fenetre::Fenetre()''') d'un fichier fenetre.cpp et de le mettre à la place du constructeur '''Fenetre''' de notre programme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.2. Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il nous suffit qu'à build (sur code::Blocks) notre exécutable et de le lancer pour voir apparaître notre fenêtre et un terminal de débogage si l'on a crée une application console plutôt qu'une application GUI sur code::Blocks.&lt;br /&gt;
&lt;br /&gt;
 2.3. Résultat&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RésultatCircuit.png]]&lt;br /&gt;
&lt;br /&gt;
 '''3. Téléversement vers un émulateur ou un µ-Processeur Arduino: &lt;br /&gt;
&lt;br /&gt;
'''A venir'''&lt;br /&gt;
&lt;br /&gt;
 3.1. Lien entre la bibliothèque et le logiciel Arduino ou l’émulateur de circuit logique.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Équipements &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 Ordinateur de bureau&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Réalisations et résultats &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Bilan &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Gestion de projet &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 [https://docs.google.com/spreadsheets/d/1ydkccyK6gsxyToyrZNI2zCU4jU-hJD0H7tyHaqBBWJ0/edit?usp=sharing Diagramme de Gantt]&lt;br /&gt;
 [https://github.com/BleM3e/Simutech Github - Dépôt du code source]&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:R%C3%A9sultatCircuit.png&amp;diff=89937</id>
		<title>Fichier:RésultatCircuit.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:R%C3%A9sultatCircuit.png&amp;diff=89937"/>
				<updated>2023-01-04T18:33:24Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : Résultat final du tuto sur la création d'un circuit logique via la librairie Simutech&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Résultat final du tuto sur la création d'un circuit logique via la librairie Simutech&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:CompoCircuitWiki.png&amp;diff=89864</id>
		<title>Fichier:CompoCircuitWiki.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:CompoCircuitWiki.png&amp;diff=89864"/>
				<updated>2023-01-04T17:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : Composition d'un circuit logique via la librairie Simutech&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Composition d'un circuit logique via la librairie Simutech&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=89194</id>
		<title>IMA3/IMA4 2021/2023 P2</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA3/IMA4_2021/2023_P2&amp;diff=89194"/>
				<updated>2022-11-18T11:51:40Z</updated>
		
		<summary type="html">&lt;p&gt;Bnguyen1 : /*  Gestion de projet  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Résumé &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique. Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. &lt;br /&gt;
&lt;br /&gt;
D'un point de vue utilisation, cette bibliothèque vise à décrire dans un code C, un assemblage de composants logiques interconnectés (ports, bascule, registre...) comportant des entrées/sorties (bouton, LED, afficheur...). &lt;br /&gt;
&lt;br /&gt;
Ensuite, à l'exécution, le programme simule le comportement de ces composants et affiche une interface avec les différentes entrées/sorties pour l'utilisateur. &lt;br /&gt;
&lt;br /&gt;
En fin de projet, cette bibliothèque vise à être couplée avec un émulateur existant d'un microprocesseur de type Arduino (ou Avr8)&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Présentation Générale&amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Exemple_d'un_circuit_électronique_à_une_seule_sortie.jpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Contexte'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le monde des Systèmes Embarqués, les portes logiques sont la base de l'électronique numérique. &lt;br /&gt;
&lt;br /&gt;
Les applications de ces portes logiques sont infinies. Avec ces « briques » essentielles, on peut construire une multitude de circuits numériques allant d'un simple additionneur, à un processeur complexe &lt;br /&gt;
En fait, de nombreux systèmes qu'on utilise quotidiennement, tels que le PC, téléviseur, téléphone portable, etc., ont des milliards de portes logiques.&lt;br /&gt;
&lt;br /&gt;
== ''Objectif'' ==&lt;br /&gt;
&lt;br /&gt;
Le but consiste en la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur. En effet, le projet est de développer une bibliothèque en langage informatique (Python) comportant des composants logiques contenant des entrées/sorties. &lt;br /&gt;
&lt;br /&gt;
Pour être plus précis, projet consiste à réaliser une bibliothèque logicielle pour la simulation d'un circuit logique.&lt;br /&gt;
&lt;br /&gt;
Il est destiné à la conception d'un outil d'émulation de circuit logique combiné à un microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''Description'' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''1. Créer un circuit logique:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 1.1. Initialiser les entrées et sorties:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les entrées seront capables de s'adapter aux besoins de l’utilisateur, afin que celui-ci soit capable d’observer les changements d’état des sorties.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 1.2. Réaliser les liaisons entre les composants logiques&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''2. Simuler le circuit logique:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.1. Charger un circuit logique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sélectionner une configuration de circuit logique prédéfinie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2.2. Lancer la simulation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rendre l'exécution du circuit logique dynamique &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''3. Téléversement vers un émulateur ou un µ-Processeur Arduino: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 3.1. Lien entre la bibliothèque et le logiciel Arduino ou l’émulateur de circuit logique.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Équipements &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 Ordinateur de bureau&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Réalisations et résultats &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Bilan &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;div class=&amp;quot;mcwiki-header&amp;quot; style=&amp;quot;border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #2eb2fe; vertical-align: top; width: 98%;&amp;quot;&amp;gt; Gestion de projet &amp;lt;/div&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
 [https://docs.google.com/spreadsheets/d/1ydkccyK6gsxyToyrZNI2zCU4jU-hJD0H7tyHaqBBWJ0/edit?usp=sharing Diagramme de Gantt]&lt;br /&gt;
 [https://github.com/BleM3e/Simutech Github - Dépôt du code source]&lt;/div&gt;</summary>
		<author><name>Bnguyen1</name></author>	</entry>

	</feed>