Mise à jour le 29/12/2019 :Dans cette rubrique , la foire aux questions , nous traitons d’un grand nombre de questions génériques traitant des différents problèmes rencontrés en robotique .
Sommaire :
Le langage Arduino |
.
- Généralité :
- Quelle est La définition et Le contenu d’une fonction ?
- Variable numérique .
- Quels sont les différentes types de variables numériques ?
- Les entrées sorties sur Arduino.
- Comment déclarer des entrées sorties numérique ? ( tutoriel vidéo ).
- Fonction booléenne.
- Utilisation de la fonction booléenne et avec 2 boutons poussoirs (tutoriel vidéo).
- Utilisation de la fonction booléenne ou avec 2 boutons poussoirs (tutoriel vidéo).
- Gestion du temps .
- Comment réaliser un clignoteur avec un réglage extérieur ( tutoriel vidéo ) ?
- Existe-t-il une fonction pour gérer le temps qui ne bloque pas le programme , autre que la commande delay ?
- Moniteur série.
- Comment afficher un nombre à virgule sur le moniteur série ?
- Utilisation du traceur de courbe ( ou traceur série Arduino )
- Interruption .
- Combien y-t-il d’interruption externe sur Arduino mega 2560 ?
.
Le logiciel Processing |
.
- Comment définir la taille de l’écran ou l’espace de travail ?
- Ecrire un texte à l’écran , choix de la couleur , de la taille et du positionnement.
- La typographie : Comment importer une police de caractères.
- Quels sont les types de formes utilisables dans Processing ?
- Comment déplacer un texte avec la commande translate sans effacement de l’ancienne position.
- Création d’un cercle point par point sur Processing
.
Information sur Arduino Uno |
- Affectation des broches pour Arduino Uno R2 Pinout .
- Combien d’entrées / sorties numériques possède la carte Uno ?
- Combien d’entrées analogiques possède la carte Arduino Uno ?
.
Comment mesurer une distance avec Arduino ? |
.
- Programme de mesure de distance avec le télémètre à ultrasons Grove 101020010 avec affichage sur l’écran de l’IDE arduino.
- Programme de mesure de distance avec 2 capteurs ultrason et affichage sur le moniteur avec le télémètre 101020010
- Comment détecter un niveau bas et haut avec 1 capteur ultrason Grove 101020010 ?
- Comment afficher les valeurs du capteur ultrason 101020010 sur Afficheur LCD I2C Grove référence 104030001?
- Mesurer une distance avec le module Grove Time Of Flight 101020532 (distance de 0.3 à 10 métres).
- Comment mesurer une distance avec le capteur Lidar de chez Seeedstudio ref-14991434 ( distance de 0.3 à 12 métres ).
- Le télémètre laser SF02/F pour Arduino (distance de 0.5 à 40 métres ).
- Laser LIDAR-Lite 3 informations et programme constructeur
.
Comment utiliser la LED RGB de chez Seeed
|
.
- Comment installer la bibliothèque de la Led Grove?
- Comment choisir la couleur du LED RGB et obtenir ces paramètres?
- Comment faire défiler toutes les couleurs de la LED ?
- Comment utiliser un programme minimun pour le fonctionnement des Led RGB?
- Comment utiliser une LED RGB , ce qui vous permettra de choisir le spectre lumineux ? (Version Arduino IDE 1.6.13)?
- Comment choisir plusieurs spectres lumineux par l’intermédiaire de trois boutons?
A savoir : La version 2.00 ( 104020048 ) du point de vue fonctionnement est identique à la Version 1.00 (104030006 ) .La seule différence notable se trouve sur la partie du circuit imprimé, il est plus grand que la version 1.00. Cette modification a été faite pour que les câbles ne soient plus tordus.
.
Comment détecter une ambiance sonore ? |
.
- Programme de mesure de l’ambiance sonore avec le capteur Grove 101020063 avec affichage des valeurs sur l’écran de l’IDE Arduino?
- Comment effectuer un ré-étalonnage du signal sonore brut du capteur Grove 101020063?
- Detection d’une ambiance avec le capteur sonore Gravity DFR0034.
Comment détecter des gestes de la main ? |
.
- Definition et theorie des capteurs de flexion unidirectionnel et bidirectionnel
- Comment reproduire les mouvements des doigts avec un capteur de flexion et les transmettre vers une main de robot en montage filaire ?
- Avec le capteur de geste Grove 101020083.
- Comment utiliser le capteur de mouvement 3D SEN0202 ?
.
Commutation rapide de charge sur Arduino |
.
- Comment commuter une charge jusqu’à 5 Mhz pour une tension comprise 5 à 15 Vcc et 2 A maxi ?
.
La communication I2c sur Arduino |
.
- Communication I2c 1 maître 2 esclaves ( Arduino Mega ) : niveau difficulté de 4/10
- Comment effectuer une conversion analogique numérique asymétrique sur le canal spécifié avec un convertisseur digital en I2C
.
La communication sans fil avec les modules Xbee |
.
- Arduino sans fil grâce aux modules Xbee.
- Comment Piloter un Arduino à distance ?
.
L’utilisation des modules GPS sur Arduino |
.
- Comment récupérer les coordonnées GPS avec le module Grove SEN10752P ?
.
Les servomoteurs . |
.
- Comment fonctionnent les servomoteurs ? explication , apparence , construction mécanique, raccordement électrique etc …
- Comment définir le couple d’un servomoteur ?
- Comment connecter 2 servomoteurs possédant chacun une tension d’alimentation différentes ?
- Existe t-il un servomoteur avec un couple de 100 kg-cm ?
- Comment positionner un servomoteur à 90° avec une carte Arduino ?
- Comment positionner un servomoteur à l’aide d’un potentiomètre ?
- Rappel du fonctionnement des servomoteurs à rotation continue.
- Comment calibrer un servomoteur à rotation continue avec une carte Arduino ?
- Comment fonctionne une rampe d’accélération pour servo à rotation continue ?
- Comment programmer 2 servo à rotation continue pour la traction d’un robot mobile avec Arduino?
- Une autre façon de piloter les servomoteurs avec le module de chez Ez-Robot voici les fonctions disponibles .
Comment créer une animation lumineuse avec Arduino. |
.
- Comment créer un chenillard 8 sorties à relais ?
- Comment créer l’illusion d’un effort sur un robot ?
.
Retour au sommaire.
Impression 3D |
.
- Ou trouvez les fichiers STL pour construire un capot pour imprimante Zortrax M200
- Réalisation d’un support pour bobine de 2 kg de type ArianePlas diamètre 52mm longueur 110mm pour imprimante M300
- Berceau adaptateur pour disque dur 2.5 et 3.5 dans un emplacement 5.25
- Cage pour servomoteur. pour servo référence ES08MAcage 3 faces.
.
Comment mesurer une distance ? |
Avec un télémètre à ultrasons Grove 101020010
Description du capteur Grove :
Interface: compatible Grove
Alimentation: 3,3 à 5 Vcc
Consommation: 15 mA
Fréquence: 42 kHz
Portée de détection: 3 cm à 4 m
Résolution: 1 cm
Dimensions: 43 x 25 x 15 mm
Référence Seeedstudio: 101020010 (remplace SEN10737P)
Programme de mesure de distance avec affichage sur l’écran de l’IDE arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
/* * *BUT: Utilisation d'un capteur ultrasons Grove *pour mesurer une distance avec affichage sur *le moniteur Arduino * * le 06/03/2017 * Herve Mazelin * Olivier Guillaume * * Nom du programme : Mesure_ultrason_001 */ // je charge la librairie Ultrasonic // Cette bibliothèque permet à une carte Arduino de gerer // le capteur ultrason // A savoir : // Télécharger la Bibliothèque UltrasonicRanger de Github. // à installer dans la bibliothèque d'origine des fichiers // de l'IDE Arduino voir le lien sur le site redohm // Attention sur l'exemple fourni par Github il y a // une possibilité d 'erreur #include "Ultrasonic.h" // Declaration du nom du capteur et de la broche de raccordement // sur la carte Arduino Ultrasonic ultrasonic(4); // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // variable du type long // Declare la variable mesure_de_la_valeur_en_centimeters // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable . long mesure_de_la_valeur_en_centimeters; // Affichage d'un texte pour l'operateur sur l'ecran Serial.print("mesure du capteur -> "); // Lecture de la valeur de notre capteur mesure_de_la_valeur_en_centimeters = ultrasonic.MeasureInCentimeters(); // Affichage de la mesure Serial.print(mesure_de_la_valeur_en_centimeters ); Serial.println(" cm"); // Temporisation de lecture delay(250); // Creation d'un espace vide pour la lisibilité des lectures Serial.println(" "); } |
–
Retour au sommaire |
–
Programme de mesure de distance avec 2 capteurs ultrason et affichage sur le moniteur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
/* * *BUT: Utilisation de 2 capteurs ultrasons Grove *pour mesurer des distances avec affichage sur *le moniteur Arduino * * le 06/03/2017 * Herve Mazelin * Olivier Guillaume * * Nom du programme : Mesure_ultrason_002 */ // je charge la librairie Ultrasonic // Cette bibliothèque permet à une carte Arduino de gerer // le capteur ultrason // A savoir : // Télécharger la Bibliothèque UltrasonicRanger de Github. // à installer dans la bibliothèque d'origine des fichiers // de l'IDE Arduino voir le lien sur le site redohm // Attention sur l'exemple fourni par Github il y a // une possibilité d 'erreur #include "Ultrasonic.h" // Declaration du nom du premier capteur et de la broche de raccordement // sur la carte Arduino Ultrasonic ultrasonic(4); // Declaration du nom du deuxieme capteur et de la broche de raccordement // sur la carte Arduino Ultrasonic ultrasonic2(6); // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // variable du type long // Declare la variable du premier capteur mesure_de_la_valeur_en_centimeters // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable . long mesure_de_la_valeur_en_centimeters; // variable du type long // Declare la variable du deuxieme capteur mesure_de_la_valeur_en_centimeters2 // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable . long mesure_de_la_valeur_en_centimeters2; // Affichage d'un texte pour l'operateur sur l'ecran du premier capteur Serial.print("mesure du capteur numero 1 -> "); // Lecture de la valeur de notre capteur numero 1 mesure_de_la_valeur_en_centimeters = ultrasonic.MeasureInCentimeters(); // Affichage de la mesure Serial.print(mesure_de_la_valeur_en_centimeters ); Serial.println(" cm"); // Temporisation de lecture delay(100); // Affichage d'un texte pour l'operateur sur l'ecran du deuxieme capteur Serial.print("mesure du capteur numero 2 -> "); // Lecture de la valeur de notre capteur numero 2 mesure_de_la_valeur_en_centimeters2 = ultrasonic2.MeasureInCentimeters(); // Affichage de la mesure Serial.print(mesure_de_la_valeur_en_centimeters2 ); Serial.println(" cm"); // Temporisation de lecture delay(250); // Creation d'un espace vide pour la lisibilité des lectures Serial.println(" "); } |
–
Retour au sommaire |
–
Comment détecter un niveau bas et haut avec 1 capteur ultrason ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
/* * *BUT: detection d'un niveau bas et d'un niveau haut *affichage sur 2 led *led vert : niveau haut *led rouge : niveau bas * * le 06/03/2017 * Herve Mazelin * Olivier Guillaume * * Nom du programme : Mesure_ultrason_003 */ // je charge la librairie Ultrasonic // Cette bibliothèque permet à une carte Arduino de gerer // le capteur ultrason // A savoir : // Télécharger la Bibliothèque UltrasonicRanger de Github. // à installer dans la bibliothèque d'origine des fichiers // de l'IDE Arduino voir le lien sur le site redohm // Attention sur l'exemple fourni par Github il y a // une possibilité d 'erreur #include "Ultrasonic.h" // Declaration du nom du capteur et de la broche de raccordement // sur la carte Arduino Ultrasonic ultrasonic(4); // Declaration de la variable de son nom et de la connexion // pour la led niveau bas int led_niveau_bas = 12; // Declaration de la variable de son nom et de la connexion // pour la led niveau haut int led_niveau_haut = 10; // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { // met la broche utilisée avec la LED en SORTIE pour le niveau bas pinMode(led_niveau_bas, OUTPUT); // Force la sortie niveau bas a 0 digitalWrite(led_niveau_bas, LOW); // met la broche utilisée avec la LED en SORTIE pour le niveau haut pinMode(led_niveau_haut, OUTPUT); // Force la sortie niveau haut a 0 digitalWrite(led_niveau_haut, LOW); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // variable du type long // Declare la variable mesure_de_la_valeur_en_centimeters // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable . long mesure_de_la_valeur_en_centimeters; // Lecture de la valeur de notre capteur mesure_de_la_valeur_en_centimeters = ultrasonic.MeasureInCentimeters(); // si la valeur mesure_de_la_valeur_en_centimeters et strictement entre 10 et 15 // soit 10 cm et 15 cm on considere un niveau haut if (( mesure_de_la_valeur_en_centimeters>10)&&( mesure_de_la_valeur_en_centimeters<15 )) { // allume la LED -> led_niveau_haut digitalWrite(led_niveau_haut, HIGH); } else { // éteint la LED -> led_niveau_haut digitalWrite(led_niveau_haut, LOW); } // si la valeur mesure_de_la_valeur_en_centimeters et strictement entre 25 et 30 // soit 25 cm et 30 cm on considere un niveau bas // le niveau bas peut-etre regler jusqu'à 4 metre soit 400 cm if (( mesure_de_la_valeur_en_centimeters>25)&&( mesure_de_la_valeur_en_centimeters<30 )) { // allume la LED -> led_niveau_bas digitalWrite(led_niveau_bas, HIGH); } else { // éteint la LED -> led_niveau_bas digitalWrite(led_niveau_bas, LOW); } } |
–
Retour au sommaire |
Comment afficher les valeurs du capteur ultrason sur Afficheur LCD I2C Grove référence 104030001
Présentation de l’afficheur :
Cet afficheur LCD à connexion I2C compatible Grove affiche 2 lignes de 16 caractères et remplace le modèle LCD23154. Il est compatible Arduino ou Seeeduino. Il n’utilise que les broches SDA et SCL pour recevoir les données.
L’afficheur est équipé d’un rétro-éclairage RGB. Chaque couleur peut s’allumer de manière indépendante permettant d’obtenir une multitude de couleurs pour le rétroéclairage.
Description de l’afficheur LCD I2C Grove 104030001
Interface: compatible Grove
Alimentation: 5 Vcc
Consommation: < 60 mA
Affichage: LCD 2 x 16 caractères
Dimensions: 84 x 45 x 13 mm
Référence Seeedstudio: 104030001 (remplace 811004001)
Prix moyen : 13 à 17 €
Notre fournisseur : Gotronic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
/* * *BUT: Utilisation d'un capteur ultrasons Grove *pour mesurer une distance avec affichage sur *un afficheur LCD *avec la communication I2C *reference de l'afficheur -> Grove 104030001 * * le 07/03/2017 * Herve Mazelin * Olivier Guillaume * * Nom du programme :Mesure_ultrason_004_afficheur_grove */ // je charge la bibliothèque qui vous permet de communiquer // avec les composants utilisant le protocole I2C #include <Wire.h> // je charge la bibliothèque qui permet de gerer l'afficheur #include "rgb_lcd.h" rgb_lcd lcd; // je charge la librairie Ultrasonic // Cette bibliothèque permet à une carte Arduino de gerer // le capteur ultrason // A savoir : // Télécharger la Bibliothèque UltrasonicRanger de Github. // à installer dans la bibliothèque d'origine des fichiers // de l'IDE Arduino voir le lien sur le site redohm // Attention sur l'exemple fourni par Github il y a // une possibilité d 'erreur #include "Ultrasonic.h" // Declaration du nom du capteur et de la broche de raccordement // sur la carte Arduino Ultrasonic ultrasonic(4); // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { // initialisation de l'afficheur // en precisant le nombre de colonnes et le nombres de lignes // pour ce type 16 colonnes et 2 lignes lcd.begin(16, 2); // Position le texte colonne 3 ligne 0 // afin de centrer le texte -> - RedOhm - lcd.setCursor(3, 0); // Affiche le texte -> - RedOhm - lcd.print("- RedOhm -"); // Position le texte colonne 2 ligne 1 // afin de centrer le texte -> Version 1.00 lcd.setCursor(2, 1); // Affiche le texte -> Version 1.00 lcd.print("Version 1.00"); //Temporisation de 2000 soit 2 secondes delay(2000); // effacer l'ecran lcd.clear(); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // change la couleur du rétroéclairage // pour chaque parametre il faut un entier de 0 à 255 // Voir l'exemple pour le choix des couleurs dans la // Rubrique lcd.setRGB(169,102,251); // variable du type long // Declare la variable mesure_de_la_valeur_en_centimeters // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable . long mesure_de_la_valeur_en_centimeters; // Position le texte colonne 1 ligne 0 lcd.setCursor(1, 0); // Affiche le texte -> Distance lcd.print("Distance"); // Lecture de la valeur de notre capteur mesure_de_la_valeur_en_centimeters = ultrasonic.MeasureInCentimeters(); // Position le texte colonne 0 ligne 1 lcd.setCursor(0, 1); // Affiche un blanc afin de nettoyer la ligne 1 lcd.print(" "); // Position le texte colonne 6 ligne 1 lcd.setCursor(6, 1); // Affiche la variable qui detient la longueur lcd.print( mesure_de_la_valeur_en_centimeters); // Position le texte colonne 9 ligne 1 lcd.setCursor(9, 1); // Affiche le texte -> cm lcd.print("cm"); // Temporisation de 1000 soit 1 seconde delay(1000); } |
–
Retour au sommaire |
Comment détecter une ambiance sonore ? |
Avec le capteur sonore Grove 101020063 , présentation du capteur et description
Présentation du capteur :
Ce module capteur sonore compatible Grove est basé sur un micro électret amplifié par un LM2904. Sa sensibilité est ajustable et sa sortie est proportionnelle au niveau sonore.
Ce module se raccorde sur une entrée analogique du Grove Base Shield ou du Mega Shield via un câble 4 conducteurs.
Description du capteur sonore Grove 101020063 :
Interface: compatible Grove
Alimentation: 5 Vcc
Fréquence: 50 Hz à 20 kHz
Signal de sortie: 0 à 1023 (en fonction du niveau sonore)
Gain ajustable : oui
Dimensions: 20 x 20 mm
Référence Seeedstudio: 101020063 (remplace SEN02281P)
–
Programme de mesure d’ambiance sonore avec affichage des valeurs sur l’écran de l’IDE arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
/* * * BUT: * Programme de mesure de l’ambiance sonore * avec affichage des valeur sur l’écran * de l’IDE arduino * * * le 08/03/2017 * Herve Mazelin * * * Nom du programme : Ambiance sonore 010 */ // déclaration de l'entrée analogique // ou se trouve le module Grove int analogPin = 2; // Rappel sur la fonction d'une variable :On peut définir une variable comme // une boite ou l’on stock des balles .Une variable est une boite ou // l’on stock un nombre ,et comme il existe une multitude de nombres: // Exemple entiers ,décimaux etc …Il faut donc assigner un type à cette // variable int son ; // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter qu'une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // lit la valeur de la tension analogique présente sur la broche 2 // et introduit le resultat dans la variable " son " son = analogRead(analogPin); // Temporisation de 10 soit 0.01 secondes delay(10); // Affichage du texte pour l'opérateur voir ci-dessous // Valeur de l'entrée brut de l'ambiance sonore -> // affiche ce texte sans saut de ligne => print Serial.print("Valeur de l'entree brut de l'ambiance sonore ->"); // affiche la valeur de l'ambiance sonore suivi d'un saut de ligne // le saut de ligne => println Serial.println(son); // Temporisation de 200 soit 0.2 secondes delay(200); } |
Retour au sommaire |
Comment détecter des gestes de la main ? |
Utilisation du capteur de geste Grove 101020083
Présentation du capteur de geste :
Ce module Grove permet la reconnaissance de 9 gestes lorsqu’on passe la main devant le capteur et est basé sur le capteur PAJ7620U2. A l’aide de ce capteur, il est possible de régler un volume, de contrôler un robot, de réaliser une télécommande originale, etc (voir la vidéo).
Description du capteur de geste :
Interface: compatible Grove
Alimentation: 5 Vcc
Distance de détection: 5 à 15 mm
Température de service: -40°C à 85°C
Lumière ambiance max: < 100k Lux
Deux modes de fonctionnement:
– mode normal: 60°/s à 600°/s
– mode jeu: 60°/s à 1200°/s
Dimensions: 20 x 20 mm
Poids: 8g
Protocole: I2C
Référence Seeedstudio: 101020083
Prix moyen : 13 à 17 €
Notre fournisseur : Gotronic
–
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
/* * * Exemple du programme de chez Grove * detection de gestes * * * le 07/03/2017 * traduit et tester par : * * Herve Mazelin * Olivier Guillaume * * Nom du programme :005_Detecteur_de_geste */ // je charge la bibliothèque qui vous permet de communiquer // avec les composants utilisant le protocole I2C #include <Wire.h> // je charge la bibliothèque qui permet de gerer // le capteur de geste #include "paj7620.h" // Ces parametres sont reglables en fonction de la reation du systeme #define GES_REACTION_TIME 500 // Lorsque vous voulez reconnaître les gestes avant / arrière, le temps de // réaction doit etre inferieure a 0.8 seconde . Vous pouvez également // régler le temps de réaction en fonction de la situation réelle. #define GES_ENTRY_TIME 800 #define GES_QUIT_TIME 1000 // --------------- fin des parametres de reaction --------------- void setup() { uint8_t error = 0; //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // Affiche sur le moniteur le nom de la demonstration Serial.println("Programme capteur de geste -> 9 gestes possible "); // initialise les registe du Paj7620 // Ce code d'initialisation doit être ajoutée à chaque programme // qui utilse ce materiel error = paj7620Init(); if (error) { // le programme visualise le defaut renconter et affiche le code d'erreur Serial.print("Probleme d'initialisation erreur,CODE:"); // Affiche le code erreur Serial.println(error); } else { // Si aucune erreur n’est détectée on confirme le fonctionnement du // capteur de geste Serial.println("Capteur en service "); } Serial.println("Faire un mouvement au dessus du capteur "); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { uint8_t data = 0, data1 = 0, error; // lecture du registre pour definir le resultat du // geste error = paj7620ReadReg(0x43, 1, &data); if (!error) { // Lorsque des gestes différents sont détectés, la variable // «data» sera réglée sur différentes valeurs par // paj7620ReadReg (0x43, 1, & données). switch (data) { case GES_RIGHT_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("En avant"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("En arriere"); delay(GES_QUIT_TIME); } else { Serial.println("Vers la droite"); } break; case GES_LEFT_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("En avant"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("En arriere"); delay(GES_QUIT_TIME); } else { Serial.println("Vers la gauche "); } break; case GES_UP_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("En avant"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("En arriere"); delay(GES_QUIT_TIME); } else { Serial.println("Vers le haut"); } break; case GES_DOWN_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("En avant"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("En arriere"); delay(GES_QUIT_TIME); } else { Serial.println("Vers le bas "); } break; case GES_FORWARD_FLAG: Serial.println("En avant"); delay(GES_QUIT_TIME); break; case GES_BACKWARD_FLAG: Serial.println("En arriere"); delay(GES_QUIT_TIME); break; case GES_CLOCKWISE_FLAG: Serial.println("Sens horaire"); break; case GES_COUNT_CLOCKWISE_FLAG: Serial.println("Sens anti horaire"); break; default: paj7620ReadReg(0x44, 1, &data1); if (data1 == GES_WAVE_FLAG) { Serial.println("Mouvement de vague "); } break; } } delay(100); } |