Cuprins:

Tranziție grafică de procesare Arduino: 5 pași
Tranziție grafică de procesare Arduino: 5 pași

Video: Tranziție grafică de procesare Arduino: 5 pași

Video: Tranziție grafică de procesare Arduino: 5 pași
Video: Curs / Tutorial Arduino: Introducere 2024, Noiembrie
Anonim
Tranziție grafică de procesare Arduino
Tranziție grafică de procesare Arduino

Bună, acest proiect este pentru a face grafică vizibilă din particule invizibile care ar putea fi detectate de senzori. În acest caz, am folosit senzorul cu ultrasunete și fotorezistorul pentru a controla lumina și distanța. Îl vizualizez făcând variabilele de la senzor ca variabile în procesare. Apoi conectez Arduino și Processing pentru a controla Arduino cu Processing. Astfel, graficul din Procesare ar aplica variabile de la senzorul Arduino.

Pasul 1: Pasul 1: Pregătiți piesele

Pasul 1: Pregătiți piesele
Pasul 1: Pregătiți piesele

Iată componentele de care veți avea nevoie pentru a face acest proiect:

- 10k OHM

- Senzor cu ultrasunete

- Fotorezistor

- Arduino Uno

- 7 fire

Pasul 2: Pasul 2: Conectați toate componentele

Pasul 2: Conectați toate componentele
Pasul 2: Conectați toate componentele

Fotorezistorul și senzorul cu ultrasunete necesită un spațiu pentru detectarea precisă. Economisiți puțin spațiu și gândiți-vă la lumină pentru fotorezistor.

Pasul 3: Pasul 3: Cod

Pasul 3: Cod!
Pasul 3: Cod!

* Adăugați o bibliotecă atât în Arduino, cât și în procesare.

Arduino: căutați „ping nou” în bibliotecă

Prelucrare: căutare „serial” în bibliotecă

Cod pentru Arduino:

#include

#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200

Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int lightSensorPin = A0; int AnalogValue = 0;

void setup () {Serial.begin (9600); }

bucla void () {int Value1 = sonar.ping_cm (); Valoare1 = hartă (Valoare1, 1, 60, 500, 24); Valoare1 = constrângere (Valoare1, 24, 500);

analogValue = analogRead (lightSensorPin); int cVal1 = hartă (analogValue, 200, 600, 249, 100);

int cVal2 = hartă (analogValue, 200, 600, 247, 97);

int cVal3 = hartă (analogValue, 200, 600, 243, 101);

int cVal4 = hartă (analogValue, 200, 600, 243, 150);

întârziere (50);

Serial.print (Value1); Serial.print (",");

Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");

Serial.println (); }

Cod de procesare:

// clasă: (de bază) //

procesare import.serial. *;

int end = 10; Șir de serie; Port serial;

int pcount = 350; Particle p = new Particle [pcount]; int diagonala; int e = 100;

void setup () {port = new Serial (this, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (end); serial = nul; pentru (int i = 0; i

rotație plutitoare = 0;

void draw () {while (port.available ()> 0) {serial = port.readStringUntil (end); întârziere (10); } if (serial! = nul) {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 (rezultat1); frameRate (rezultat1); int result2 = Integer.parseInt (a [1]); System.out.println (rezultatul2); int result3 = Integer.parseInt (a [2]); System.out.println (rezultatul3); int result4 = Integer.parseInt (a [3]); System.out.println (rezultat4); int result5 = Integer.parseInt (a [4]); System.out.println (rezultatul5); fundal (rezultat2, rezultat3, rezultat4); traducere (lățime / 2, înălțime); rotație- = 0,0005; rotire (rotire); for (int i = 0; i diagonală) {p = new Particle (); }}}}

// clasa: Particulă //

clasa Particulă {float n; plutitor r; plutitor o; plutitor c; plutitor d; int l; Particulă () {l = 100; n = aleatoriu (3, lățime / 2); r = aleatoriu (0,10, TWO_PI); o = aleatoriu (1, aleatoriu (1, lățime / n)); c = aleatoriu (180, 228); d = aleatoriu (160, 208); } void draw () {l ++; pushMatrix (); rotire (r); traduce (drawDist (), 1); elipsă (10, 10, lățime / o / 4, lățime / o / 4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n / o) * width / HALF_PI; }}

Pasul 4: Pasul 4: Conectați-vă și testați

Pasul 4: Conectați-vă și testați
Pasul 4: Conectați-vă și testați

Pasul 5: Pasul 5: vezi rezultatul

Pasul 5: vezi rezultatul!
Pasul 5: vezi rezultatul!

Viteza mingii în mișcare va fi mai rapidă atunci când ceva este mai aproape de senzorul cu ultrasunete. În plus, controlul luminii cu fotorezistor va apărea în procesare ca întuneric de fundal.

Recomandat: