Archives

Arduino Nano 33 ble sense : Detection des couleurs avec le capteur APDS9960

Arduino Nano 33 ble sense : Detection des couleurs avec le capteur APDS9960

Découvrez comment utiliser le capteur APDS9960 avec Arduino pour calculer la couleur dominante et afficher à la fois le nom de la couleur et la valeur numérique correspondante. Le code est détaillé étape par étape, avec des explications sur les fonctions utilisées pour la détection de la couleur.

Voici la vidéo :

✔️ Descriptif du code 1 : Utilisation du capteur APDS9960 pour la détection de la couleur avec Arduino

Le programme commence par inclure la bibliothèque Arduino_APDS9960.

Ensuite, dans la fonction setup(), la communication série est initialisée à une vitesse de 9600 bauds. Le programme attend ensuite que la communication série soit établie. Ensuite, le capteur APDS9960 est initialisé. Si l’initialisation échoue, un message d’erreur est affiché.

Dans la fonction loop(), les valeurs de couleur détectées sont affichées sur le port série en utilisant la fonction Serial.print(). Ce code est conçu pour être utilisé avec le traceur de courbes de l’IDE Arduino 2.0.3,qui permet d’afficher les données sous forme de graphique en temps réel.

Le traceur de courbes de l’IDE Arduino 2.0.3 s’attend à recevoir des données sous forme de texte structuré.Dans ce code, les valeurs de couleur sont affichées en premier la valeur bleue, puis une virgule, puis la valeur rouge, suivie d’une autre virgule, puis la valeur verte, et enfin un saut de ligne pour passer à la ligne suivante. Cette séquence de caractères est importante car le traceur de courbes est configuré pour reconnaître cette structure et afficher les données correctement sous forme de courbe.

✔️ Descriptif du code 2 : Recherche de la couleur dominante avec le capteur APDS9960

Le programme commence par inclure la bibliothèque « Arduino_APDS9960.h » qui contient les fonctions pour communiquer avec le capteur de couleur.

Le setup est identique au premier code .

Dans la fonction « loop », le programme entre dans une boucle qui attend jusqu’à ce qu’une mesure de couleur soit disponible en utilisant « while (!APDS.colorAvailable()) ». Lorsqu’une mesure est disponible, les valeurs de rouge, vert et bleu sont lues à partir du capteur en utilisant « APDS.readColor(r, g, b) » et stockées dans les variables correspondantes.

Ensuite, le programme détermine la couleur dominante en comparant les valeurs de rouge, vert et bleu. Si la valeur de rouge est la plus élevée, le programme affiche « Rouge » sur la console série en utilisant « Serial.println(« Rouge ») ». Si la valeur de vert est la plus élevée, le programme affiche « Vert ». Si la valeur de bleu est la plus élevée, le programme affiche « Bleu ». Si les trois valeurs sont égales, le programme affiche « Blanc ». Sinon, le programme affiche « Couleur mixte ».

✔️ Descriptif du code 3 : Calcule la couleur dominante et affiche à la fois le nom de la couleur dominante et la valeur numérique.

Dans la boucle principale (loop()), le programme attend qu’une mesure de couleur soit disponible en utilisant la fonction colorAvailable() du capteur APDS9960. Une fois qu’une mesure de couleur est disponible, les valeurs de rouge, vert et bleu sont stockées dans des variables respectives à l’aide de la fonction readColor(). Les valeurs de rouge, vert et bleu sont affichées sur la console série à l’aide de la fonction Serial.println().La valeur maximale parmi les valeurs de rouge, vert et bleu est trouvée à l’aide de la fonction max().Ensuite, la couleur dominante est déterminée en fonction de la valeur maximale. Si la valeur maximale est le rouge, « Rouge » est stocké comme couleur dominante, si c’est le vert, « Vert » est stocké et sinon, « Bleu » est stocké.

La couleur dominante est stockée dans une chaîne de caractères et affichée sur le moniteur série.

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

