{"id":17351,"date":"2025-03-01T23:12:49","date_gmt":"2025-03-01T23:12:49","guid":{"rendered":"https:\/\/edukeytech.com\/?post_type=product&#038;p=17351"},"modified":"2025-03-01T23:14:18","modified_gmt":"2025-03-01T23:14:18","slug":"encodeur-rotatif","status":"publish","type":"product","link":"https:\/\/edukeytech.com\/en\/product\/encodeur-rotatif\/","title":{"rendered":"Encodeur Rotatif"},"content":{"rendered":"<p><strong>Le module encodeur rotatif KY-040 est un composant \u00e9lectrom\u00e9canique essentiel pour la d\u00e9tection de mouvements de rotation, offrant une pr\u00e9cision accrue dans l&rsquo;encodage de la position et du d\u00e9placement angulaire. Con\u00e7u pour des applications vari\u00e9es telles que le contr\u00f4le de position des axes, la commande de moteurs et les interfaces utilisateur interactives, cet encodeur est id\u00e9al pour les projets Arduino, les syst\u00e8mes robotiques et les dispositifs de navigation.<\/strong><\/p>\n<p><strong>Caract\u00e9ristiques Techniques<\/strong><\/p>\n<ul>\n<li><strong>Tension d\u2019alimentation : 5V DC, compatible avec la majorit\u00e9 des microcontr\u00f4leurs et plateformes de prototypage.<\/strong><\/li>\n<li><strong>Type d\u2019encodeur : Incr\u00e9mental \u00e0 signaux de quadrature (sorties A et B), permettant la d\u00e9tection du sens et de l&rsquo;amplitude de la rotation.<\/strong><\/li>\n<li><strong>R\u00e9solution : Plusieurs impulsions par r\u00e9volution, garantissant une pr\u00e9cision adapt\u00e9e aux syst\u00e8mes de commande fine.<\/strong><\/li>\n<li><strong>Interrupteur int\u00e9gr\u00e9 : Bouton-poussoir incorpor\u00e9 permettant une interaction suppl\u00e9mentaire, utile pour les interfaces utilisateur.<\/strong><\/li>\n<li><strong>Dimensions compactes : Con\u00e7u pour une int\u00e9gration facile dans les panneaux de contr\u00f4le et les syst\u00e8mes embarqu\u00e9s.<\/strong><\/li>\n<\/ul>\n<p><strong>Principe de Fonctionnement<\/strong><\/p>\n<p><strong>Le KY-040 repose sur un syst\u00e8me d&rsquo;encodage incr\u00e9mental \u00e0 quadrature. En tournant l&rsquo;arbre de l&rsquo;encodeur, deux signaux d\u00e9phas\u00e9s (CLK et DT) sont g\u00e9n\u00e9r\u00e9s, permettant de d\u00e9terminer la direction et le nombre de pas effectu\u00e9s. Le bouton-poussoir int\u00e9gr\u00e9 peut \u00eatre utilis\u00e9 pour ajouter une fonctionnalit\u00e9 de validation ou de s\u00e9lection.<\/strong><\/p>\n<p><strong>Applications<\/strong><\/p>\n<ul>\n<li><strong>Contr\u00f4le rotatif pour interfaces utilisateur : R\u00e9glages de param\u00e8tres, navigation dans les menus.<\/strong><\/li>\n<li><strong>Commande de moteurs et asservissement : Ajustement de vitesse et de position en boucle ferm\u00e9e.<\/strong><\/li>\n<li><strong>Navigation et odom\u00e9trie robotique : Suivi de d\u00e9placement pour robots mobiles.<\/strong><\/li>\n<li><strong>Projets DIY et domotique : Cr\u00e9ation de syst\u00e8mes interactifs et ergonomiques.<\/strong><\/li>\n<\/ul>\n<p><strong>Brochage du Module<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Broche<\/strong><\/td>\n<td><strong>Fonction<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>GND<\/strong><\/td>\n<td><strong>Masse<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>VCC<\/strong><\/td>\n<td><strong>Alimentation (5V)<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>SW<\/strong><\/td>\n<td><strong>Sortie du bouton-poussoir (Normally Open)<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>DT<\/strong><\/td>\n<td><strong>Signal de sortie B<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>CLK<\/strong><\/td>\n<td><strong>Signal de sortie A<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Int\u00e9gration avec Arduino Uno<\/strong><\/p>\n<p><strong>Sch\u00e9ma de Connexion<\/strong><\/p>\n<ul>\n<li><strong>VCC \u2192 5V (Arduino)<\/strong><\/li>\n<li><strong>GND \u2192 GND (Arduino)<\/strong><\/li>\n<li><strong>CLK \u2192 D4 (Arduino)<\/strong><\/li>\n<li><strong>DT \u2192 D3 (Arduino)<\/strong><\/li>\n<li><strong>SW \u2192 D2 (Arduino)<\/strong><\/li>\n<\/ul>\n<p><strong>Exemple de Code Arduino (Lecture de l&rsquo;Encodeur)<\/strong><\/p>\n<p><strong>#define CLK 4<\/strong><\/p>\n<p><strong>#define DT 3<\/strong><\/p>\n<p><strong>#define SW 2<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>int counter = 0;<\/strong><\/p>\n<p><strong>int currentStateCLK;<\/strong><\/p>\n<p><strong>int lastStateCLK;<\/strong><\/p>\n<p><strong>String currentDir = \u00ab\u00a0\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>void setup() {<\/strong><\/p>\n<p><strong>\u00a0 Serial.begin(9600);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(CLK, INPUT);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(DT, INPUT);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(SW, INPUT_PULLUP);<\/strong><\/p>\n<p><strong>\u00a0 lastStateCLK = digitalRead(CLK);<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>void loop() {<\/strong><\/p>\n<p><strong>\u00a0 currentStateCLK = digitalRead(CLK);<\/strong><\/p>\n<p><strong>\u00a0 if (currentStateCLK != lastStateCLK) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 if (digitalRead(DT) != currentStateCLK) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 counter&#8211;;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 currentDir = \u00ab\u00a0CCW\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 } else {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 counter++;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 currentDir = \u00ab\u00a0CW\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 }<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.print(\u00ab\u00a0Direction: \u00ab\u00a0);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.print(currentDir);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.print(\u00a0\u00bb | Counter: \u00ab\u00a0);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.println(counter);<\/strong><\/p>\n<p><strong>\u00a0 }<\/strong><\/p>\n<p><strong>\u00a0 lastStateCLK = currentStateCLK;<\/strong><\/p>\n<p><strong>\u00a0 if (digitalRead(SW) == LOW) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.println(\u00ab\u00a0Button Pressed\u00a0\u00bb);<\/strong><\/p>\n<p><strong>\u00a0 <\/strong><strong>}<\/strong><\/p>\n<p><strong>\u00a0 delay(50);<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p><strong>Code Arduino Avanc\u00e9 (Affichage sur LCD I2C)<\/strong><\/p>\n<p><strong>#include &lt;Wire.h&gt;<\/strong><\/p>\n<p><strong>#include &lt;LiquidCrystal_I2C.h&gt;<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>LiquidCrystal_I2C lcd(0x27, 16, 2);<\/strong><\/p>\n<p><strong>#define CLK 4<\/strong><\/p>\n<p><strong>#define DT 3<\/strong><\/p>\n<p><strong>#define SW 2<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>int counter = 0;<\/strong><\/p>\n<p><strong>int currentStateCLK;<\/strong><\/p>\n<p><strong>int lastStateCLK;<\/strong><\/p>\n<p><strong>String currentDir = \u00ab\u00a0\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>void setup() {<\/strong><\/p>\n<p><strong>\u00a0 lcd.begin();<\/strong><\/p>\n<p><strong>\u00a0 lcd.backlight();<\/strong><\/p>\n<p><strong>\u00a0 Serial.begin(9600);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(CLK, INPUT);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(DT, INPUT);<\/strong><\/p>\n<p><strong>\u00a0 pinMode(SW, INPUT_PULLUP);<\/strong><\/p>\n<p><strong>\u00a0 lastStateCLK = digitalRead(CLK);<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>void loop() {<\/strong><\/p>\n<p><strong>\u00a0 currentStateCLK = digitalRead(CLK);<\/strong><\/p>\n<p><strong>\u00a0 if (currentStateCLK != lastStateCLK) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 if (digitalRead(DT) != currentStateCLK) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 counter&#8211;;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 currentDir = \u00ab\u00a0CCW\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 } else {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 counter++;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0 currentDir = \u00ab\u00a0CW\u00a0\u00bb;<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 }<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.clear();<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.setCursor(0, 0);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.print(\u00ab\u00a0Pos: \u00ab\u00a0);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.print(counter);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.setCursor(0, 1);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.print(\u00ab\u00a0Dir: \u00ab\u00a0);<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 lcd.print(currentDir);<\/strong><\/p>\n<p><strong>\u00a0 }<\/strong><\/p>\n<p><strong>\u00a0 lastStateCLK = currentStateCLK;<\/strong><\/p>\n<p><strong>\u00a0\u00a0if (digitalRead(SW) == LOW) {<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 Serial.println(\u00ab\u00a0Button Pressed\u00a0\u00bb);<\/strong><\/p>\n<p><strong>\u00a0 <\/strong><strong>}<\/strong><\/p>\n<p><strong>\u00a0 delay(50);<\/strong><\/p>\n<p><strong>}<\/strong><\/p>\n<p><strong>Installation des Biblioth\u00e8ques pour le LCD<\/strong><\/p>\n<p><strong>Pour utiliser l&rsquo;\u00e9cran LCD I2C, installez la biblioth\u00e8que LiquidCrystal I2C dans l&rsquo;IDE Arduino :<\/strong><\/p>\n<ol>\n<li><strong>Ouvrez l&rsquo;IDE Arduino.<\/strong><\/li>\n<li><strong>Allez dans Croquis &gt; Inclure une biblioth\u00e8que &gt; G\u00e9rer les biblioth\u00e8ques.<\/strong><\/li>\n<li><strong>Recherchez LiquidCrystal I2C et installez la biblioth\u00e8que correspondante.<\/strong><\/li>\n<\/ol>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p><strong>Le module encodeur rotatif KY-040 est un composant \u00e9lectrom\u00e9canique essentiel pour la d\u00e9tection de mouvements de rotation, offrant une pr\u00e9cision accrue dans l&rsquo;encodage de la position et du d\u00e9placement angulaire.<\/strong><\/p>","protected":false},"featured_media":17353,"comment_status":"open","ping_status":"closed","template":"","meta":{"_joinchat":[]},"product_brand":[],"product_cat":[161],"product_tag":[],"class_list":{"0":"post-17351","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-capteurs","8":"first","9":"instock","10":"shipping-taxable","11":"purchasable","12":"product-type-simple"},"_links":{"self":[{"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product\/17351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/comments?post=17351"}],"version-history":[{"count":1,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product\/17351\/revisions"}],"predecessor-version":[{"id":17355,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product\/17351\/revisions\/17355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/media\/17353"}],"wp:attachment":[{"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/media?parent=17351"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product_brand?post=17351"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product_cat?post=17351"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/edukeytech.com\/en\/wp-json\/wp\/v2\/product_tag?post=17351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}