<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wikigeii.iut-troyes.univ-reims.fr//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjacquot</id>
		<title>troyesGEII - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wikigeii.iut-troyes.univ-reims.fr//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjacquot"/>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Sp%C3%A9cial:Contributions/Bjacquot"/>
		<updated>2026-04-15T01:23:12Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.1</generator>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:PiPico&amp;diff=20939</id>
		<title>Cours:PiPico</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:PiPico&amp;diff=20939"/>
				<updated>2026-04-09T08:48:47Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* configuration cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Brochage =&lt;br /&gt;
&lt;br /&gt;
https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf&lt;br /&gt;
&lt;br /&gt;
=utilisation de l'ide arduino=&lt;br /&gt;
&lt;br /&gt;
https://github.com/earlephilhower/arduino-pico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=non recommandé : QtCreator=&lt;br /&gt;
&lt;br /&gt;
== Création assistée d'un projet ==&lt;br /&gt;
&lt;br /&gt;
À l'aide de ''pico_project.py'' :&lt;br /&gt;
* ''git clone https://github.com/raspberrypi/pico-project-generator.git''&lt;br /&gt;
* ''./pico_project.py --gui''&lt;br /&gt;
* ne pas cocher &amp;quot;create VSCode project&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Attention, ne pas oublier de spécifier le chemin vers le SDK :&lt;br /&gt;
* ''export PICO_SDK_PATH=../../pico-sdk'' en remplaçant ''../../pico-sdk'' par le chemin vers le SDK.&lt;br /&gt;
&lt;br /&gt;
== Ouverture avec QTCreator ==&lt;br /&gt;
&lt;br /&gt;
QtCreator est capable de lire et interpréter le fichier ''CMakeLists.txt'' comme descripteur de projet, il suffit donc&lt;br /&gt;
* d'ouvrir (comme projet) le fichier ''CMakeLists.txt''&lt;br /&gt;
&lt;br /&gt;
=VsCode=&lt;br /&gt;
&lt;br /&gt;
*installer VsCode&lt;br /&gt;
**https://doc.ubuntu-fr.org/visual_studio_code&lt;br /&gt;
*ajouter le plugin pi pico&lt;br /&gt;
**https://github.com/raspberrypi/pico-vscode&lt;br /&gt;
**https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
==gpio==&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;quot;pico/stdlib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/regs/addressmap.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
unsigned int&amp;amp; gpioOUT = *(unsigned int*) (SIO_BASE + 0x10);&lt;br /&gt;
unsigned int&amp;amp; gpioOE  = *(unsigned int*) (SIO_BASE + 0x20);&lt;br /&gt;
&lt;br /&gt;
unsigned int&amp;amp; gpioCtrl0 = *(unsigned int *) (IO_BANK0_BASE+0x4);&lt;br /&gt;
//facultatif&lt;br /&gt;
unsigned int&amp;amp; padsBank0_GPIO0 = *(unsigned int *) (PADS_BANK0_BASE+0x4);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    // facultatif&lt;br /&gt;
    padsBank0_GPIO0|=(1&amp;lt;&amp;lt;6); // input enable&lt;br /&gt;
    padsBank0_GPIO0&amp;amp;=~(1&amp;lt;&amp;lt;7); // output disable&lt;br /&gt;
    // piloter la broche avec fonction SIO&lt;br /&gt;
    gpioCtrl0=5;&lt;br /&gt;
    // sortie enable&lt;br /&gt;
    gpioOE=1&amp;lt;&amp;lt;0;&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        gpioOUT&amp;amp;=~(1&amp;lt;&amp;lt;0);&lt;br /&gt;
        sleep_ms(200);&lt;br /&gt;
        gpioOUT|=(1&amp;lt;&amp;lt;0);&lt;br /&gt;
        sleep_ms(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=usage des périphériques au travers du sdk=&lt;br /&gt;
&lt;br /&gt;
== Référence en PDF du Pico C++ SDK ==&lt;br /&gt;
&lt;br /&gt;
[https://pip-assets.raspberrypi.com/categories/609-microcontroller-boards/documents/RP-009085-KB-1-raspberry-pi-pico-c-sdk.pdf Raspberry Pi Pico-series C/C++ SDK Libraries and tools for C/C++ development on Raspberry Pi microcontrollers]&lt;br /&gt;
&lt;br /&gt;
==GPIO==&lt;br /&gt;
&lt;br /&gt;
https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#hardware_gpio&lt;br /&gt;
&lt;br /&gt;
==IO==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Syntaxe&lt;br /&gt;
||void gpio_init(uint gpio)&lt;br /&gt;
|-&lt;br /&gt;
! Paramètres&lt;br /&gt;
||&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| gpio || numéro de gpio&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
*gpio_put(LED_PIN, 1);&lt;br /&gt;
*gpio_set_dir(LED_PIN, GPIO_OUT);&lt;br /&gt;
*gpio_set_pulls (uint gpio, bool up, bool down)&lt;br /&gt;
&lt;br /&gt;
==interrupt==&lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'interruption dédiée à une broche particulière. Toutes les gpio déclenchent la même interruption. Il convient ensuite de regarder lesquelles ont déclenchées l'interruption :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void my_raw_interrupt_handler()&lt;br /&gt;
{&lt;br /&gt;
   const int32_t gpio;&lt;br /&gt;
   if (gpio_get_irq_event_mask(gpio) &amp;amp; (GPIO_IRQ_EDGE_RISE|GPIO_IRQ_EDGE_FALL))&lt;br /&gt;
    {&lt;br /&gt;
        if (gpio_get_irq_event_mask(gpio) &amp;amp; (GPIO_IRQ_EDGE_RISE)) // Front Montant&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
        } &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
        gpio_acknowledge_irq(gpio, GPIO_IRQ_EDGE_RISE|GPIO_IRQ_EDGE_FALL);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
gpio_set_irq_enabled(2, GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE, true);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pwm==&lt;br /&gt;
&lt;br /&gt;
https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/&lt;br /&gt;
&lt;br /&gt;
 Fmli = Fcpu / ( wrap * clkdiv ) // sur pi pico, Fcpu=125MHz&lt;br /&gt;
&lt;br /&gt;
*clkdiv:&lt;br /&gt;
**Le registre qui stocke le diviseur de fréquence comprend 8 bits pour la partie entière, et 4 bits pour la partie fractionnaire&lt;br /&gt;
**valeur max de clkdiv : 255 + 15/16&lt;br /&gt;
**ex : pwm_set_clkdiv_int_frac (slice, 38, 3); // diviseur de fréquence = 38 + 3/16 &lt;br /&gt;
&lt;br /&gt;
*gpio_set_function(PICO_DEFAULT_LED_PIN, GPIO_FUNC_PWM);&lt;br /&gt;
*uint slice_num = pwm_gpio_to_slice_num(PICO_DEFAULT_LED_PIN);&lt;br /&gt;
*pwm_config config = pwm_get_default_config();&lt;br /&gt;
*pwm_config_set_clkdiv(&amp;amp;config, 4.f);&lt;br /&gt;
*pwm_init(slice_num, &amp;amp;config, true);&lt;br /&gt;
*pwm_set_gpio_level(PICO_DEFAULT_LED_PIN, fade * fade); // rapport cyclique 16 bits&lt;br /&gt;
&lt;br /&gt;
==I2C==&lt;br /&gt;
&lt;br /&gt;
===configuration cmake===&lt;br /&gt;
dans le fichier CMakeLists.txt ajouter dans la liste target_link_libraries&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
target_link_libraries( &lt;br /&gt;
        ....&lt;br /&gt;
        hardware_i2c&lt;br /&gt;
        ....&lt;br /&gt;
        )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===i2c scanner===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;pico/stdlib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/i2c.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/timer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/clocks.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pico/binary_info.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int64_t alarm_callback(alarm_id_t id, void *user_data) {&lt;br /&gt;
    // Put your timeout handler code in here&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool reserved_addr(uint8_t addr) {&lt;br /&gt;
    return (addr &amp;amp; 0x78) == 0 || (addr &amp;amp; 0x78) == 0x78;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    stdio_init_all();&lt;br /&gt;
&lt;br /&gt;
    // I2C Initialisation. Using it at 400Khz.&lt;br /&gt;
    i2c_init(i2c0, 100*1000);&lt;br /&gt;
    &lt;br /&gt;
    gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C);&lt;br /&gt;
    gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C);&lt;br /&gt;
    gpio_pull_up(PICO_DEFAULT_I2C_SDA_PIN);&lt;br /&gt;
    gpio_pull_up(PICO_DEFAULT_I2C_SCL_PIN);&lt;br /&gt;
    // For more examples of I2C use see https://github.com/raspberrypi/pico-examples/tree/master/i2c&lt;br /&gt;
    bi_decl(bi_2pins_with_func(PICO_DEFAULT_I2C_SDA_PIN, PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C));&lt;br /&gt;
&lt;br /&gt;
    // Timer example code - This example fires off the callback after 2000ms&lt;br /&gt;
    add_alarm_in_ms(2000, alarm_callback, NULL, false);&lt;br /&gt;
    // For more examples of timer use see https://github.com/raspberrypi/pico-examples/tree/master/timer&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;System Clock Frequency is %d Hz\n&amp;quot;, clock_get_hz(clk_sys));&lt;br /&gt;
    printf(&amp;quot;USB Clock Frequency is %d Hz\n&amp;quot;, clock_get_hz(clk_usb));&lt;br /&gt;
    // For more examples of clocks use see https://github.com/raspberrypi/pico-examples/tree/master/clocks&lt;br /&gt;
&lt;br /&gt;
    while (true) {&lt;br /&gt;
        printf(&amp;quot;\nI2C Bus Scan\n&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F\n&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        for (int addr = 0; addr &amp;lt; (1 &amp;lt;&amp;lt; 7); ++addr) {&lt;br /&gt;
            if (addr % 16 == 0) {&lt;br /&gt;
                printf(&amp;quot;%02x &amp;quot;, addr);&lt;br /&gt;
            }&lt;br /&gt;
    &lt;br /&gt;
            // Perform a 1-byte dummy read from the probe address. If a slave&lt;br /&gt;
            // acknowledges this address, the function returns the number of bytes&lt;br /&gt;
            // transferred. If the address byte is ignored, the function returns&lt;br /&gt;
            // -1.&lt;br /&gt;
    &lt;br /&gt;
            // Skip over any reserved addresses.&lt;br /&gt;
            int ret;&lt;br /&gt;
            uint8_t rxdata;&lt;br /&gt;
            if (reserved_addr(addr))&lt;br /&gt;
                ret = PICO_ERROR_GENERIC;&lt;br /&gt;
            else&lt;br /&gt;
                ret = i2c_read_blocking(i2c_default, addr, &amp;amp;rxdata, 1, false);&lt;br /&gt;
    &lt;br /&gt;
            printf(ret &amp;lt; 0 ? &amp;quot;.&amp;quot; : &amp;quot;@&amp;quot;);&lt;br /&gt;
            printf(addr % 16 == 15 ? &amp;quot;\n&amp;quot; : &amp;quot;  &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;Done.\n&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        sleep_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===read/write register===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
{&lt;br /&gt;
    uint8_t data[2]={regAddress,regValue};&lt;br /&gt;
    i2c_write_blocking(i2c0,targetAddress,data,2,false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
{&lt;br /&gt;
    i2c_write_blocking(i2c0,targetAddress,&amp;amp;regAddress,1,true);&lt;br /&gt;
    uint8_t regValue;&lt;br /&gt;
    i2c_read_blocking(i2c0,targetAddress,&amp;amp;regValue,1,false);&lt;br /&gt;
    return regValue;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==adc==&lt;br /&gt;
&lt;br /&gt;
==uart==&lt;br /&gt;
*https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#group_hardware_uart&lt;br /&gt;
&lt;br /&gt;
==pio==&lt;br /&gt;
&lt;br /&gt;
===ws2812===&lt;br /&gt;
https://github.com/ForsakenNGS/PicoLED&lt;br /&gt;
&lt;br /&gt;
=liens=&lt;br /&gt;
*https://www.gibbard.me/using_the_raspberry_pi_pico_on_ubuntu/&lt;br /&gt;
*https://tutoduino.fr/en/pico-platformio/&lt;br /&gt;
*visual studio code :&lt;br /&gt;
**https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf partie 7.1&lt;br /&gt;
**https://www.electronicshub.org/program-raspberry-pi-pico-with-visual-studio-code/&lt;br /&gt;
*https://github.com/raspberrypi/picotool&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:PiPico&amp;diff=20937</id>
		<title>Cours:PiPico</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:PiPico&amp;diff=20937"/>
				<updated>2026-04-09T08:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* I2C */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Brochage =&lt;br /&gt;
&lt;br /&gt;
https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf&lt;br /&gt;
&lt;br /&gt;
=utilisation de l'ide arduino=&lt;br /&gt;
&lt;br /&gt;
https://github.com/earlephilhower/arduino-pico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=non recommandé : QtCreator=&lt;br /&gt;
&lt;br /&gt;
== Création assistée d'un projet ==&lt;br /&gt;
&lt;br /&gt;
À l'aide de ''pico_project.py'' :&lt;br /&gt;
* ''git clone https://github.com/raspberrypi/pico-project-generator.git''&lt;br /&gt;
* ''./pico_project.py --gui''&lt;br /&gt;
* ne pas cocher &amp;quot;create VSCode project&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Attention, ne pas oublier de spécifier le chemin vers le SDK :&lt;br /&gt;
* ''export PICO_SDK_PATH=../../pico-sdk'' en remplaçant ''../../pico-sdk'' par le chemin vers le SDK.&lt;br /&gt;
&lt;br /&gt;
== Ouverture avec QTCreator ==&lt;br /&gt;
&lt;br /&gt;
QtCreator est capable de lire et interpréter le fichier ''CMakeLists.txt'' comme descripteur de projet, il suffit donc&lt;br /&gt;
* d'ouvrir (comme projet) le fichier ''CMakeLists.txt''&lt;br /&gt;
&lt;br /&gt;
=VsCode=&lt;br /&gt;
&lt;br /&gt;
*installer VsCode&lt;br /&gt;
**https://doc.ubuntu-fr.org/visual_studio_code&lt;br /&gt;
*ajouter le plugin pi pico&lt;br /&gt;
**https://github.com/raspberrypi/pico-vscode&lt;br /&gt;
**https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
==gpio==&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;quot;pico/stdlib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/regs/addressmap.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
unsigned int&amp;amp; gpioOUT = *(unsigned int*) (SIO_BASE + 0x10);&lt;br /&gt;
unsigned int&amp;amp; gpioOE  = *(unsigned int*) (SIO_BASE + 0x20);&lt;br /&gt;
&lt;br /&gt;
unsigned int&amp;amp; gpioCtrl0 = *(unsigned int *) (IO_BANK0_BASE+0x4);&lt;br /&gt;
//facultatif&lt;br /&gt;
unsigned int&amp;amp; padsBank0_GPIO0 = *(unsigned int *) (PADS_BANK0_BASE+0x4);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    // facultatif&lt;br /&gt;
    padsBank0_GPIO0|=(1&amp;lt;&amp;lt;6); // input enable&lt;br /&gt;
    padsBank0_GPIO0&amp;amp;=~(1&amp;lt;&amp;lt;7); // output disable&lt;br /&gt;
    // piloter la broche avec fonction SIO&lt;br /&gt;
    gpioCtrl0=5;&lt;br /&gt;
    // sortie enable&lt;br /&gt;
    gpioOE=1&amp;lt;&amp;lt;0;&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        gpioOUT&amp;amp;=~(1&amp;lt;&amp;lt;0);&lt;br /&gt;
        sleep_ms(200);&lt;br /&gt;
        gpioOUT|=(1&amp;lt;&amp;lt;0);&lt;br /&gt;
        sleep_ms(10);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=usage des périphériques au travers du sdk=&lt;br /&gt;
&lt;br /&gt;
== Pico C++ SDK ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi Pico-series C/C++ SDK&lt;br /&gt;
Libraries and tools for C/C++ development on Raspberry Pi&lt;br /&gt;
microcontrollers : &lt;br /&gt;
https://pip-assets.raspberrypi.com/categories/609-microcontroller-boards/documents/RP-009085-KB-1-raspberry-pi-pico-c-sdk.pdf&lt;br /&gt;
&lt;br /&gt;
==GPIO==&lt;br /&gt;
&lt;br /&gt;
https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#hardware_gpio&lt;br /&gt;
&lt;br /&gt;
==IO==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Syntaxe&lt;br /&gt;
||void gpio_init(uint gpio)&lt;br /&gt;
|-&lt;br /&gt;
! Paramètres&lt;br /&gt;
||&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| gpio || numéro de gpio&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
*gpio_put(LED_PIN, 1);&lt;br /&gt;
*gpio_set_dir(LED_PIN, GPIO_OUT);&lt;br /&gt;
*gpio_set_pulls (uint gpio, bool up, bool down)&lt;br /&gt;
&lt;br /&gt;
==interrupt==&lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'interruption dédiée à une broche particulière. Toutes les gpio déclenchent la même interruption. Il convient ensuite de regarder lesquelles ont déclenchées l'interruption :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void my_raw_interrupt_handler()&lt;br /&gt;
{&lt;br /&gt;
   const int32_t gpio;&lt;br /&gt;
   if (gpio_get_irq_event_mask(gpio) &amp;amp; (GPIO_IRQ_EDGE_RISE|GPIO_IRQ_EDGE_FALL))&lt;br /&gt;
    {&lt;br /&gt;
        if (gpio_get_irq_event_mask(gpio) &amp;amp; (GPIO_IRQ_EDGE_RISE)) // Front Montant&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
        } &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
        gpio_acknowledge_irq(gpio, GPIO_IRQ_EDGE_RISE|GPIO_IRQ_EDGE_FALL);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
gpio_set_irq_enabled(2, GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE, true);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pwm==&lt;br /&gt;
&lt;br /&gt;
https://raspberry-pi.developpez.com/actu/344283/Raspberry-Pi-Pico-moins-Apprendre-a-generer-des-signaux-PWM-un-billet-blog-de-f-leb/&lt;br /&gt;
&lt;br /&gt;
 Fmli = Fcpu / ( wrap * clkdiv ) // sur pi pico, Fcpu=125MHz&lt;br /&gt;
&lt;br /&gt;
*clkdiv:&lt;br /&gt;
**Le registre qui stocke le diviseur de fréquence comprend 8 bits pour la partie entière, et 4 bits pour la partie fractionnaire&lt;br /&gt;
**valeur max de clkdiv : 255 + 15/16&lt;br /&gt;
**ex : pwm_set_clkdiv_int_frac (slice, 38, 3); // diviseur de fréquence = 38 + 3/16 &lt;br /&gt;
&lt;br /&gt;
*gpio_set_function(PICO_DEFAULT_LED_PIN, GPIO_FUNC_PWM);&lt;br /&gt;
*uint slice_num = pwm_gpio_to_slice_num(PICO_DEFAULT_LED_PIN);&lt;br /&gt;
*pwm_config config = pwm_get_default_config();&lt;br /&gt;
*pwm_config_set_clkdiv(&amp;amp;config, 4.f);&lt;br /&gt;
*pwm_init(slice_num, &amp;amp;config, true);&lt;br /&gt;
*pwm_set_gpio_level(PICO_DEFAULT_LED_PIN, fade * fade); // rapport cyclique 16 bits&lt;br /&gt;
&lt;br /&gt;
==I2C==&lt;br /&gt;
&lt;br /&gt;
==configuration cmake==&lt;br /&gt;
ajouter dans la liste target_link_libraries&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
target_link_libraries( &lt;br /&gt;
        ....&lt;br /&gt;
        hardware_i2c&lt;br /&gt;
        ....&lt;br /&gt;
        )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===i2c scanner===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;pico/stdlib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/i2c.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/timer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hardware/clocks.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pico/binary_info.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int64_t alarm_callback(alarm_id_t id, void *user_data) {&lt;br /&gt;
    // Put your timeout handler code in here&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool reserved_addr(uint8_t addr) {&lt;br /&gt;
    return (addr &amp;amp; 0x78) == 0 || (addr &amp;amp; 0x78) == 0x78;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    stdio_init_all();&lt;br /&gt;
&lt;br /&gt;
    // I2C Initialisation. Using it at 400Khz.&lt;br /&gt;
    i2c_init(i2c0, 100*1000);&lt;br /&gt;
    &lt;br /&gt;
    gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C);&lt;br /&gt;
    gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C);&lt;br /&gt;
    gpio_pull_up(PICO_DEFAULT_I2C_SDA_PIN);&lt;br /&gt;
    gpio_pull_up(PICO_DEFAULT_I2C_SCL_PIN);&lt;br /&gt;
    // For more examples of I2C use see https://github.com/raspberrypi/pico-examples/tree/master/i2c&lt;br /&gt;
    bi_decl(bi_2pins_with_func(PICO_DEFAULT_I2C_SDA_PIN, PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C));&lt;br /&gt;
&lt;br /&gt;
    // Timer example code - This example fires off the callback after 2000ms&lt;br /&gt;
    add_alarm_in_ms(2000, alarm_callback, NULL, false);&lt;br /&gt;
    // For more examples of timer use see https://github.com/raspberrypi/pico-examples/tree/master/timer&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;System Clock Frequency is %d Hz\n&amp;quot;, clock_get_hz(clk_sys));&lt;br /&gt;
    printf(&amp;quot;USB Clock Frequency is %d Hz\n&amp;quot;, clock_get_hz(clk_usb));&lt;br /&gt;
    // For more examples of clocks use see https://github.com/raspberrypi/pico-examples/tree/master/clocks&lt;br /&gt;
&lt;br /&gt;
    while (true) {&lt;br /&gt;
        printf(&amp;quot;\nI2C Bus Scan\n&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F\n&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        for (int addr = 0; addr &amp;lt; (1 &amp;lt;&amp;lt; 7); ++addr) {&lt;br /&gt;
            if (addr % 16 == 0) {&lt;br /&gt;
                printf(&amp;quot;%02x &amp;quot;, addr);&lt;br /&gt;
            }&lt;br /&gt;
    &lt;br /&gt;
            // Perform a 1-byte dummy read from the probe address. If a slave&lt;br /&gt;
            // acknowledges this address, the function returns the number of bytes&lt;br /&gt;
            // transferred. If the address byte is ignored, the function returns&lt;br /&gt;
            // -1.&lt;br /&gt;
    &lt;br /&gt;
            // Skip over any reserved addresses.&lt;br /&gt;
            int ret;&lt;br /&gt;
            uint8_t rxdata;&lt;br /&gt;
            if (reserved_addr(addr))&lt;br /&gt;
                ret = PICO_ERROR_GENERIC;&lt;br /&gt;
            else&lt;br /&gt;
                ret = i2c_read_blocking(i2c_default, addr, &amp;amp;rxdata, 1, false);&lt;br /&gt;
    &lt;br /&gt;
            printf(ret &amp;lt; 0 ? &amp;quot;.&amp;quot; : &amp;quot;@&amp;quot;);&lt;br /&gt;
            printf(addr % 16 == 15 ? &amp;quot;\n&amp;quot; : &amp;quot;  &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;Done.\n&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        sleep_ms(1000);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===read/write register===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
{&lt;br /&gt;
    uint8_t data[2]={regAddress,regValue};&lt;br /&gt;
    i2c_write_blocking(i2c0,targetAddress,data,2,false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
{&lt;br /&gt;
    i2c_write_blocking(i2c0,targetAddress,&amp;amp;regAddress,1,true);&lt;br /&gt;
    uint8_t regValue;&lt;br /&gt;
    i2c_read_blocking(i2c0,targetAddress,&amp;amp;regValue,1,false);&lt;br /&gt;
    return regValue;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==adc==&lt;br /&gt;
&lt;br /&gt;
==uart==&lt;br /&gt;
*https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#group_hardware_uart&lt;br /&gt;
&lt;br /&gt;
==pio==&lt;br /&gt;
&lt;br /&gt;
===ws2812===&lt;br /&gt;
https://github.com/ForsakenNGS/PicoLED&lt;br /&gt;
&lt;br /&gt;
=liens=&lt;br /&gt;
*https://www.gibbard.me/using_the_raspberry_pi_pico_on_ubuntu/&lt;br /&gt;
*https://tutoduino.fr/en/pico-platformio/&lt;br /&gt;
*visual studio code :&lt;br /&gt;
**https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf partie 7.1&lt;br /&gt;
**https://www.electronicshub.org/program-raspberry-pi-pico-with-visual-studio-code/&lt;br /&gt;
*https://github.com/raspberrypi/picotool&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20933</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20933"/>
				<updated>2026-04-07T15:10:28Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://docs.google.com/document/d/1lLrXOisqDBmTie8lAPcVor_al1TS7HhtI7Or8wFLcsg/edit?tab=t.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
support de présentation :&lt;br /&gt;
 https://docs.google.com/presentation/d/1r9tSETGUbYgtk2Ip78lNhEWxcHYtDbIx4epwVoeI2hs/edit?slide=id.p#slide=id.p&lt;br /&gt;
&lt;br /&gt;
fonctions :&lt;br /&gt;
 https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
=Découpage fonctionnel=&lt;br /&gt;
&lt;br /&gt;
[[Media:DecoupageFcts2026.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=contraintes de fabrication=&lt;br /&gt;
&lt;br /&gt;
==carte alimentation==&lt;br /&gt;
&lt;br /&gt;
==carte principale==&lt;br /&gt;
&lt;br /&gt;
*dimension maximum : 8cm x 13cm&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20932</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20932"/>
				<updated>2026-04-07T13:14:01Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
support de présentation :&lt;br /&gt;
 https://docs.google.com/presentation/d/1r9tSETGUbYgtk2Ip78lNhEWxcHYtDbIx4epwVoeI2hs/edit?slide=id.p#slide=id.p&lt;br /&gt;
&lt;br /&gt;
fonctions :&lt;br /&gt;
 https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
=Découpage fonctionnel=&lt;br /&gt;
&lt;br /&gt;
[[Media:DecoupageFcts2026.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=contraintes de fabrication=&lt;br /&gt;
&lt;br /&gt;
==carte alimentation==&lt;br /&gt;
&lt;br /&gt;
==carte principale==&lt;br /&gt;
&lt;br /&gt;
*dimension maximum : 8cm x 13cm&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20931</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20931"/>
				<updated>2026-04-07T13:13:08Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://docs.google.com/document/d/1lLrXOisqDBmTie8lAPcVor_al1TS7HhtI7Or8wFLcsg/edit?tab=t.0&lt;br /&gt;
&lt;br /&gt;
support de présentation :&lt;br /&gt;
 https://docs.google.com/presentation/d/1r9tSETGUbYgtk2Ip78lNhEWxcHYtDbIx4epwVoeI2hs/edit?slide=id.p#slide=id.p&lt;br /&gt;
&lt;br /&gt;
fonctions :&lt;br /&gt;
 https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
=Découpage fonctionnel=&lt;br /&gt;
&lt;br /&gt;
[[Media:DecoupageFcts2026.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=contraintes de fabrication=&lt;br /&gt;
&lt;br /&gt;
==carte alimentation==&lt;br /&gt;
&lt;br /&gt;
==carte principale==&lt;br /&gt;
&lt;br /&gt;
*dimension maximum : 8cm x 13cm&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20930</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20930"/>
				<updated>2026-04-07T07:02:39Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
support de présentation :&lt;br /&gt;
 https://docs.google.com/presentation/d/1r9tSETGUbYgtk2Ip78lNhEWxcHYtDbIx4epwVoeI2hs/edit?slide=id.p#slide=id.p&lt;br /&gt;
&lt;br /&gt;
fonctions :&lt;br /&gt;
 https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
=Découpage fonctionnel=&lt;br /&gt;
&lt;br /&gt;
[[Media:DecoupageFcts2026.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=contraintes de fabrication=&lt;br /&gt;
&lt;br /&gt;
==carte alimentation==&lt;br /&gt;
&lt;br /&gt;
==carte principale==&lt;br /&gt;
&lt;br /&gt;
*dimension maximum : 8cm x 13cm&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20929</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20929"/>
				<updated>2026-04-04T08:17:31Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave bouton s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20928</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20928"/>
				<updated>2026-04-04T08:17:13Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Utilisation du bouton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave bouton s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20927</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20927"/>
				<updated>2026-04-04T08:17:03Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : Annulation des modifications 20926 de Bjacquot (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20926</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20926"/>
				<updated>2026-04-04T08:16:40Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : Révocation des modifications de Bjacquot (discussion) vers la dernière version de Fredmn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20925</id>
		<title>Cours:DocsLTSP</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20925"/>
				<updated>2026-04-03T17:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* firefox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=mise à jour=&lt;br /&gt;
&lt;br /&gt;
*préparer les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;installer mise a jour Ubuntu&amp;quot;&lt;br /&gt;
**mettre à jour le noyau avec : updateKernelReseau&lt;br /&gt;
*vérifier les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;verifier apres mise a jour Ubuntu&amp;quot;&lt;br /&gt;
*passer sur la nouvelle version&lt;br /&gt;
**après vérifications&lt;br /&gt;
**lancer la commande : updateBootReseau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
https://wiki.defis.info/?LTSPInstall&lt;br /&gt;
&lt;br /&gt;
*installation ltsp https://ltsp.org/docs/installation/&lt;br /&gt;
*debootstrap ubuntu&lt;br /&gt;
&lt;br /&gt;
**https://github.com/ltsp/ltsp/wiki/chroots&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /srv/ltsp&lt;br /&gt;
cd /srv/ltsp&lt;br /&gt;
debootstrap --include ubuntu-minimal noble noble&lt;br /&gt;
//config schroot&lt;br /&gt;
schroot&lt;br /&gt;
// continuer avec l'installation de paquets, par ex https://help.ubuntu.com/community/DebootstrapChroot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*config ltsp&lt;br /&gt;
**ltsp dnsmasq&lt;br /&gt;
**ltsp ipxe&lt;br /&gt;
**ltsp initrd&lt;br /&gt;
**ltsp kernel&lt;br /&gt;
**ltsp nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ltsp initrd :&lt;br /&gt;
**update ltsp.img&lt;br /&gt;
**modifie users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=groupes utilisateurs=&lt;br /&gt;
modifier le fichier : /etc/security/group.conf&lt;br /&gt;
&lt;br /&gt;
=tftp from grub=&lt;br /&gt;
&lt;br /&gt;
*https://gist.github.com/maccadia/e5faa903f591a089c1c65be381619118&lt;br /&gt;
&lt;br /&gt;
=virt-viewer=&lt;br /&gt;
*https://www.apalrd.net/posts/2022/raspi_spice/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
# Set auth options&lt;br /&gt;
PASSWORD='xxxxxxxx'&lt;br /&gt;
USERNAME='spiceUser@pve'&lt;br /&gt;
&lt;br /&gt;
# Set VM ID&lt;br /&gt;
VMID=&amp;quot;102&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set Node&lt;br /&gt;
# This must either be a DNS address or name of the node in the cluster&lt;br /&gt;
NODE=&amp;quot;geii-node2-svr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Proxy equals node if node is a DNS address&lt;br /&gt;
# Otherwise, you need to set the IP address of the node here&lt;br /&gt;
PROXY=&amp;quot;10.98.35.249&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#The rest of the script from Proxmox&lt;br /&gt;
NODE=&amp;quot;${NODE%%\.*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DATA=&amp;quot;$(curl -f -s -S -k --data-urlencode &amp;quot;username=$USERNAME&amp;quot; --data-urlencode &amp;quot;password=$PASSWORD&amp;quot; &amp;quot;https://$PROXY:8006/api2/json/access/ticket&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;AUTH OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
TICKET=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET##*ticket:}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%,*}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CSRF=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF##*CSRFPreventionToken:}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%,*}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
curl -f -s -S -k -b &amp;quot;PVEAuthCookie=$TICKET&amp;quot; -H &amp;quot;CSRFPreventionToken: $CSRF&amp;quot; &amp;quot;https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy&amp;quot; -d &amp;quot;proxy=$PROXY&amp;quot; &amp;gt; spiceproxy&lt;br /&gt;
&lt;br /&gt;
#Launch remote-viewer with spiceproxy file, in kiosk mode, quit on disconnect&lt;br /&gt;
#The run loop will get a new ticket and launch us again if we disconnect&lt;br /&gt;
exec remote-viewer -k --kiosk-quit on-disconnect spiceproxy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=initrd nfs v4=&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
&lt;br /&gt;
=divers=&lt;br /&gt;
&lt;br /&gt;
The most common iPXE boot loaders are undionly.kpxe (for bios) and snp.efi/snponly.efi (for usefi). Just be aware you can not boot a bios bootloader (undionly.kpxe) on a uefi system unless CSM is enabled. But then CSM would boot in bios mode. The same is the case for snp.efi, it will not boot on a bios based computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.ubuntu.com/LTSPLocalAppSetup&lt;br /&gt;
&lt;br /&gt;
http://wiki.bluelightav.org/pages/viewpage.action?pageId=23626143&lt;br /&gt;
&lt;br /&gt;
=grub=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
menuentry &amp;quot;LTSP Network Boot&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
 insmod net&lt;br /&gt;
 insmod efinet&lt;br /&gt;
 insmod tftp&lt;br /&gt;
 insmod pxeboot&lt;br /&gt;
 net_bootp linux (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/vmlinuz initrd=/ltsp/x86_64/initrd.img root=/dev/nfs nfsroot=&amp;lt;IP_SERVEUR&amp;gt;:/opt/ltsp rootfstype=nfs ip=dhcp&lt;br /&gt;
 initrd (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/initrd.img&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=optimisation=&lt;br /&gt;
&lt;br /&gt;
==firefox==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
nano /usr/lib/firefox/distribution/policies.json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;policies&amp;quot;: {&lt;br /&gt;
    &amp;quot;DisableTelemetry&amp;quot;: true,&lt;br /&gt;
    &amp;quot;Preferences&amp;quot;: {&lt;br /&gt;
      &amp;quot;browser.cache.disk.enable&amp;quot;: false,&lt;br /&gt;
      &amp;quot;browser.cache.memory.enable&amp;quot;: true,&lt;br /&gt;
      &amp;quot;browser.cache.offline.enable&amp;quot;: false,&lt;br /&gt;
      &amp;quot;browser.sessionstore.interval&amp;quot;: 600000,&lt;br /&gt;
      &amp;quot;network.http.pipelining&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nano /usr/lib/firefox/mozilla.cfg&lt;br /&gt;
&lt;br /&gt;
lockPref(&amp;quot;browser.cache.disk.enable&amp;quot;, false);&lt;br /&gt;
defaultPref(&amp;quot;browser.cache.memory.enable&amp;quot;, true);&lt;br /&gt;
lockPref(&amp;quot;browser.cache.offline.enable&amp;quot;, false);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20924</id>
		<title>Cours:DocsLTSP</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20924"/>
				<updated>2026-04-03T17:37:30Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* firefox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=mise à jour=&lt;br /&gt;
&lt;br /&gt;
*préparer les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;installer mise a jour Ubuntu&amp;quot;&lt;br /&gt;
**mettre à jour le noyau avec : updateKernelReseau&lt;br /&gt;
*vérifier les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;verifier apres mise a jour Ubuntu&amp;quot;&lt;br /&gt;
*passer sur la nouvelle version&lt;br /&gt;
**après vérifications&lt;br /&gt;
**lancer la commande : updateBootReseau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
https://wiki.defis.info/?LTSPInstall&lt;br /&gt;
&lt;br /&gt;
*installation ltsp https://ltsp.org/docs/installation/&lt;br /&gt;
*debootstrap ubuntu&lt;br /&gt;
&lt;br /&gt;
**https://github.com/ltsp/ltsp/wiki/chroots&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /srv/ltsp&lt;br /&gt;
cd /srv/ltsp&lt;br /&gt;
debootstrap --include ubuntu-minimal noble noble&lt;br /&gt;
//config schroot&lt;br /&gt;
schroot&lt;br /&gt;
// continuer avec l'installation de paquets, par ex https://help.ubuntu.com/community/DebootstrapChroot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*config ltsp&lt;br /&gt;
**ltsp dnsmasq&lt;br /&gt;
**ltsp ipxe&lt;br /&gt;
**ltsp initrd&lt;br /&gt;
**ltsp kernel&lt;br /&gt;
**ltsp nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ltsp initrd :&lt;br /&gt;
**update ltsp.img&lt;br /&gt;
**modifie users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=groupes utilisateurs=&lt;br /&gt;
modifier le fichier : /etc/security/group.conf&lt;br /&gt;
&lt;br /&gt;
=tftp from grub=&lt;br /&gt;
&lt;br /&gt;
*https://gist.github.com/maccadia/e5faa903f591a089c1c65be381619118&lt;br /&gt;
&lt;br /&gt;
=virt-viewer=&lt;br /&gt;
*https://www.apalrd.net/posts/2022/raspi_spice/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
# Set auth options&lt;br /&gt;
PASSWORD='xxxxxxxx'&lt;br /&gt;
USERNAME='spiceUser@pve'&lt;br /&gt;
&lt;br /&gt;
# Set VM ID&lt;br /&gt;
VMID=&amp;quot;102&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set Node&lt;br /&gt;
# This must either be a DNS address or name of the node in the cluster&lt;br /&gt;
NODE=&amp;quot;geii-node2-svr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Proxy equals node if node is a DNS address&lt;br /&gt;
# Otherwise, you need to set the IP address of the node here&lt;br /&gt;
PROXY=&amp;quot;10.98.35.249&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#The rest of the script from Proxmox&lt;br /&gt;
NODE=&amp;quot;${NODE%%\.*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DATA=&amp;quot;$(curl -f -s -S -k --data-urlencode &amp;quot;username=$USERNAME&amp;quot; --data-urlencode &amp;quot;password=$PASSWORD&amp;quot; &amp;quot;https://$PROXY:8006/api2/json/access/ticket&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;AUTH OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
TICKET=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET##*ticket:}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%,*}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CSRF=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF##*CSRFPreventionToken:}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%,*}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
curl -f -s -S -k -b &amp;quot;PVEAuthCookie=$TICKET&amp;quot; -H &amp;quot;CSRFPreventionToken: $CSRF&amp;quot; &amp;quot;https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy&amp;quot; -d &amp;quot;proxy=$PROXY&amp;quot; &amp;gt; spiceproxy&lt;br /&gt;
&lt;br /&gt;
#Launch remote-viewer with spiceproxy file, in kiosk mode, quit on disconnect&lt;br /&gt;
#The run loop will get a new ticket and launch us again if we disconnect&lt;br /&gt;
exec remote-viewer -k --kiosk-quit on-disconnect spiceproxy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=initrd nfs v4=&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
&lt;br /&gt;
=divers=&lt;br /&gt;
&lt;br /&gt;
The most common iPXE boot loaders are undionly.kpxe (for bios) and snp.efi/snponly.efi (for usefi). Just be aware you can not boot a bios bootloader (undionly.kpxe) on a uefi system unless CSM is enabled. But then CSM would boot in bios mode. The same is the case for snp.efi, it will not boot on a bios based computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.ubuntu.com/LTSPLocalAppSetup&lt;br /&gt;
&lt;br /&gt;
http://wiki.bluelightav.org/pages/viewpage.action?pageId=23626143&lt;br /&gt;
&lt;br /&gt;
=grub=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
menuentry &amp;quot;LTSP Network Boot&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
 insmod net&lt;br /&gt;
 insmod efinet&lt;br /&gt;
 insmod tftp&lt;br /&gt;
 insmod pxeboot&lt;br /&gt;
 net_bootp linux (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/vmlinuz initrd=/ltsp/x86_64/initrd.img root=/dev/nfs nfsroot=&amp;lt;IP_SERVEUR&amp;gt;:/opt/ltsp rootfstype=nfs ip=dhcp&lt;br /&gt;
 initrd (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/initrd.img&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=optimisation=&lt;br /&gt;
&lt;br /&gt;
==firefox==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
nano /usr/lib/firefox/distribution/policies.json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;policies&amp;quot;: {&lt;br /&gt;
    &amp;quot;DisableTelemetry&amp;quot;: true,&lt;br /&gt;
    &amp;quot;Preferences&amp;quot;: {&lt;br /&gt;
      &amp;quot;browser.cache.disk.enable&amp;quot;: false,&lt;br /&gt;
      &amp;quot;browser.cache.memory.enable&amp;quot;: true,&lt;br /&gt;
      &amp;quot;browser.cache.offline.enable&amp;quot;: false&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nano /usr/lib/firefox/mozilla.cfg&lt;br /&gt;
&lt;br /&gt;
lockPref(&amp;quot;browser.cache.disk.enable&amp;quot;, false);&lt;br /&gt;
defaultPref(&amp;quot;browser.cache.memory.enable&amp;quot;, true);&lt;br /&gt;
lockPref(&amp;quot;browser.cache.offline.enable&amp;quot;, false);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20923</id>
		<title>Cours:DocsLTSP</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:DocsLTSP&amp;diff=20923"/>
				<updated>2026-04-03T17:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* grub */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=mise à jour=&lt;br /&gt;
&lt;br /&gt;
*préparer les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;installer mise a jour Ubuntu&amp;quot;&lt;br /&gt;
**mettre à jour le noyau avec : updateKernelReseau&lt;br /&gt;
*vérifier les mises à jour&lt;br /&gt;
**dans le menu de bootreseau&lt;br /&gt;
**choisir &amp;quot;verifier apres mise a jour Ubuntu&amp;quot;&lt;br /&gt;
*passer sur la nouvelle version&lt;br /&gt;
**après vérifications&lt;br /&gt;
**lancer la commande : updateBootReseau&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
https://wiki.defis.info/?LTSPInstall&lt;br /&gt;
&lt;br /&gt;
*installation ltsp https://ltsp.org/docs/installation/&lt;br /&gt;
*debootstrap ubuntu&lt;br /&gt;
&lt;br /&gt;
**https://github.com/ltsp/ltsp/wiki/chroots&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
mkdir /srv/ltsp&lt;br /&gt;
cd /srv/ltsp&lt;br /&gt;
debootstrap --include ubuntu-minimal noble noble&lt;br /&gt;
//config schroot&lt;br /&gt;
schroot&lt;br /&gt;
// continuer avec l'installation de paquets, par ex https://help.ubuntu.com/community/DebootstrapChroot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*config ltsp&lt;br /&gt;
**ltsp dnsmasq&lt;br /&gt;
**ltsp ipxe&lt;br /&gt;
**ltsp initrd&lt;br /&gt;
**ltsp kernel&lt;br /&gt;
**ltsp nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ltsp initrd :&lt;br /&gt;
**update ltsp.img&lt;br /&gt;
**modifie users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=groupes utilisateurs=&lt;br /&gt;
modifier le fichier : /etc/security/group.conf&lt;br /&gt;
&lt;br /&gt;
=tftp from grub=&lt;br /&gt;
&lt;br /&gt;
*https://gist.github.com/maccadia/e5faa903f591a089c1c65be381619118&lt;br /&gt;
&lt;br /&gt;
=virt-viewer=&lt;br /&gt;
*https://www.apalrd.net/posts/2022/raspi_spice/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
# Set auth options&lt;br /&gt;
PASSWORD='xxxxxxxx'&lt;br /&gt;
USERNAME='spiceUser@pve'&lt;br /&gt;
&lt;br /&gt;
# Set VM ID&lt;br /&gt;
VMID=&amp;quot;102&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set Node&lt;br /&gt;
# This must either be a DNS address or name of the node in the cluster&lt;br /&gt;
NODE=&amp;quot;geii-node2-svr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Proxy equals node if node is a DNS address&lt;br /&gt;
# Otherwise, you need to set the IP address of the node here&lt;br /&gt;
PROXY=&amp;quot;10.98.35.249&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#The rest of the script from Proxmox&lt;br /&gt;
NODE=&amp;quot;${NODE%%\.*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DATA=&amp;quot;$(curl -f -s -S -k --data-urlencode &amp;quot;username=$USERNAME&amp;quot; --data-urlencode &amp;quot;password=$PASSWORD&amp;quot; &amp;quot;https://$PROXY:8006/api2/json/access/ticket&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;AUTH OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
TICKET=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET##*ticket:}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%,*}&amp;quot;&lt;br /&gt;
TICKET=&amp;quot;${TICKET%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CSRF=&amp;quot;${DATA//\&amp;quot;/}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF##*CSRFPreventionToken:}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%,*}&amp;quot;&lt;br /&gt;
CSRF=&amp;quot;${CSRF%%\}*}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
curl -f -s -S -k -b &amp;quot;PVEAuthCookie=$TICKET&amp;quot; -H &amp;quot;CSRFPreventionToken: $CSRF&amp;quot; &amp;quot;https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy&amp;quot; -d &amp;quot;proxy=$PROXY&amp;quot; &amp;gt; spiceproxy&lt;br /&gt;
&lt;br /&gt;
#Launch remote-viewer with spiceproxy file, in kiosk mode, quit on disconnect&lt;br /&gt;
#The run loop will get a new ticket and launch us again if we disconnect&lt;br /&gt;
exec remote-viewer -k --kiosk-quit on-disconnect spiceproxy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=initrd nfs v4=&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
*https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272&lt;br /&gt;
&lt;br /&gt;
=divers=&lt;br /&gt;
&lt;br /&gt;
The most common iPXE boot loaders are undionly.kpxe (for bios) and snp.efi/snponly.efi (for usefi). Just be aware you can not boot a bios bootloader (undionly.kpxe) on a uefi system unless CSM is enabled. But then CSM would boot in bios mode. The same is the case for snp.efi, it will not boot on a bios based computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://wiki.ubuntu.com/LTSPLocalAppSetup&lt;br /&gt;
&lt;br /&gt;
http://wiki.bluelightav.org/pages/viewpage.action?pageId=23626143&lt;br /&gt;
&lt;br /&gt;
=grub=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
menuentry &amp;quot;LTSP Network Boot&amp;quot;&lt;br /&gt;
{&lt;br /&gt;
 insmod net&lt;br /&gt;
 insmod efinet&lt;br /&gt;
 insmod tftp&lt;br /&gt;
 insmod pxeboot&lt;br /&gt;
 net_bootp linux (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/vmlinuz initrd=/ltsp/x86_64/initrd.img root=/dev/nfs nfsroot=&amp;lt;IP_SERVEUR&amp;gt;:/opt/ltsp rootfstype=nfs ip=dhcp&lt;br /&gt;
 initrd (tftp,&amp;lt;IP_SERVEUR&amp;gt;)/ltsp/x86_64/initrd.img&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=optimisation=&lt;br /&gt;
&lt;br /&gt;
==firefox==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
nano /usr/lib/firefox/distribution/policies.json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;policies&amp;quot;: {&lt;br /&gt;
    &amp;quot;DisableTelemetry&amp;quot;: true,&lt;br /&gt;
    &amp;quot;Preferences&amp;quot;: {&lt;br /&gt;
      &amp;quot;browser.cache.disk.enable&amp;quot;: false,&lt;br /&gt;
      &amp;quot;browser.cache.memory.enable&amp;quot;: true,&lt;br /&gt;
      &amp;quot;browser.cache.offline.enable&amp;quot;: false&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nano /usr/lib/firefox/mozilla.cfg&lt;br /&gt;
&lt;br /&gt;
lockPref(&amp;quot;browser.cache.disk.enable&amp;quot;, false);&lt;br /&gt;
defaultPref(&amp;quot;browser.cache.memory.enable&amp;quot;, true);&lt;br /&gt;
lockPref(&amp;quot;browser.cache.offline.enable&amp;quot;, false);&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20922</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20922"/>
				<updated>2026-04-03T07:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20921</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20921"/>
				<updated>2026-04-03T07:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Utilisation du bouton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Acces:Prof&amp;diff=20918</id>
		<title>Acces:Prof</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Acces:Prof&amp;diff=20918"/>
				<updated>2026-04-02T13:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*bjacquot&lt;br /&gt;
*AgnesD&lt;br /&gt;
*f.sisternas&lt;br /&gt;
*sl&lt;br /&gt;
*bernar03&lt;br /&gt;
*Gmillon&lt;br /&gt;
*Remy02&lt;br /&gt;
*Woznyrob&lt;br /&gt;
*penant&lt;br /&gt;
*fredmn&lt;br /&gt;
*vuille01&lt;br /&gt;
*nawal&lt;br /&gt;
*Tarek&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20917</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20917"/>
				<updated>2026-04-01T13:52:17Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Utilisation du chrono */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20916</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20916"/>
				<updated>2026-04-01T13:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Utilisation du bouton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20915</id>
		<title>Cours:InfoS2 EvaluationSimulIde</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_EvaluationSimulIde&amp;diff=20915"/>
				<updated>2026-04-01T13:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Utilisation du chenillard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Identification des cibles=&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cSlaveEvaluation.zip|I2cSlaveEvaluation.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  choisir le µc Master en tant que MainMCU  ***}}&lt;br /&gt;
 {{Rouge|***          !!!! le point jaune !!!!          ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Trouver l'adresse i2c du &amp;quot;slave afficheur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chenillard=&lt;br /&gt;
&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il n'y a pas de registres&lt;br /&gt;
*on enverra :&lt;br /&gt;
**la valeur 0 pour arrêter le chenillard&lt;br /&gt;
**la valeur 1 pour mettre en route le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*met en marche le chenillard pendant 1s&lt;br /&gt;
*l'arrête pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du bouton=&lt;br /&gt;
Le slave chenillard s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement lire des valeurs sur ce slave&lt;br /&gt;
*on lira :&lt;br /&gt;
**la valeur 0 lorsque le bouton n'est pas appuyé&lt;br /&gt;
**la valeur 1 lorsque le bouton est appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur du bouton sur la liaison série&lt;br /&gt;
*commande la mise en marche du chenillard avec le bouton&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Utilisation de l'afficheur 7 segments=&lt;br /&gt;
Le slave afficheur s'utilise de façon simple :&lt;br /&gt;
*on peut uniquement écrire des valeurs sur ce slave&lt;br /&gt;
*il y a 4 registres :&lt;br /&gt;
**registre {{Rouge|0}} : change la valeur des unités&lt;br /&gt;
**registre {{Rouge|1}} : change la valeur des dizaines&lt;br /&gt;
**registre {{Rouge|2}} : change la valeur des centaines&lt;br /&gt;
**registre {{Rouge|3}} : change la valeur des milliers&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*affiche la valeur &amp;quot;1234&amp;quot; pendant 1s&lt;br /&gt;
*affiche la valeur &amp;quot;9876&amp;quot; pendant 2s&lt;br /&gt;
*recommence&lt;br /&gt;
&lt;br /&gt;
=Utilisation du chrono=&lt;br /&gt;
Le slave chrono s'utilise de la façon suivante :&lt;br /&gt;
*on peut écrire ou lire des valeurs sur ce slave&lt;br /&gt;
*en écriture :&lt;br /&gt;
**écrire la valeur 0 permet d'arrêter le chrono&lt;br /&gt;
**écrire la valeur 1 permet de mettre en route le chrono et de le remettre à 0&lt;br /&gt;
*en lecture :&lt;br /&gt;
**on obtient la valeur du chronomètre&lt;br /&gt;
**il conviendra de multiplier la valeur lue en i2c par 8 pour obtenir la durée en ms&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme dans le master qui :}}&lt;br /&gt;
*lance le chrono&lt;br /&gt;
*attend 500ms&lt;br /&gt;
*arrête le chrono&lt;br /&gt;
*récupère la valeur du chrono&lt;br /&gt;
*affiche la valeur du chrono sur la liaison série (en ms)&lt;br /&gt;
*affiche la valeur du chrono sur le slave afficheur&lt;br /&gt;
*attend 5s avant de recommencer&lt;br /&gt;
&lt;br /&gt;
=Assemblons le tout=&lt;br /&gt;
&lt;br /&gt;
On réalise un jeu de réflexe : le joueur devra appuyer sur le bouton dès qu'il constate un changement sur le chenillard&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Ecrire un programme correspondant à l'algorithme suivant :}}&lt;br /&gt;
*attendre 1s&lt;br /&gt;
*démarrer le chenillard&lt;br /&gt;
*démarrer le chrono&lt;br /&gt;
*attendre appui sur le bouton&lt;br /&gt;
*arrêter le chrono&lt;br /&gt;
*arrêter le chenillard&lt;br /&gt;
*lire le chrono&lt;br /&gt;
*afficher la valeur du chrono sur l'afficheur&lt;br /&gt;
*attendre le relâchement du bouton&lt;br /&gt;
*attendre 5s&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Fichier:Micronucleus-cli-2.5-azd1-x86_64-linux-gnu.tar.bz2.zip&amp;diff=20914</id>
		<title>Fichier:Micronucleus-cli-2.5-azd1-x86 64-linux-gnu.tar.bz2.zip</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Fichier:Micronucleus-cli-2.5-azd1-x86_64-linux-gnu.tar.bz2.zip&amp;diff=20914"/>
				<updated>2026-04-01T08:51:09Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:Esp01&amp;diff=20913</id>
		<title>Cours:Esp01</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:Esp01&amp;diff=20913"/>
				<updated>2026-03-31T06:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
// SP-01&lt;br /&gt;
// connecter GPIO0 à la masse pour programmer&lt;br /&gt;
// GPIO0 en l'air pour démarrer !!&lt;br /&gt;
// connecter CH_PD au Vcc&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char* host = &amp;quot;esp01DataLog&amp;quot;;&lt;br /&gt;
const char* ssid = STASSID;&lt;br /&gt;
const char* password = STAPSK;&lt;br /&gt;
&lt;br /&gt;
WiFiServer server(8080); // Port TCP&lt;br /&gt;
&lt;br /&gt;
void setup(void) {&lt;br /&gt;
  Serial.begin(921600);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println(&amp;quot;Booting Sketch...&amp;quot;);&lt;br /&gt;
  WiFi.mode(WIFI_STA);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
  if (WiFi.waitForConnectResult() == WL_CONNECTED) {&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
    server.begin();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi Failed&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(void) {&lt;br /&gt;
  WiFiClient client = server.available();&lt;br /&gt;
  if (client) {&lt;br /&gt;
    while (client.connected()) {&lt;br /&gt;
      if (Serial.available()) {&lt;br /&gt;
        String data = Serial.readStringUntil('\n');&lt;br /&gt;
        data.trim(); // Supprime les espaces/retours chariot&lt;br /&gt;
        if (data.length() &amp;gt; 0) {&lt;br /&gt;
          client.print(data + &amp;quot;\n&amp;quot;);&lt;br /&gt;
          //Serial.println(&amp;quot;Envoyé: &amp;quot; + data); // Debug&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    client.stop();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=wifi=&lt;br /&gt;
on utilisera le réseau wifi :&lt;br /&gt;
* ssid robotGeii&lt;br /&gt;
* pwd  robotGeiiTroyes&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20912</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20912"/>
				<updated>2026-03-31T06:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
=Découpage fonctionnel=&lt;br /&gt;
&lt;br /&gt;
[[Media:DecoupageFcts2026.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20911</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20911"/>
				<updated>2026-03-30T09:33:26Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Fichier:DecoupageFcts2026.pdf&amp;diff=20910</id>
		<title>Fichier:DecoupageFcts2026.pdf</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Fichier:DecoupageFcts2026.pdf&amp;diff=20910"/>
				<updated>2026-03-30T07:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20909</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20909"/>
				<updated>2026-03-30T06:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20908</id>
		<title>Cours:SaeEvitementObstacles</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:SaeEvitementObstacles&amp;diff=20908"/>
				<updated>2026-03-30T06:36:54Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;---&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1GX3zPpdC4umtqc4B8hLjQZWTMNHfw7GfKqrpxW5ORzc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/drawings/d/1Sx1-TMEwxtu88lV1r9OLJn0NRbNuhe1B5LcxISXYEUo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
support de présentation : https://docs.google.com/presentation/d/1XX2BhkMtSTAADme2EaAWc-SifegQYEkAcy0RMHZ_woQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
fonctions informatiques : https://docs.google.com/document/d/1RmPY8mEmqChhHdfy2rKRFLjAjVSy4ZVAEw0Gml7Y8ZE/edit?tab=t.0&lt;br /&gt;
&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/&lt;br /&gt;
&lt;br /&gt;
https://www.festivalrobotiquecachan.fr/wp-content/uploads/Reglement_rencontres_de_robotique_GEII_BUT-1-2-3.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==1ère partie (2 semaines)==&lt;br /&gt;
*travail individuel&lt;br /&gt;
**travail à réaliser pour fin de la 2ème semaine&lt;br /&gt;
**évaluation à la fin de la 2ème semaine (schéma/routage)&lt;br /&gt;
**sélection de la meilleure carte pour fabrication&lt;br /&gt;
***finalisation des pcbs pour le {{Rouge|jeudi 3/04 matin}}&lt;br /&gt;
*cartes :&lt;br /&gt;
**balise émettrice&lt;br /&gt;
***choix de la fréquence&lt;br /&gt;
**balise de réglage&lt;br /&gt;
***à l'opposé du terrain&lt;br /&gt;
***permet de régler l'élévation de la balise émettrice&lt;br /&gt;
***affiche le niveau de puissance&lt;br /&gt;
**carte réceptrice IR (filtre)&lt;br /&gt;
**carte filtrage (se plug sur la carte réceptrice IR)&lt;br /&gt;
***on change de carte pour changer la fréquence&lt;br /&gt;
**carte µc&lt;br /&gt;
***connectique pour e/s&lt;br /&gt;
***driver moteurs&lt;br /&gt;
***fourni alim symétrique&lt;br /&gt;
**banc test pour la carte filtre&lt;br /&gt;
**banc test pour la carte réceptrice complète&lt;br /&gt;
&lt;br /&gt;
==2ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*Travail individuel&lt;br /&gt;
*montage des cartes&lt;br /&gt;
*vérification du fonctionnement&lt;br /&gt;
*réalisation programme : fonction à réaliser selon cdc&lt;br /&gt;
&lt;br /&gt;
==3ème partie (xx jours)==&lt;br /&gt;
&lt;br /&gt;
*travail en binôme ?&lt;br /&gt;
*programmation d'un robot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modalités d'évaluation=&lt;br /&gt;
&lt;br /&gt;
==1 soutenance==&lt;br /&gt;
*Vendredi 17/05 matin&lt;br /&gt;
**20 minutes de présentation&lt;br /&gt;
**10 minutes de questions&lt;br /&gt;
*Présentation(introduction) de chaque &amp;quot;partie&amp;quot; en anglais&lt;br /&gt;
&lt;br /&gt;
==1 dossier==&lt;br /&gt;
*Analyse fonctionnelle&lt;br /&gt;
*Nomenclature&lt;br /&gt;
*Chiffrage&lt;br /&gt;
*Etude détaillée de chaque fonction&lt;br /&gt;
*Schémas électriques/algorithmes/simulations/courbes caractéristiques/fonctions de transfert ...&lt;br /&gt;
&lt;br /&gt;
==Démonstration(s)==&lt;br /&gt;
&lt;br /&gt;
* Démonstration du fonctionnement le 12/05 à 12h&lt;br /&gt;
* Participation au festival de robotique à Cachan&lt;br /&gt;
&lt;br /&gt;
==Note de résultat - Evaluation travaux de SAE==&lt;br /&gt;
*Groupe : accomplissement du projet&lt;br /&gt;
*Individuelle : en fonction de &lt;br /&gt;
**Difficulté technique&lt;br /&gt;
**Quantité de travail&lt;br /&gt;
**Qualité de la réalisation&lt;br /&gt;
**Investissement : &amp;lt;big&amp;gt;évalué chaque jour&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Réalisation d'une vidéo==&lt;br /&gt;
Vidéo à réaliser pour le concours EEA :&lt;br /&gt;
 https://clubeea.com/concours-mon-projet-en-5-minutes/&lt;br /&gt;
&lt;br /&gt;
=Fonctions=&lt;br /&gt;
[[Cours:SaeEvitementObstaclesFonctions]]&lt;br /&gt;
&lt;br /&gt;
=Pages indispensables du wiki=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:Oscillogbf|Utilisation de python et Qt pour la réalisation d'un banc de test]]&lt;br /&gt;
*[[Cours:PiPico|Programmation de la carte pico rp2040]]&lt;br /&gt;
*[[Cours:Esp01|Utilisation d'un esp-01 pour faire de la supervision]]&lt;br /&gt;
&lt;br /&gt;
=Ressources informatique=&lt;br /&gt;
&lt;br /&gt;
*[[Cours:pixyUartArduino|Pixy]]&lt;br /&gt;
*https://www.waveshare.com/wiki/RPLIDAR_C1&lt;br /&gt;
&lt;br /&gt;
=Ressources=&lt;br /&gt;
&lt;br /&gt;
*https://www.eeweb.com/level-shifting-techniques-in-i2c-bus-design/&lt;br /&gt;
*https://github.com/drankinatty/pico-mpu9250&lt;br /&gt;
&lt;br /&gt;
*vérifier la &amp;quot;programmabilité&amp;quot; du µcontroleur :&lt;br /&gt;
**dans un terminal&lt;br /&gt;
**avrdude -c usbasp -p nomDuMicro&lt;br /&gt;
**ex : avrdude -c usbasp -p t2313&lt;br /&gt;
**ex : avrdude -c usbasp -p m328p&lt;br /&gt;
&lt;br /&gt;
*modification des fusibles pour choisir fréquence d'horloge:&lt;br /&gt;
**pour les atmega328p, dans le logiciel graver le bootloader&lt;br /&gt;
**pour les attiny (utiliser '''arduino v1''' !! ) :&lt;br /&gt;
***installer attinycore : https://github.com/SpenceKonde/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/Installation.md&lt;br /&gt;
***choisir le bon microcontroleur et la bonne source d'horloge&lt;br /&gt;
***graver la séquence d'initialisation&lt;br /&gt;
**pour les atmega2560, attention il faut modifier les fusibles par rapport au bootloader arduino :&lt;br /&gt;
***dans un terminal&lt;br /&gt;
***avrdude -v -patmega2560 -cusbasp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD9:m -Ulfuse:w:0xFF:m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*http://raphael.candelier.fr/?blog=XL_320&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20907</id>
		<title>Cours:InfoS2 tdI2cRegistres</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20907"/>
				<updated>2026-03-25T07:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Lire un registre i2c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cTd2.zip|I2cTd2.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Bleu|**************************************************}}&lt;br /&gt;
 {{Bleu|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Bleu|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|*** !!!  Relier la broche Ar à la broche A+ !! ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=vérification des @i2c=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Pensez à utiliser un programme pour lister les adresses des targets i2c, cf td précédent !}}&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
Les targets i2c {{Rouge|ne sont pas}} des composants programmables. Par contre, il convient de pouvoir les {{Rouge|configurer}}.&lt;br /&gt;
&lt;br /&gt;
Le principe retenu pour la plupart des targets est d'utiliser la notion de {{Rouge|registres}}.&lt;br /&gt;
*1 registre est une {{Rouge|mémoire}} sur la cible&lt;br /&gt;
*1 registre est associé à {{Rouge|une adresse}}&lt;br /&gt;
*chaque registre {{Rouge|modifie/observe}} le fonctionnement de la target&lt;br /&gt;
*1 registre à {{Rouge|un rôle spécifique}}&lt;br /&gt;
*pour {{Rouge|utiliser}} le composant, il faut indiquer {{Rouge|l'adresse}} du registre, que l'on souhaite {{Rouge|lire ou écrire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:I2c_modele.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une {{Rouge|transmission}} i2c devient alors une {{Rouge|trame}} selon le principe simplifié suivant :&lt;br /&gt;
*bit de start&lt;br /&gt;
*@ de la target (7 bits)&lt;br /&gt;
*bit de lecture/écriture&lt;br /&gt;
*{{Rouge|attente de l'acknowledge}} (accusé de bonne réception) de la cible&lt;br /&gt;
*choix d'un registre (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*envoi/réception de la valeur (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*bit de stop&lt;br /&gt;
&lt;br /&gt;
=Ecrire dans un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour modifier la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=7;&lt;br /&gt;
uint8_t value=0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
	    Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
	    Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
	    Wire.write(value);                    // sends value registre&lt;br /&gt;
	    Wire.endTransmission();               // stop transmitting&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les leds.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 6 registres d'adresses 0 à 5.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui modifie l'intensité lumineuse d'une led.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de faire varier l'intensité lumineuse d'une, puis de plusieurs, leds}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
&lt;br /&gt;
=Lire un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour lire la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=5;&lt;br /&gt;
uint8_t value=60;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();                             // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
		Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
		Wire.endTransmission();               // stop transmitting&lt;br /&gt;
		Wire.requestFrom(targetAdress, (uint8_t) 1);&lt;br /&gt;
		value = Wire.read();&lt;br /&gt;
		Serial.println(value);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les potentiomètres.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 4 registres d'adresses 0 à 3.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui varie en fonction de la position du potentiomètre.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de lire les valeurs des potentiomètres}}&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
&lt;br /&gt;
=Association=&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire en sorte que chaque potentiomètre modifie l'intensité lumineuse d'une led différente}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20906</id>
		<title>Cours:InfoS2 tdI2cRegistres</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20906"/>
				<updated>2026-03-24T22:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cTd2.zip|I2cTd2.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Bleu|**************************************************}}&lt;br /&gt;
 {{Bleu|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Bleu|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|*** !!!  Relier la broche Ar à la broche A+ !! ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=vérification des @i2c=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Pensez à utiliser un programme pour lister les adresses des targets i2c, cf td précédent !}}&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
Les targets i2c {{Rouge|ne sont pas}} des composants programmables. Par contre, il convient de pouvoir les {{Rouge|configurer}}.&lt;br /&gt;
&lt;br /&gt;
Le principe retenu pour la plupart des targets est d'utiliser la notion de {{Rouge|registres}}.&lt;br /&gt;
*1 registre est une {{Rouge|mémoire}} sur la cible&lt;br /&gt;
*1 registre est associé à {{Rouge|une adresse}}&lt;br /&gt;
*chaque registre {{Rouge|modifie/observe}} le fonctionnement de la target&lt;br /&gt;
*1 registre à {{Rouge|un rôle spécifique}}&lt;br /&gt;
*pour {{Rouge|utiliser}} le composant, il faut indiquer {{Rouge|l'adresse}} du registre, que l'on souhaite {{Rouge|lire ou écrire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:I2c_modele.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une {{Rouge|transmission}} i2c devient alors une {{Rouge|trame}} selon le principe simplifié suivant :&lt;br /&gt;
*bit de start&lt;br /&gt;
*@ de la target (7 bits)&lt;br /&gt;
*bit de lecture/écriture&lt;br /&gt;
*{{Rouge|attente de l'acknowledge}} (accusé de bonne réception) de la cible&lt;br /&gt;
*choix d'un registre (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*envoi/réception de la valeur (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*bit de stop&lt;br /&gt;
&lt;br /&gt;
=Ecrire dans un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour modifier la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=7;&lt;br /&gt;
uint8_t value=0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
	    Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
	    Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
	    Wire.write(value);                    // sends value registre&lt;br /&gt;
	    Wire.endTransmission();               // stop transmitting&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les leds.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 6 registres d'adresses 0 à 5.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui modifie l'intensité lumineuse d'une led.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de faire varier l'intensité lumineuse d'une, puis de plusieurs, leds}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
&lt;br /&gt;
=Lire un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour lire la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=5;&lt;br /&gt;
uint8_t value=60;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();                             // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
		Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
		Wire.endTransmission();               // stop transmitting&lt;br /&gt;
		Wire.requestFrom(targetAdress, (uint8_t) 1);&lt;br /&gt;
		value = Wire.read();&lt;br /&gt;
		Serial.println(value);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les potentiomètres.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 4 registres d'adresses 0 à 3.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui varie en fonction de la position du potentiomètre.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de lire les valeurs des potentiomètres}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
&lt;br /&gt;
=Association=&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire en sorte que chaque potentiomètre modifie l'intensité lumineuse d'une led différente}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20905</id>
		<title>Cours:InfoS2 tdI2cRegistres</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20905"/>
				<updated>2026-03-24T21:51:01Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Lire un registre i2c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cTd2.zip|I2cTd2.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=vérification des @i2c=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Pensez à utiliser un programme pour lister les adresses des targets i2c, cf td précédent !}}&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
Les targets i2c {{Rouge|ne sont pas}} des composants programmables. Par contre, il convient de pouvoir les {{Rouge|configurer}}.&lt;br /&gt;
&lt;br /&gt;
Le principe retenu pour la plupart des targets est d'utiliser la notion de {{Rouge|registres}}.&lt;br /&gt;
*1 registre est une {{Rouge|mémoire}} sur la cible&lt;br /&gt;
*1 registre est associé à {{Rouge|une adresse}}&lt;br /&gt;
*chaque registre {{Rouge|modifie/observe}} le fonctionnement de la target&lt;br /&gt;
*1 registre à {{Rouge|un rôle spécifique}}&lt;br /&gt;
*pour {{Rouge|utiliser}} le composant, il faut indiquer {{Rouge|l'adresse}} du registre, que l'on souhaite {{Rouge|lire ou écrire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:I2c_modele.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une {{Rouge|transmission}} i2c devient alors une {{Rouge|trame}} selon le principe simplifié suivant :&lt;br /&gt;
*bit de start&lt;br /&gt;
*@ de la target (7 bits)&lt;br /&gt;
*bit de lecture/écriture&lt;br /&gt;
*{{Rouge|attente de l'acknowledge}} (accusé de bonne réception) de la cible&lt;br /&gt;
*choix d'un registre (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*envoi/réception de la valeur (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*bit de stop&lt;br /&gt;
&lt;br /&gt;
=Ecrire dans un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour modifier la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=7;&lt;br /&gt;
uint8_t value=0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
	    Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
	    Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
	    Wire.write(value);                    // sends value registre&lt;br /&gt;
	    Wire.endTransmission();               // stop transmitting&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les leds.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 6 registres d'adresses 0 à 5.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui modifie l'intensité lumineuse d'une led.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de faire varier l'intensité lumineuse d'une, puis de plusieurs, leds}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
&lt;br /&gt;
=Lire un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour lire la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=5;&lt;br /&gt;
uint8_t value=60;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();                             // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
		Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
		Wire.endTransmission();               // stop transmitting&lt;br /&gt;
		Wire.requestFrom(targetAdress, (uint8_t) 1);&lt;br /&gt;
		value = Wire.read();&lt;br /&gt;
		Serial.println(value);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les potentiomètres.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 4 registres d'adresses 0 à 3.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui varie en fonction de la position du potentiomètre.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de lire les valeurs des potentiomètres}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
&lt;br /&gt;
=Association=&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire en sorte que chaque potentiomètre modifie l'intensité lumineuse d'une led différente}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20904</id>
		<title>Cours:InfoS2 tdI2cRegistres</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20904"/>
				<updated>2026-03-24T21:38:46Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Lire un registre i2c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cTd2.zip|I2cTd2.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=vérification des @i2c=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Pensez à utiliser un programme pour lister les adresses des targets i2c, cf td précédent !}}&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
Les targets i2c {{Rouge|ne sont pas}} des composants programmables. Par contre, il convient de pouvoir les {{Rouge|configurer}}.&lt;br /&gt;
&lt;br /&gt;
Le principe retenu pour la plupart des targets est d'utiliser la notion de {{Rouge|registres}}.&lt;br /&gt;
*1 registre est une {{Rouge|mémoire}} sur la cible&lt;br /&gt;
*1 registre est associé à {{Rouge|une adresse}}&lt;br /&gt;
*chaque registre {{Rouge|modifie/observe}} le fonctionnement de la target&lt;br /&gt;
*1 registre à {{Rouge|un rôle spécifique}}&lt;br /&gt;
*pour {{Rouge|utiliser}} le composant, il faut indiquer {{Rouge|l'adresse}} du registre, que l'on souhaite {{Rouge|lire ou écrire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:I2c_modele.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une {{Rouge|transmission}} i2c devient alors une {{Rouge|trame}} selon le principe simplifié suivant :&lt;br /&gt;
*bit de start&lt;br /&gt;
*@ de la target (7 bits)&lt;br /&gt;
*bit de lecture/écriture&lt;br /&gt;
*{{Rouge|attente de l'acknowledge}} (accusé de bonne réception) de la cible&lt;br /&gt;
*choix d'un registre (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*envoi/réception de la valeur (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*bit de stop&lt;br /&gt;
&lt;br /&gt;
=Ecrire dans un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour modifier la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=7;&lt;br /&gt;
uint8_t value=0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
	    Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
	    Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
	    Wire.write(value);                    // sends value registre&lt;br /&gt;
	    Wire.endTransmission();               // stop transmitting&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les leds.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 6 registres d'adresses 0 à 5.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui modifie l'intensité lumineuse d'une led.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de faire varier l'intensité lumineuse d'une, puis de plusieurs, leds}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
&lt;br /&gt;
=Lire un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour lire la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=5;&lt;br /&gt;
uint8_t value=60;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();                             // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
		Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
		Wire.endTransmission();               // stop transmitting&lt;br /&gt;
		Wire.requestFrom(targetAdress, 1);&lt;br /&gt;
		value = Wire.read();&lt;br /&gt;
		Serial.println(value);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les potentiomètres.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 4 registres d'adresses 0 à 3.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui varie en fonction de la position du potentiomètre.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de lire les valeurs des potentiomètres}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 uint8_t readI2cReg(uint8_t targetAddress, uint8_t regAddress)&lt;br /&gt;
&lt;br /&gt;
=Association=&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire en sorte que chaque potentiomètre modifie l'intensité lumineuse d'une led différente}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20903</id>
		<title>Cours:InfoS2 tdI2cRegistres</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2cRegistres&amp;diff=20903"/>
				<updated>2026-03-24T21:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Ecrire dans un registre i2c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2cRegistres prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:I2cTd2.zip|I2cTd2.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=vérification des @i2c=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Pensez à utiliser un programme pour lister les adresses des targets i2c, cf td précédent !}}&lt;br /&gt;
&lt;br /&gt;
=Registres=&lt;br /&gt;
&lt;br /&gt;
Les targets i2c {{Rouge|ne sont pas}} des composants programmables. Par contre, il convient de pouvoir les {{Rouge|configurer}}.&lt;br /&gt;
&lt;br /&gt;
Le principe retenu pour la plupart des targets est d'utiliser la notion de {{Rouge|registres}}.&lt;br /&gt;
*1 registre est une {{Rouge|mémoire}} sur la cible&lt;br /&gt;
*1 registre est associé à {{Rouge|une adresse}}&lt;br /&gt;
*chaque registre {{Rouge|modifie/observe}} le fonctionnement de la target&lt;br /&gt;
*1 registre à {{Rouge|un rôle spécifique}}&lt;br /&gt;
*pour {{Rouge|utiliser}} le composant, il faut indiquer {{Rouge|l'adresse}} du registre, que l'on souhaite {{Rouge|lire ou écrire}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:I2c_modele.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une {{Rouge|transmission}} i2c devient alors une {{Rouge|trame}} selon le principe simplifié suivant :&lt;br /&gt;
*bit de start&lt;br /&gt;
*@ de la target (7 bits)&lt;br /&gt;
*bit de lecture/écriture&lt;br /&gt;
*{{Rouge|attente de l'acknowledge}} (accusé de bonne réception) de la cible&lt;br /&gt;
*choix d'un registre (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*envoi/réception de la valeur (8 bits)&lt;br /&gt;
*acknowledge&lt;br /&gt;
*bit de stop&lt;br /&gt;
&lt;br /&gt;
=Ecrire dans un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour modifier la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=7;&lt;br /&gt;
uint8_t value=0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
	    Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
	    Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
	    Wire.write(value);                    // sends value registre&lt;br /&gt;
	    Wire.endTransmission();               // stop transmitting&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les leds.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 6 registres d'adresses 0 à 5.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui modifie l'intensité lumineuse d'une led.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de faire varier l'intensité lumineuse d'une, puis de plusieurs, leds}}&lt;br /&gt;
&lt;br /&gt;
{Question|Ecrire une fonction qui permet de modifier la valeur d'un registre d'une cible en respectant la signature suivante: }}&lt;br /&gt;
 void writeI2cReg(uint8_t targetAddress, uint8_t regAddress, uint8_t regValue)&lt;br /&gt;
&lt;br /&gt;
=Lire un registre i2c=&lt;br /&gt;
&lt;br /&gt;
Voici un programme d'exemple pour lire la valeur d'un registre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t targetAdress=0x04;&lt;br /&gt;
uint8_t regAd=5;&lt;br /&gt;
uint8_t value=60;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Wire.begin();                             // join i2c bus (address optional for master)&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		Wire.beginTransmission(targetAdress); // start transmitting&lt;br /&gt;
		Wire.write(regAd);                    // sends @ registre&lt;br /&gt;
		Wire.endTransmission();               // stop transmitting&lt;br /&gt;
		Wire.requestFrom(targetAdress, 1);&lt;br /&gt;
		while (Wire.available()) value = Wire.read();&lt;br /&gt;
		Serial.println(value);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous considérons ici la cible avec les potentiomètres.&lt;br /&gt;
&lt;br /&gt;
Cette target i2c possède 4 registres d'adresses 0 à 3.&lt;br /&gt;
&lt;br /&gt;
Chaque registre est une valeur [0 255], qui varie en fonction de la position du potentiomètre.&lt;br /&gt;
&lt;br /&gt;
{{Question|Ecrire un programme permettant de lire les valeurs des potentiomètres}}&lt;br /&gt;
&lt;br /&gt;
=Association=&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire en sorte que chaque potentiomètre modifie l'intensité lumineuse d'une led différente}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20901</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20901"/>
				<updated>2026-03-16T09:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3199 || 20% / 60% || 8 || ADC3 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 15999 || 10% / 90% || 1 || ADC2 || 7 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 3899 || 25% / 75% || 8 || ADC5 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 24999 || 40% / 60% || 1 || ADC4 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 2399 || 25% / 50% || 8 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 17999 || 30% / 70% || 1 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 2499 || 25% / 50% || 8 || ADC2 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 16999 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remarque''' : vous pouvez utiliser la liaison série pour mettre au point :&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20900</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20900"/>
				<updated>2026-03-12T10:25:38Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC3 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 7 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC5 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC2 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remarque''' : vous pouvez utiliser la liaison série pour mettre au point :&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20899</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20899"/>
				<updated>2026-03-12T10:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 7 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remarque''' : vous pouvez utiliser la liaison série pour mettre au point :&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20898</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20898"/>
				<updated>2026-03-12T10:24:16Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* génération de MLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remarque''' : vous pouvez utiliser la liaison série pour mettre au point :&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20897</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20897"/>
				<updated>2026-03-12T10:23:37Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* modification de la vitesse de consigne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remarque''' : vous pouvez utiliser la liaison série pour mettre au point :&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20896</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20896"/>
				<updated>2026-03-12T10:22:59Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* modification de la vitesse de consigne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
On va utiliser le potentiomètre pour modifier la valeur de consigne (nombre d'incréments/10ms)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|4|Ajouter la gestion du potentiomètre}}&lt;br /&gt;
*connecter le potentiomètre sur l'entrée indiquée dans le tableau&lt;br /&gt;
*configurer l'ADC&lt;br /&gt;
*faire varier le nombre d'incréments de 4 à 12 lorsque le potentiomètre tourne de part en part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   sei();&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
      Serial.println(&amp;quot;top&amp;quot;);&lt;br /&gt;
      _delay_ms(500);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20895</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20895"/>
				<updated>2026-03-12T10:13:11Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Asservissement de vitesse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit de diminuer(d'augmenter) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20894</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20894"/>
				<updated>2026-03-12T10:10:22Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Asservissement de vitesse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==modification de la vitesse de consigne==&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20893</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20893"/>
				<updated>2026-03-12T09:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Mise en marche/arrêt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20892</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20892"/>
				<updated>2026-03-12T09:45:08Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* génération de MLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|banchez le moteur et faire en sorte que}}&lt;br /&gt;
*en mode arrêt le moteur ne tourne pas (bouton relâché/led rouge allumée)&lt;br /&gt;
*en mode marche : le moteur change de vitesse selon les 2 valeurs de rapport cyclique toutes les 5 secondes&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20891</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20891"/>
				<updated>2026-03-12T09:43:04Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* mode marche/arrêt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*bouton est appuyé&lt;br /&gt;
**mode marche&lt;br /&gt;
**led verte allumée&lt;br /&gt;
*bouton n'est pas appuyé&lt;br /&gt;
**mode arrêt&lt;br /&gt;
**led rouge allumée&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|vous pouvez brancher le moteur et valider le fonctionnement}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20890</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20890"/>
				<updated>2026-03-12T09:42:14Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Travail à réaliser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
&lt;br /&gt;
==mode marche/arrêt==&lt;br /&gt;
&lt;br /&gt;
on utilise le bouton BP1 comme bouton '''marche''' :&lt;br /&gt;
 le moteur ne pourra tourner que si on maintient le bouton marche appuyé&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Visualisation du mode de fonctionnement avec 2 leds}}&lt;br /&gt;
*entrées/sorties&lt;br /&gt;
**relier le bouton sur la broche PD2&lt;br /&gt;
**relier la led rouge sur PD6&lt;br /&gt;
**relier la led verte sur PD7&lt;br /&gt;
*on est en mode marche si le bouton est appuyé      =&amp;gt; led verte allumée&lt;br /&gt;
*on est en mode arrêt si le bouton n'est pas appuyé =&amp;gt; led rouge allumée&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|vous pouvez brancher le moteur et valider le fonctionnement}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20889</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20889"/>
				<updated>2026-03-12T09:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|vous pouvez brancher le moteur et valider le fonctionnement}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==comptage avec un Timer==&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20888</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20888"/>
				<updated>2026-03-12T09:21:20Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* génération de MLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|génération et vérification de la MLI }}&lt;br /&gt;
*utilisation du Timer 1 (16 bits)&lt;br /&gt;
*en mode 14&lt;br /&gt;
*avec la valeur Top indiquée dans le tableau&lt;br /&gt;
*avec le prédiviseur indiqué dans le tableau&lt;br /&gt;
*faire varier le rapport cyclique :&lt;br /&gt;
**alterner entre les 2 valeur de rapport cyclique du tableau&lt;br /&gt;
**en changeant toutes les 5 secondes&lt;br /&gt;
*visualiser la MLI à l'oscilloscope&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|vous pouvez brancher le moteur et valider le fonctionnement}}&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
===Comptage par interruption===&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
===comptage avec un Timer===&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20887</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20887"/>
				<updated>2026-03-12T09:13:54Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! valeurs de rapport cyclique !! prédiviseur !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
Ecrire un programme qui :&lt;br /&gt;
*génère une mli&lt;br /&gt;
*dont on peut faire varier le rapport cylique avec le potentiomètre&lt;br /&gt;
&lt;br /&gt;
#{{Eval|5|etape 1 :}}&lt;br /&gt;
#*pas de potentiomètre&lt;br /&gt;
#*générer la mli en respectant les contraintes&lt;br /&gt;
#*la visualiser à l'oscilloscope&lt;br /&gt;
#*vous vérifierez avec quelques valeurs différentes de rapport cyclique&lt;br /&gt;
#{{Eval|4|etape 2 :}}&lt;br /&gt;
#*ajouter le potentiomètre en respectant la broche indiquée dans les contraintes&lt;br /&gt;
#*faire varier le rapport cyclique linéairement en fonction du potentiomètre&lt;br /&gt;
#*le rapport cyclique devra varier de 0 à 100% suivant la position du potentiomètre&lt;br /&gt;
#{{Eval|1|etape 3 :}} vous pouvez brancher le moteur et valider le fonctionnement&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
===Comptage par interruption===&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
===comptage avec un Timer===&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20886</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20886"/>
				<updated>2026-03-12T09:13:35Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* génération de MLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! prédiviseur !! valeurs de rapport cyclique !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans le tableau les contraintes (sortie du timer/ valeur Top / prédiviseur/valeurs de rapport cyclique)&lt;br /&gt;
&lt;br /&gt;
Ecrire un programme qui :&lt;br /&gt;
*génère une mli&lt;br /&gt;
*dont on peut faire varier le rapport cylique avec le potentiomètre&lt;br /&gt;
&lt;br /&gt;
#{{Eval|5|etape 1 :}}&lt;br /&gt;
#*pas de potentiomètre&lt;br /&gt;
#*générer la mli en respectant les contraintes&lt;br /&gt;
#*la visualiser à l'oscilloscope&lt;br /&gt;
#*vous vérifierez avec quelques valeurs différentes de rapport cyclique&lt;br /&gt;
#{{Eval|4|etape 2 :}}&lt;br /&gt;
#*ajouter le potentiomètre en respectant la broche indiquée dans les contraintes&lt;br /&gt;
#*faire varier le rapport cyclique linéairement en fonction du potentiomètre&lt;br /&gt;
#*le rapport cyclique devra varier de 0 à 100% suivant la position du potentiomètre&lt;br /&gt;
#{{Eval|1|etape 3 :}} vous pouvez brancher le moteur et valider le fonctionnement&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
===Comptage par interruption===&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
===comptage avec un Timer===&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20885</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20885"/>
				<updated>2026-03-12T09:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Validation de la MLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! prédiviseur !! valeurs de rapport cyclique !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==génération de MLI==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous allez générer une MLI qui permettra de faire varier la vitesse de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez &lt;br /&gt;
&lt;br /&gt;
Ecrire un programme qui :&lt;br /&gt;
*génère une mli&lt;br /&gt;
*dont on peut faire varier le rapport cylique avec le potentiomètre&lt;br /&gt;
&lt;br /&gt;
#{{Eval|5|etape 1 :}}&lt;br /&gt;
#*pas de potentiomètre&lt;br /&gt;
#*générer la mli en respectant les contraintes&lt;br /&gt;
#*la visualiser à l'oscilloscope&lt;br /&gt;
#*vous vérifierez avec quelques valeurs différentes de rapport cyclique&lt;br /&gt;
#{{Eval|4|etape 2 :}}&lt;br /&gt;
#*ajouter le potentiomètre en respectant la broche indiquée dans les contraintes&lt;br /&gt;
#*faire varier le rapport cyclique linéairement en fonction du potentiomètre&lt;br /&gt;
#*le rapport cyclique devra varier de 0 à 100% suivant la position du potentiomètre&lt;br /&gt;
#{{Eval|1|etape 3 :}} vous pouvez brancher le moteur et valider le fonctionnement&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
===Comptage par interruption===&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
===comptage avec un Timer===&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20884</id>
		<title>Cours:TPS 2103 tp regulationVitesse</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:TPS_2103_tp_regulationVitesse&amp;diff=20884"/>
				<updated>2026-03-12T08:39:45Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;accesscontrol&amp;gt;Acces:Prof&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contraintes=&lt;br /&gt;
*pour contrôler la vitesse du moteur :&lt;br /&gt;
**on utilisera un timer 16 bits (timer1)&lt;br /&gt;
**utilisation du timer1 dans le mode 14&lt;br /&gt;
*un potentiomètre sera utilisé en le reliant sur la broche indiquée ci-dessous&lt;br /&gt;
*vous respecterez les contraintes spécifiques suivantes :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Groupe TP !! sujet !! sortie du timer !! valeur max(top) du timer1 !! prédiviseur !! valeurs de rapport cyclique !! entrée potar !! nombre d'incréments / 10ms&lt;br /&gt;
|-&lt;br /&gt;
| 1A || A || OC1A || 3069 || 20% / 60% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1A || B || OC1A || 3069 || 10% / 90% || 8 || ADC2 || 9 &lt;br /&gt;
|-&lt;br /&gt;
| 1B || A || OC1B || 5115 || 25% / 75% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1B || B || OC1B || 5115 || 40% / 60% || 1 || ADC4 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2A || A || OC1A || 4092 || 25% / 50% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2A || B || OC1A || 4092 || 30% / 70% || 8 || ADC1 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 2B || A || OC1B || 6138 || 25% / 50% || 1 || ADC3 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2B || B || OC1B || 6138 || 40% / 75% || 1 || ADC3 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Travail à réaliser=&lt;br /&gt;
==Validation de la MLI==&lt;br /&gt;
Ecrire un programme qui :&lt;br /&gt;
*génère une mli&lt;br /&gt;
*dont on peut faire varier le rapport cylique avec le potentiomètre&lt;br /&gt;
&lt;br /&gt;
#{{Eval|5|etape 1 :}}&lt;br /&gt;
#*pas de potentiomètre&lt;br /&gt;
#*générer la mli en respectant les contraintes&lt;br /&gt;
#*la visualiser à l'oscilloscope&lt;br /&gt;
#*vous vérifierez avec quelques valeurs différentes de rapport cyclique&lt;br /&gt;
#{{Eval|4|etape 2 :}}&lt;br /&gt;
#*ajouter le potentiomètre en respectant la broche indiquée dans les contraintes&lt;br /&gt;
#*faire varier le rapport cyclique linéairement en fonction du potentiomètre&lt;br /&gt;
#*le rapport cyclique devra varier de 0 à 100% suivant la position du potentiomètre&lt;br /&gt;
#{{Eval|1|etape 3 :}} vous pouvez brancher le moteur et valider le fonctionnement&lt;br /&gt;
&lt;br /&gt;
==Mise en marche/arrêt==&lt;br /&gt;
{{Eval|2|Ajouter la gestion marche/arrêt avec un 1 bouton poussoir qui sera connecté sur la broche PD2 :}}&lt;br /&gt;
&lt;br /&gt;
 '''Vous devez utiliser une interruption pour réaliser cette fonction'''&lt;br /&gt;
&lt;br /&gt;
*au 1er appui on met en route le moteur&lt;br /&gt;
*à l'appui suivant il s'arrête&lt;br /&gt;
*il n'y a pas besoin de maintenir le bouton pour que le moteur tourne&lt;br /&gt;
*on conserve le potentiomètre pour modifier la vitesse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Attention'''&amp;lt;/big&amp;gt;, le rapport cyclique n'est jamais nul, pour arrêter le moteur&lt;br /&gt;
*déconnecter la broche du timer ( bits COMxxx)&lt;br /&gt;
*mettre la sortie à 0&lt;br /&gt;
&lt;br /&gt;
==Asservissement de vitesse==&lt;br /&gt;
===Comptage par interruption===&lt;br /&gt;
On utilise des fourches optiques [https://fr.farnell.com/vishay/tcut1300x01/capteur-transm-aec-q101-1-2v-cms/dp/2889654?st=TCUT1300X01 TCUT1300] pour détecter la rotation de l'arbre moteur.&lt;br /&gt;
&lt;br /&gt;
Il y a 8 dents sur la roue codeuse par tour.&lt;br /&gt;
&lt;br /&gt;
On utilisera l'entrée INT1 pour réaliser le comptage de la roue codeuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//interruption qui incrémente un compteur à chaque front montant de la fourche optique&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   // configuration dont timer/interruption&lt;br /&gt;
   while(1)&lt;br /&gt;
   {&lt;br /&gt;
       _delay_ms(10);&lt;br /&gt;
       // ttes les 10ms on :&lt;br /&gt;
       // regarde la valeur du compteur de la fourche optique&lt;br /&gt;
       // augmente/diminue la vitesse si le compteur est sup/inf à 8&lt;br /&gt;
       // remettre à 0 le compteur&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Eval|5|Asservir la vitesse de rotation de l'arbre moteur pour avoir le bon nombre d'incréments toutes les 10ms :}}&lt;br /&gt;
 '''Prendre la valeur demandée dans le tableau partie contraintes'''&lt;br /&gt;
&lt;br /&gt;
 Remarque : Il suffit d'augmenter(diminuer) le rapport cyclique si il y a trop (pas assez) d'impulsions dans le temps imparti.&lt;br /&gt;
&lt;br /&gt;
{{Eval|1|En déduire la vitesse de rotation en sortie de réducteur, et vérifier avec un tachymètre}}&lt;br /&gt;
&lt;br /&gt;
===comptage avec un Timer===&lt;br /&gt;
Il est possible de décharger le processeur de la tâche de comptage en utilisant un Timer.&lt;br /&gt;
&lt;br /&gt;
On utilisera le timer0 qu'on configurera :&lt;br /&gt;
*en mode normal&lt;br /&gt;
*entrée d'horloge sur T0 (choix avec les bits CS02/CS01/CS00)&lt;br /&gt;
*la valeur du compteur correspond au registre TCNT0&lt;br /&gt;
&lt;br /&gt;
{{Eval|2|Modifier votre programme en conséquence}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Remarques :&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*en observant les fronts montants+descendants il y a 16 impulsions par tour, ce qui permet d'augmenter la précision de la mesure de vitesse&lt;br /&gt;
*on peut jouer sur la durée du delay&lt;br /&gt;
**il faut rester dans les limites du compteur (8 bits)&lt;br /&gt;
**on peut éventuellement observer le bit de débordement du timer&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	<entry>
		<id>http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2c&amp;diff=20883</id>
		<title>Cours:InfoS2 tdI2c</title>
		<link rel="alternate" type="text/html" href="http://wikigeii.iut-troyes.univ-reims.fr//index.php?title=Cours:InfoS2_tdI2c&amp;diff=20883"/>
				<updated>2026-03-11T08:34:52Z</updated>
		
		<summary type="html">&lt;p&gt;Bjacquot : /* Ecrire sur le slave : Envoyer des données du controller à la target i2c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{EnTeteTdInfoS2|InfoS2 tdI2c prof}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Fichiers pour simulide : [[Media:infoI2cTd1.zip|I2cTd1.zip]]&lt;br /&gt;
&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
 {{Rouge|***  Attention, programme dans un fichier .ino ***}}&lt;br /&gt;
 {{Rouge|**************************************************}}&lt;br /&gt;
&lt;br /&gt;
=Framework Arduino=&lt;br /&gt;
&lt;br /&gt;
Lors des tds précédents, nous avons utilisé uniquement les fonctions de la {{Rouge|bibliothèque standard libc}} pour avr.&lt;br /&gt;
&lt;br /&gt;
{{Rouge|L'inconvénient}} principal réside dans la nécessité de devoir {{Rouge|écrire/adapter un programme}} pour chaque µcontroleur (aussi nommé {{Rouge|cible}}). {{Rouge|L'avantage}} principal est d'avoir un programme très {{Rouge|efficient}} en terme de taille d'exécutable et de rapidité d'exécution, et également beaucoup {{Rouge|plus simple à écrire}}.&lt;br /&gt;
&lt;br /&gt;
Afin de simplifier le changement de cible, on utilise le concept de {{Rouge|couches d'abstractions}}.&lt;br /&gt;
&lt;br /&gt;
[[Image:CoucheAbstraction.png|400px]]&lt;br /&gt;
&lt;br /&gt;
L'idée sous-jacente est de ne pas faire un programme qui s'occupe de gérer directement les périphériques, mais utilise des fonctions qui s'occupent de faire le lien, un exemple sera plus parlant !&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
PORTB|=(1&amp;lt;&amp;lt;PB0);&lt;br /&gt;
digialWrite(8,1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ces 2 instructions sont équivalentes pour une carte arduino UNO, elles mettent toutes les 2 à 1 la broche étiquetée 8 sur cette carte.&lt;br /&gt;
&lt;br /&gt;
Si nous changeons de carte (arduino Mega par ex), la broche utilisée sur le µcontroleur n'est pas la même et il faut alors remplacer :&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
PORTH|=(1&amp;lt;&amp;lt;PH5);&lt;br /&gt;
digialWrite(8,1);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'intérêt est ici évident de l'utilisation du {{Rouge|framework}} (ensemble de fonctions) arduino qui permet d'écrire un {{Rouge|programme quasiment indépendant de la carte (cible) utilisée}}.&lt;br /&gt;
&lt;br /&gt;
Si nous parlons {{Rouge|d'efficacité}} par contre, la fonction {{Rouge|digialWrite}} est environ {{Rouge|20 fois moins rapide}} !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il existe quelques framework pour les cibles {{Rouge|avr}} (famille des µcontroleurs aTmega ATtiny), nous utiliserons le {{Rouge|framework arduino}} pour utiliser la {{Rouge|liaison i2c}}, l'utilisation du périphérique du µcontroleur étant assez fastidieux à configurer.&lt;br /&gt;
&lt;br /&gt;
== En pratique sur Simulide ==&lt;br /&gt;
&lt;br /&gt;
* Télécharger l'archive &amp;lt;code&amp;gt;I2cTd1.zip&amp;lt;/code&amp;gt; (en haut de ce document)&lt;br /&gt;
* Dans Simulide : ouvrir le fichier &amp;lt;code&amp;gt;schemaI2cTd1.sim&amp;lt;/code&amp;gt;&lt;br /&gt;
* Le programme doit être écrit dans un fichier d'extension &amp;lt;code&amp;gt;.ino&amp;lt;/code&amp;gt; et enregistré dans le dossier décompressé (qui ne doit pas contenir d'autres fichier .c ou .cpp)&lt;br /&gt;
* La ligne habituelle &amp;lt;code&amp;gt;// Compiler: Avrgcc device: nomDuMicrocontroleur&amp;lt;/code&amp;gt; est ici inutile&lt;br /&gt;
* Dans &amp;lt;code&amp;gt;compiler/settings&amp;lt;/code&amp;gt;, vous devez indiquer le chemin du ''tool path'' Arduino : &amp;lt;code&amp;gt;/opt/arduino-1.8.19/&amp;lt;/code&amp;gt; (avec les &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;). Contrôler que la carte est bien une 'Uno'.&lt;br /&gt;
* Pour ouvrir un moniteur série : clic droit sur le composant et sélectionner ''ouvrir le moniteur série'', puis ''USart1''&lt;br /&gt;
&lt;br /&gt;
=Trouver les adresses des &amp;quot;targets&amp;quot; (esclave i2c)=&lt;br /&gt;
&lt;br /&gt;
On programmera pour le moment uniquement la carte &amp;quot;controller&amp;quot; (identifiée carte n°2 sur tinkercad).&lt;br /&gt;
&lt;br /&gt;
{{Question|L'adresse d'un composant i2c étant codée sur 7 bits, quel est le nombre d'@ au total}}&lt;br /&gt;
&lt;br /&gt;
'''Rque''' : certaines adresses sont réservées et non utilisables pour les périphériques.&lt;br /&gt;
&lt;br /&gt;
{{Question|Trouvez les adresses des targets en utilisant le programme suivant :}}&lt;br /&gt;
&lt;br /&gt;
'''Rque''' :&lt;br /&gt;
*les valeurs s'affichent dans le moniteur série&lt;br /&gt;
*il n'est pas nécessaire de comprendre le programme, ça viendra plus tard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	Serial.begin(115200);&lt;br /&gt;
	Serial.println(&amp;quot;I2C Scanner\n&amp;quot;);&lt;br /&gt;
	Wire.begin();&lt;br /&gt;
	sei();&lt;br /&gt;
	while(1)&lt;br /&gt;
	{&lt;br /&gt;
		byte error, address;&lt;br /&gt;
		int nDevices;&lt;br /&gt;
		Serial.println(&amp;quot;Scanning...&amp;quot;);&lt;br /&gt;
		nDevices = 0;&lt;br /&gt;
		for(address = 1; address &amp;lt; 127; address++ )&lt;br /&gt;
		{&lt;br /&gt;
			// The i2c_scanner uses the return value of&lt;br /&gt;
			// the Write.endTransmisstion to see if&lt;br /&gt;
			// a device did acknowledge to the address.&lt;br /&gt;
			Wire.beginTransmission(address);&lt;br /&gt;
			error = Wire.endTransmission();&lt;br /&gt;
			if (error == 0)&lt;br /&gt;
			{&lt;br /&gt;
				Serial.print(&amp;quot;I2C device found at address 0x&amp;quot;);&lt;br /&gt;
				if (address&amp;lt;16) Serial.print(&amp;quot;0&amp;quot;);&lt;br /&gt;
				Serial.print(address,HEX);&lt;br /&gt;
				Serial.println(&amp;quot;  !&amp;quot;);&lt;br /&gt;
				nDevices++;&lt;br /&gt;
			}&lt;br /&gt;
			else if (error==4)&lt;br /&gt;
			{&lt;br /&gt;
				Serial.print(&amp;quot;Unknown error at address 0x&amp;quot;);&lt;br /&gt;
				if (address&amp;lt;16) Serial.print(&amp;quot;0&amp;quot;);&lt;br /&gt;
				Serial.println(address,HEX);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (nDevices == 0)	Serial.println(&amp;quot;No I2C devices found\n&amp;quot;);&lt;br /&gt;
		else				Serial.println(&amp;quot;done\n&amp;quot;);&lt;br /&gt;
		_delay_ms(100);           // wait 5 seconds for next scan&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecrire sur le slave : Envoyer des données du controller à la target i2c=&lt;br /&gt;
&lt;br /&gt;
Nous utilisons la librairie [https://www.arduino.cc/en/Reference/Wire Wire] du framework arduino.&lt;br /&gt;
&lt;br /&gt;
Pour envoyer des données vers la target i2c, il convient de :&lt;br /&gt;
*indiquer l'@ de la target&lt;br /&gt;
*envoyer la (ou les) donnée(s)&lt;br /&gt;
*fermer la connection&lt;br /&gt;
&lt;br /&gt;
Ce qui donne :&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t slaveAdress=0x04; // ou 4 ou 0b100 !&lt;br /&gt;
uint8_t value = 0b10101010;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  Wire.begin(); // join i2c bus (address optional for master)&lt;br /&gt;
  sei();        // la librairie Wire utilise des interruptions&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    Wire.beginTransmission(slaveAdress); // transmit to device #4&lt;br /&gt;
    Wire.write(value);              // sends one byte  &lt;br /&gt;
    Wire.endTransmission();    // stop transmitting&lt;br /&gt;
&lt;br /&gt;
    _delay_ms(100);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Question|Modifier le programme pour envoyer la donnée à la carte arduino sur laquelle sont branchées les leds, et faire en sorte que les leds allumées changent toutes les 200ms par ex}}&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire une fonction pour écrire une valeur en i2c}}&lt;br /&gt;
&lt;br /&gt;
=Lire sur le slave : la target envoie des données au controller=&lt;br /&gt;
&lt;br /&gt;
Le transfert de données de la target vers le controller se passe de façon un peu différente. On programme le controller de la façon suivante :&lt;br /&gt;
*demander à un périphérique i2c d'envoyer un certain nombre de données (octets, 8 bits donc)&lt;br /&gt;
*tant qu'il y a des données i2c à lire :&lt;br /&gt;
**lire la donnée&lt;br /&gt;
&lt;br /&gt;
ce qui donne :&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
const uint8_t slaveAdress=0x04; // ou 4 ou 0b100 !&lt;br /&gt;
uint8_t value;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  Wire.begin();        // join i2c bus (address optional for master)&lt;br /&gt;
  Serial.begin(9600);  // start serial for output&lt;br /&gt;
  sei();               // pour la librairie Wire&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    Wire.requestFrom(slaveAdress, 1);  // request 1 bytes(octet) from peripheral device @4&lt;br /&gt;
    value = Wire.read();             // receive a byte as character&lt;br /&gt;
&lt;br /&gt;
    Serial.println(value);           // print the character&lt;br /&gt;
    _delay_ms(500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Question|Modifier le programme pour obtenir de la carte arduino sur laquelle est branchée le potentiomètre la &amp;quot;valeur&amp;quot; de celui-ci toutes les 200ms.}}&lt;br /&gt;
&lt;br /&gt;
{{Question|Faire une fonction pour lire une valeur en i2c}}&lt;br /&gt;
&lt;br /&gt;
=Utilisation des 2 targets=&lt;br /&gt;
&lt;br /&gt;
{{Question|Réunissez vos 2 programmes pour faire en sorte que le potentiomètre serve à modifier l'état des leds, par ex :}}&lt;br /&gt;
*afficher la valeur du potar sur les leds&lt;br /&gt;
*faire un chenillard piloté par le potentiomètre&lt;br /&gt;
&lt;br /&gt;
'''Rque''' : on ne changera pas le programme des targets.&lt;br /&gt;
&lt;br /&gt;
=Ajout d'une autre target=&lt;br /&gt;
&lt;br /&gt;
{{Todo|Dupliquer les cartes arduino avec les leds et le potetiomètre}}&lt;br /&gt;
*Il y aura donc&lt;br /&gt;
**2 cartes avec des leds&lt;br /&gt;
**2 cartes avec un potentiomètre&lt;br /&gt;
*pour modifier l'@ des cibles i2c, modifier le niveau logique sur les broches PB0 et PB1&lt;br /&gt;
&lt;br /&gt;
{{Question|Modifier votre programme pour que chaque potentiomètre pilote une série de leds différentes.}}&lt;/div&gt;</summary>
		<author><name>Bjacquot</name></author>	</entry>

	</feed>