Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Composants et fournitures

Composant Quantité
Capteur ultrason HC-SR04 (générique) 2
Arduino Nano R3 1
Photorésistance (LDR) 1
Matrice LED 8x8 MAX7219 (Maxim Integrated) 2
Plaque d'essai demi-format 1
Fils de connexion (génériques) 1 lot
Résistance 330 Ω 1

Applications et services en ligne

À propos du projet

Je voulais un projet original avec matrices LED 8x8 et capteurs ultrasoniques — quelque chose de différent des usages habituels, ludique et un peu espiègle.

Voici les UltrasonicEyes : placez-les dans un passage, ils « regardent » où sont les gens, clignent des yeux, et vous observent d'une façon amusante et légèrement flippante !

Matériel nécessaire

Les modules HC-SR04 détectent obstacles et mesurent la distance (3-4 m), idéal pour un salon ou bureau. Très bon marché (eBay).

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Simples à câbler : 3-4 fils vers Arduino.

Les matrices LED 8x8 (MAX7219) sont chainables : une seule connectée à l'Arduino, la seconde en cascade. Interface SPI → 5 fils pour piloter les deux yeux.

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

IMPORTANT : Le code utilise le SPI hardware. Si vous n'utilisez pas un Nano, vérifiez quels sont les pins MOSI/SCK hardware sur votre carte et câblez en conséquence !

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Arduino Nano (compatible) : petit, USB pour alimentation/programmation, assez de GPIO.

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

J'ai soudé sur plaque pastilles format demi-breadboard, mais je recommande de commencer sur breadboard (sans soudure, modifiable).

Derniers composants : LDR (photorésistance) pour détecter la lumière ambiante, résistance 330 Ω, fils breadboard (mâle-femelle, femelle-femelle).

Note : Couleurs de fils libres, mais bonne pratique : rouge/noir pour VCC/GND, autres couleurs pour signaux.

Assemblage pas à pas

1. Positionner le Nano

Enfichez le Nano au bout de la breadboard, port USB dépassant, toutes pins insérées.

2. Alimentation et masse

Fil noir : GND Nano → rail GND breadboard.
Fil rouge : 3,3V (ou 5V si seulement 5V dispo) Nano → rail VCC breadboard.
Reliez les deux rails GND entre eux (noir), idem pour VCC (rouge).

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Note : certaines matrices LED exigent 5V. Si résultats instables, utilisez le 5V de l'Arduino.

3. Câbler les capteurs ultrasoniques

Noir : GND capteurs → rail GND. Rouge : VCC capteurs → rail VCC.

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Fils signal :

4. Connecter les deux matrices LED 8x8

Noir : GND entrée matrice 1 → rail GND. Rouge : VCC entrée matrice 1 → rail VCC.

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Chainage matrice 1 → matrice 2 :

Matrice 1 vers Arduino (SPI hardware) :

RAPPEL : SPI hardware — vérifiez pins MOSI/SCK sur votre carte si ce n'est pas un Nano !

5. LDR + résistance (détection lumière ambiante)

Pourquoi ? Adapter la luminosité des matrices : ~30% la nuit (suffisant), 100% en plein jour.

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

6. Alimentation et téléversement

Branchez l'USB, téléversez le sketch UltrasonicEyes ci-dessous. Passez devant les capteurs, bougez les mains — observez les yeux vous suivre et cligner !

Version permanente ?

Pour une version définitive : voir ma vidéo (soudure sur plaque pastilles) et imprimez les 2 parties du boîtier 3D. J'expérimente aussi un bouton tactile capacitif pour changer les formes d'yeux — suivez mes essais.

Autres projets/vidéos : unexpectedmaker.com
Suivez-moi : Twitter, Facebook, Instagram, Tindie
Soutien : Patreon

Code

Ultrasonic Eyes (C/C++)

#include <MD_MAX72xx.h> // Bibliothèque matrices LED - installez via gestionnaire bibliothèques
#include <NewPing.h>    // Bibliothèque capteurs US - installez via gestionnaire bibliothèques

// Pins matrice LED (SPI hardware)
#define CS_PIN 10
#define MAX_DEVICES 2
#define LIGHT A5

MD_MAX72XX mx = MD_MAX72XX(CS_PIN, MAX_DEVICES);

// Pins capteurs US
#define t1 2; #define e1 3
#define t2 4; #define e2 5
#define maxDist 400

NewPing eyeR(t2, e2, maxDist);
NewPing eyeL(t1, e1, maxDist);

// États regard
// 0: devant, 1: droite, 2: gauche
int currentState = -1;
long duration1, duration2;
int distance1, distance2;
float nextBlink = millis() + 1000;
float lightAmount = 0;