Le code pour le TB6600 2/8, Contrôle de la vitesse

TB6600 2/8,Contrôle de la vitesse et de la direction d’un moteur pas-à-pas avec Arduino

Le code commence par définir les broches utilisées pour le contrôle du moteur, à savoir ENA_PIN (broche pour activer/désactiver le moteur), PULS_PIN (broche pour générer les impulsions) et DIR_PIN (broche pour définir la direction). Ensuite, les variables TEMPO (qui stocke la tempo en microsecondes), nouvelle_tempo (initialisée à 0), valeur_alpha_nouvelle_tempo (une chaîne de caractères qui stocke la nouvelle tempo saisie par l’utilisateur), et chaine_caractere (une chaîne de caractères qui stocke les données entrées sur le port série) sont définies.

Dans la fonction setup(), la communication série est initialisée avec une vitesse de transmission de 9600 bauds. Les broches sont configurées en sortie.

const int ENA_PIN = 8; Broche pour activer/désactiver le moteur
const int PULS_PIN = 9; Broche pour générer les impulsions
const int DIR_PIN = 10; Broche pour définir la direction

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Si des données sont disponibles sur la communication série (Serial.available() supérieure à 0) ), la fonction Serial.readStringUntil lit une chaîne de caractères entrée sur le port série de l’Arduino et la stocke dans la variable chaine_caractere. Ensuite, la fonction indexOf() est utilisée pour rechercher les lettres ‘A’, ‘a’, ‘R’ et ‘r’ dans la chaîne de caractères.

Si la lettre ‘A’ ou ‘a’ est trouvée dans la chaîne de caractères (indexA != -1 || indexa != -1), cela signifie que l’utilisateur a saisi une commande de marche avant. La direction est alors définie en mode horaire (digitalWrite(DIR_PIN, HIGH)), et la valeur de la nouvelle tempo est extraite de la chaîne de caractères à partir de la position de la lettre ‘A’ ou ‘a’. Cette valeur est stockée dans la variable valeur_alpha_nouvelle_tempo et affichée sur le port série. Enfin, la valeur de la variable TEMPO est mise à jour avec la nouvelle tempo saisie.

Si la lettre ‘R’ ou ‘r’ est trouvée dans la chaîne de caractères (indexR != -1 || indexr != -1), cela signifie que l’utilisateur a saisi une commande de marche arrière. La direction est alors définie en mode antihoraire (digitalWrite(DIR_PIN, LOW)), et la valeur de la nouvelle tempo est extraite de la chaîne de caractères à partir de la position de la lettre ‘R’ ou ‘r’. Cette valeur est stockée dans la variable valeur_alpha_nouvelle_tempo et affichée sur le port série. Enfin, la valeur de la variable TEMPO est mise à jour avec la nouvelle tempo saisie.

Si aucune des lettres ‘A’, ‘a’, ‘R’ et ‘r’ n’est trouvée dans la chaîne de caractères, un message est affiché sur le port série indiquant que la confirmation de sens de direction est manquante.

Et enfin, pour réaliser la création du train d’impulsions, on commence par récupérer le temps actuel en microsecondes. Ensuite, on vérifie si le temps écoulé depuis la dernière impulsion est supérieur ou égal à la valeur de la tempo. Si c’est le cas, on met à jour le temps précédent avec le temps actuel et on inverse l’état de la broche PULS_PIN pour générer une impulsion. Ce code permet donc de générer des impulsions avec une fréquence régulière en fonction d’une valeur de tempo donnée.

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

 

Les codes pour le TB6600 1/8 , La création du train d’impulsion pour un moteur pas à pas avec Arduino

TB6600, La création du train d’impulsion pour un moteur pas à pas avec Arduino.

 

Code n-1 : TB6600, La création du train d’impulsion pour un moteur pas à pas avec Arduino

Ce code est destiné à contrôler un moteur pas-à-pas à l’aide d’une carte Arduino. Il utilise les pins ENA, PULS et DIR pour contrôler la rotation du moteur.

La fonction setup() est exécutée une seule fois au démarrage de l’Arduino. Elle configure les pattes ENA, PULS et DIR en sortie.

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Elle commence par récupérer le temps actuel en microsecondes. Cette fonction est basée sur le principe de génération d’impulsions  qui permet de faire avancer le moteur d’un pas à chaque impulsion.

Si le temps écoulé depuis la dernière impulsion est supérieur ou égal à la valeur de la tempo stockée dans la variable TEMPO, la fonction inverse l’état de la broche PULS_PIN pour générer une impulsion et faire tourner le moteur pas-à-pas. La valeur de TEMPO contrôle la vitesse de rotation du moteur.

Ce code est un exemple de base pour contrôler un moteur pas-à-pas avec une carte Arduino. Il est possible de modifier le code pour ajouter des fonctionnalités supplémentaires, telles que le contrôle de la direction de rotation du moteur ou la gestion de la vitesse de rotation en fonction de l’entrée utilisateur.

Code n-2 : TB6600, personnaliser la fréquence de votre moteur pas-à-pas en temps réel

Le code présenté ici est un exemple de contrôle de la fréquence d’un moteur pas à pas à l’aide d’un driver TB6600 et d’une carte Arduino. Le principe est de générer des impulsions à une fréquence donnée pour faire tourner le moteur pas à pas.

Le code est organisé en trois parties principales : la déclaration des variables, le setup et son contenu, et enfin la fonction loop et son contenu. Nous allons les examiner chacune en détail.

Déclaration des variables

Le code commence par la déclaration des variables utilisées dans le programme. Les variables sont les suivantes :

  • ENA_PIN, PULS_PIN et DIR_PIN : ces variables contiennent les numéros des broches utilisées pour le contrôle du moteur.
  • TEMPO : cette variable contient la valeur de la tempo en microsecondes. Elle est initialisée à 250 µs.
  • tempsPrecedent : cette variable stocke le temps précédent en microsecondes, utilisé pour calculer le temps écoulé depuis la dernière impulsion.

Setup et son contenu

La fonction setup() est exécutée une seule fois au démarrage de l’Arduino. Elle initialise la communication série, configure les pattes en sortie pour le contrôle du Driver, valide le driver et définit la direction du moteur. Enfin, elle affiche un message pour demander à l’utilisateur de saisir une nouvelle valeur de tempo (train d’impulsions).

Fonction loop et son contenu

La fonction loop() est exécutée en boucle sans fin après le démarrage de l’Arduino. Elle récupère le temps actuel en microsecondes, lit les données disponibles sur la communication série et vérifie si une nouvelle valeur de tempo a été saisie. Si c’est le cas, elle met à jour la variable TEMPO avec cette nouvelle valeur.

Ensuite, la fonction loop() vérifie si la valeur du temps écoulé depuis la dernière impulsion est supérieure ou égale à la valeur de la tempo. Si tel est le cas, elle met à jour la variable tempsPrecedent avec le temps actuel et génère une impulsion en inversant l’état de la broche de pulsation.

 

 

Facebook Twitter  Youtube

Grabcad Thingiverse Cults  

Retour au sommaire
Controle d’un moteur pas a pas comme un moteur asynchrone

.

Bonjour,
Cette page va bientôt être supprimée et remplacée par une nouvelle référence dédiée aux moteurs pas à pas. Vous trouverez désormais l’intégralité de la documentation technique (codes, schémas et tutoriels) à cette adresse :

[Lien]. https://www.redohm.fr/download/le-hub-ultime-des-tutos-sur-les-moteurs-pas-a-pas/

N’hésitez pas à consulter cette nouvelle page, qui s’inscrit dans un ensemble plus complet de ressources sur les moteurs pas à pas

Mise à jour le 18/02/2022 : Cet article a pour but de vous expliquer le fonctionnement d’un moteur pas-à-pas le plus simplement possible ,c’est à dire en utilisant un bouton qui va nous permettre de sélectionner la marche avant ou la marche arrière avec un potentiomètre nous permettant de définir la vitesse que l’on souhaite obtenir.

Continuer la lecture

Augmenter le nombres de vos sorties PWM sur Arduino

.

Mise à jour le 19/11/2023 : Cet article traite d’une carte de commande qui vous permet d’augmenter le nombre de sorties pwm quand votre carte Arduino devient trop juste pour répondre à vos besoins.

Sommaire :

  • Information technique
  • Tutoriel sur la carte de chez Seeed
  • Exemple de schema 
    • Pilotage d’un servomoteur avec retour d’informations
    • Pilotage de 2 servomoteurs avec des tensions d’alimentations différentes
    • Pilotage de 2 servos avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs
  • Exemple de programme. 
  • Pour tout probléme
  • Retour au menu systeme Grove

.

Information technique  

Carte de commande  de chez Seeedstudio reference 108020102  possedant 16 canaux  basée sur un PCA9685 permettant de contrôler jusqu’à 16 servomoteurs ou 16 leds via une liaison PWM. Ce module communique avec une carte Arduino ou compatible via le bus I2C.

Cette carte comporte jusqu’à 6 pontets à souder permettant de raccorder jusqu’à 64 PCA9685 sur un seul bus I2C. Une source d’alimentation externe est nécessaire pour les servomoteurs.

Caractéristiques:

  • Alimentation partie logique: 3,3 et 5 Vcc
  • Alimentation partie servomoteur: 2,3 à 5,5 Vcc
  • Commande: via le bus I2C
    • Adresse I2C par défaut: 0x7f (configurable par pontet à souder)
    • Compatible niveaux logiques 5 V
  • Sorties servos/leds: connecteur mâle au pas de 2,54 mm
  • Intensité maxi:
    – 25 mA par led
    – 400 mA au total pour tous les servos
  • Dimensions : 65x45x13mm

Retour au sommaire

.

Tuto

.

Retour au sommaire

Exemple de schema 

.

 

Pilotage d’un servomoteur avec retour d’informations à l’aide de la carte SEEED référence 108020102

Augmentation des sorties pwm via la carte 108020102

Augmentation des sorties pwm via la carte 108020102

Pilotage de 2 servomoteurs avec des tensions d’alimentations différentes à l’aide de la carte SEEED référence 108020102 .

Augmentation des sorties pwm via la carte 108020102 . Schema avec des tensions d’alimentations différentes

Augmentation des sorties pwm via la carte 108020102 . Schema avec des tensions d’alimentations différentes

Schema de 2 servos avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs à l’aide de la carte SEEED référence 108020102.

Augmentation des sorties pwm via la carte 108020102 . Pilotage de 2 servomoteurs avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs

Augmentation des sorties pwm via la carte 108020102 . Pilotage de 2 servomoteurs avec une tension d’alimentation de 12V et utilisation de 2 régulateurs pour s’adapter à la tension de service des actionneurs

.

Retour au sommaire

.

Exemple de programme 

.

.

Retour au sommaire

.

Pour tout problème

Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes  sur lesquelles nous éditons.
Cliquez sur celles qui vous intéressent .

Facebook  Twitter  Youtube 

Grabcad Thingiverse Cults  

Retour à la page principal

Arduino & Sen0305 , le changement d’algorithmes

.

Dans ce code Arduino  vous trouverez toutes les explications relatives à l’utilisation du changement de mode de fonctionnement de la caméra SEN0305 pour la reconnaissance faciale et la reconnaissnce d’objet .

.

.

separateur-redohm-001

Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes  sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .

Facebook  Twitter  Youtube 

Grabcad  Thingiverse  Cults  

Retour au changement d’algorithmes