Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Bonjour, ce projet vise à créer des graphiques visibles à partir de particules invisibles qui pourraient être détectées par des capteurs. Dans ce cas, j'ai utilisé le capteur à ultrasons et la photorésistance pour contrôler la lumière et la distance. Je le visualise en faisant des variables du capteur des variables en traitement. Ensuite, je connecte Arduino et Processing pour contrôler Arduino avec Processing. Ainsi, le graphique dans Processing appliquerait les variables du capteur Arduino.
Étape 1: Étape 1: Préparer les pièces
Voici les composants dont vous aurez besoin pour réaliser ce projet:
- 10k Ohm
- Capteur à ultrasons
- Photorésistance
-Arduino Uno
- 7 fils
Étape 2: Étape 2: Connectez tous les composants
La photorésistance et le capteur à ultrasons ont besoin d'un espace pour une détection précise. Économisez de l'espace et pensez à la lumière pour la photorésistance.
Étape 3: Étape 3: Codez
*Ajouter une bibliothèque dans Arduino et Processing.
Arduino: recherchez "nouveau ping" dans la bibliothèque
Traitement: recherche "série" dans la bibliothèque
Code pour Arduino:
#comprendre
#définir TRIGGER_PIN 12 #définir ECHO_PIN 11 #définir MAX_DISTANCE 200
Nouveau sonar Ping (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int valeuranalogique = 0;
void setup() { Serial.begin(9600); }
void loop() { int Value1 = sonar.ping_cm(); Valeur1 = map(Valeur1, 1, 60, 500, 24); Valeur1 = contrainte(Valeur1, 24, 500);
analogValue = analogRead(lightSensorPin); int cVal1 = map (analogValue, 200, 600, 249, 100);
int cVal2 = map (analogValue, 200, 600, 247, 97);
int cVal3 = map (analogValue, 200, 600, 243, 101);
int cVal4 = map (analogValue, 200, 600, 243, 150);
retard (50);
Serial.print(Valeur1); Serial.print(", ");
Serial.print(cVal1); Serial.print(", "); Serial.print(cVal2); Serial.print(", "); Serial.print(cVal3); Serial.print(", "); Serial.print(cVal4); Serial.print(", ");
Serial.println(); }
Code de traitement:
//classe: (basique)//
import processing.serial.*;
fin int = 10; Série de chaîne; Port série;
int pcount = 350; Particule p = nouvelle Particule[pcount]; diagonale int; entier e = 100;
void setup() { port = new Serial(this, "/dev/cu.usbmodem141101"); port.clear(); série = port.readStringUntil(fin); série= null; pour (int i = 0; i
rotation du flotteur = 0;
void draw() { while (port.available() > 0) { serial = port.readStringUntil(end); retard(10); } if (serial != null) { String a = split(serial, ', '); println(a[0]); println(a[1]); println(a[2]); println(a[3]); println(a[4]); int result1 = Integer.parseInt(a[0]); System.out.println(result1); frameRate(résultat1); int result2 = Integer.parseInt(a[1]); System.out.println(result2); int result3 = Integer.parseInt(a[2]); System.out.println(result3); int result4 = Integer.parseInt(a[3]); System.out.println(résultat4); int result5 = Integer.parseInt(a[4]); System.out.println(result5); arrière-plan (résultat2, résultat3, résultat4); translate(largeur/2, hauteur); rotation-=0,0005; tourner (rotation); for (int i = 0; i diagonal) { p = new Particle(); } } } }
//classe: particule//
class Particule { float n; flotteur r; flotteur o; flotteur c; flotteur d; int l; Particule() { l = 100; n = aléatoire(3, largeur/2); r = aléatoire (0,10, TWO_PI); o = aléatoire(1, aléatoire(1, largeur/n)); c = aléatoire (180, 228); d = aléatoire (160, 208); } void draw() { l++; pushMatrix(); rotation(r); translate(drawDist(), 1); ellipse (10, 10, largeur/o/4, largeur/o/4); popMatrice(); o-=0,06; } float drawDist() { return atan(n/o)*width/HALF_PI; } }
Étape 4: Étape 4: Connectez-vous et testez
Étape 5: Étape 5: Voyez le résultat
La vitesse de la balle en mouvement sera plus rapide lorsque quelque chose est plus proche du capteur à ultrasons. De plus, le contrôle de la lumière avec photorésistance apparaîtra dans le traitement comme une obscurité de fond.