// Patterns yeux (8x8)
uint8_t eye_forward[8] = {
  0b00111100, 0b01000010, 0b01011010, 0b10101101,
  0b10111101, 0b10011001, 0b01000010, 0b00111100
};
uint8_t eye_right[8] = {
  0b00111100, 0b01000010, 0b01110010, 0b11011001,
  0b11111001, 0b10110001, 0b01000010, 0b00111100
};
uint8_t eye_left[8] = {
  0b00111100, 0b01000010, 0b01001110, 0b10010111,
  0b10011111, 0b10001101, 0b01000010, 0b00111100
};
uint8_t eye_blink[8] = {
  0b00000000, 0b00111100, 0b01111110, 0b11111111,
  0b10111101, 0b11000011, 0b01111110, 0b00111100
};

void setup() {
  mx.begin();
  pinMode(t1, OUTPUT); pinMode(e1, INPUT);
  pinMode(t2, OUTPUT); pinMode(e2, INPUT);
  digitalWrite(t1, LOW); digitalWrite(t2, LOW);
  pinMode(LIGHT, INPUT);
  ShowEye_Forward();
  currentState = 0;
}

void loop() {
  // Lumière ambiante → intensité matrices
  lightAmount = analogRead(LIGHT);
  lightAmount = (lightAmount / 255.0) * MAX_INTENSITY;
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  
  // Ping gauche (médiane 5 mesures)
  distance1 = eyeL.ping_median(5);
  delay(500); // Éviter interférences
  distance2 = eyeR.ping_median(5);
  
  // Clignement aléatoire
  if (nextBlink < millis()) {
    nextBlink = millis() + random(2000, 10000);
    if (random(1, 13) <= 6) ShowEye_Blink_Dbl();
    else ShowEye_Blink();
    delay(250);
    return;
  }
  
  // Déterminer direction regard
  float diff = distance2 - distance1;
  if (abs(diff) < 250 || (distance1 == 0 && distance2 == 0)) {
    ShowEye_Forward(); currentState = 0;
  } else if (distance2 < distance1 && distance1 > 0) {
    ShowEye_Right(); currentState = 1;
  } else if (distance1 < distance2 && distance2 > 0) {
    ShowEye_Left(); currentState = 2;
  }
  delay(250);
}

// --- Fonctions d'affichage ---
void ShowEye_Right() {
  mx.clear();
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  for (uint8_t row = 0; row < 8; row++) {
    mx.setColumn(row, eye_right[row]);
    mx.setColumn(row + 8, eye_right[row]);
  }
}
void ShowEye_Left() {
  mx.clear();
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  for (uint8_t row = 0; row < 8; row++) {
    mx.setColumn(row, eye_left[row]);
    mx.setColumn(row + 8, eye_left[row]);
  }
}
void ShowEye_Forward() {
  mx.clear();
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  for (uint8_t row = 0; row < 8; row++) {
    mx.setColumn(row, eye_forward[row]);
    mx.setColumn(row + 8, eye_forward[row]);
  }
}
void ShowEye_Blink() {
  mx.clear();
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  for (uint8_t row = 0; row < 8; row++) {
    mx.setColumn(row, eye_blink[row]);
    mx.setColumn(row + 8, eye_blink[row]);
  }
  delay(150);
  if (currentState == 0) ShowEye_Forward();
  else if (currentState == 1) ShowEye_Right();
  else if (currentState == 2) ShowEye_Left();
}
void ShowEye_Blink_Dbl() {
  mx.clear();
  mx.control(MD_MAX72XX::INTENSITY, lightAmount);
  for (uint8_t row = 0; row < 8; row++) {
    mx.setColumn(row, eye_blink[row]);
    mx.setColumn(row + 8, eye_blink[row]);
  }
  delay(75);
  if (currentState == 0) ShowEye_Forward();
  else if (currentState == 1) ShowEye_Right();
  else if (currentState == 2) ShowEye_Left();
  delay(75);
  ShowEye_Blink();
}

Pièces personnalisées et boîtiers

Imprimables sur toute imprimante 3D, aucun réglage spécifique requis.

Schémas

Yeux ultrasoniques : matrice LED 8x8 interactive avec capteur de distance

Fichier Fritzing : ultrasoniceyes_final_Th84xpUyB2.fzz

Processus de fabrication

  1. Jeu UFO Attack DIY avec Arduino UNO et Afficheur MAX7219
  2. Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
  3. Horloge 3D RGB Arduclock – Montre LED Bluetooth avec horloge temps réel
  4. Surveillance de la Qualité de l'Eau : Système Arduino MKR1000 pour Rivières et Lacs
  5. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  6. Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
  7. Jeu interactif joystick + LEDs avec Arduino
  8. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  9. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée