Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Привет, этот проект предназначен для создания видимой графики из невидимых частиц, которые могут быть обнаружены датчиками. В этом случае я использовал ультразвуковой датчик и фоторезистор для управления освещением и расстоянием. Я визуализирую это, превращая переменные датчика в переменные при обработке. Затем я подключаю Arduino и Processing для управления Arduino с помощью Processing. Таким образом, на графике в разделе «Обработка» будут применяться переменные датчика Arduino.
Шаг 1: Шаг 1: Подготовка деталей
Вот компоненты, которые вам понадобятся для создания этого проекта:
- 10 кОм
- Ультразвуковой датчик
- Фоторезистор
- Ардуино Уно
- 7 проводов
Шаг 2: Шаг 2: Подключите все компоненты
Фоторезистору и ультразвуковому датчику требуется место для точного обнаружения. Сэкономьте немного места и подумайте о свете для фоторезистора.
Шаг 3: Шаг 3: Код
* Добавить библиотеку как в Arduino, так и в Processing.
Arduino: поиск «новый пинг» в библиотеке
Обработка: поиск "сериала" в библиотеке
Код для Ардуино:
#включают
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
Эхолот NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
void setup () {Serial.begin (9600); }
void loop () {значение int = sonar.ping_cm (); Значение1 = карта (Значение1, 1, 60, 500, 24); Значение1 = ограничение (Значение1, 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);
задержка (50);
Serial.print (Значение1); Serial.print (",");
Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");
Serial.println (); }
Код для обработки:
// класс: (базовый) //
import processing.serial. *;
int end = 10; Строковый серийный номер; Последовательный порт;
int pcount = 350; Частица p = новая частица [pcount]; внутренняя диагональ; int e = 100;
void setup () {port = new Serial (this, "/dev/cu.usbmodem141101"); port.clear (); последовательный = порт.readStringUntil (конец); серийный = ноль; для (int i = 0; i
вращение поплавка = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (конец); задержка (10); } if (серийный! = 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 (результат1); frameRate (результат1); int result2 = Integer.parseInt (a [1]); System.out.println (результат2); int result3 = Integer.parseInt (a [2]); System.out.println (результат3); int result4 = Integer.parseInt (a [3]); System.out.println (результат4); int result5 = Integer.parseInt (a [4]); System.out.println (результат5); фон (результат2, результат3, результат4); перевести (ширина / 2, высота); вращение- = 0,0005; вращать (вращать); для (int i = 0; i диагональ) {p = new Particle (); }}}}
// класс: Частица //
class Particle {float n; float r; float o; float c; float d; int l; Частица () {l = 100; n = случайный (3, ширина / 2); r = случайный (0,10, TWO_PI); o = random (1, random (1, width / n)); c = случайный (180, 228); d = случайный (160, 208); } void draw () {l ++; pushMatrix (); повернуть (r); перевести (drawDist (), 1); эллипс (10, 10, ширина / o / 4, ширина / o / 4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n / o) * ширина / HALF_PI; }}
Шаг 4: Шаг 4: Подключите и проверьте
Шаг 5: Шаг 5: Посмотрите результат
Скорость движущегося мяча будет выше, когда что-нибудь окажется ближе к ультразвуковому датчику. Кроме того, управление освещением с фоторезистором будет отображаться при обработке как фоновая темнота.