Sommario:

Transizione grafica per l'elaborazione di Arduino: 5 passaggi
Transizione grafica per l'elaborazione di Arduino: 5 passaggi

Video: Transizione grafica per l'elaborazione di Arduino: 5 passaggi

Video: Transizione grafica per l'elaborazione di Arduino: 5 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Dicembre
Anonim
Transizione grafica di elaborazione Arduino
Transizione grafica di elaborazione Arduino

Salve, questo progetto è per realizzare grafici visibili da particelle invisibili che potrebbero essere rilevate dai sensori. In questo caso, ho utilizzato il sensore a ultrasuoni e la fotoresistenza per controllare la luce e la distanza. Lo visualizzo rendendo le variabili del sensore come variabili in elaborazione. Quindi collego Arduino e Processing per controllare Arduino con Processing. Pertanto, la grafica in Processing applicherebbe le variabili dal sensore Arduino.

Passaggio 1: Passaggio 1: Preparare le parti

Passaggio 1: preparare le parti
Passaggio 1: preparare le parti

Ecco i componenti che ti serviranno per realizzare questo progetto:

- 10k OHM

- Sensore ultrasonico

- Fotoresistenza

- Arduino Uno

- 7 fili

Passaggio 2: Passaggio 2: collegare tutti i componenti

Passaggio 2: collegare tutti i componenti
Passaggio 2: collegare tutti i componenti

La fotoresistenza e il sensore a ultrasuoni necessitano di uno spazio per un rilevamento accurato. Risparmia un po' di spazio e pensa alla luce per la fotoresistenza.

Passaggio 3: Passaggio 3: Codice

Passaggio 3: codice!
Passaggio 3: codice!

*Aggiungi libreria sia in Arduino che in Processing.

Arduino: cerca "nuovo ping" nella libreria

Elaborazione: cerca "seriale" in libreria

Codice per Arduino:

#includere

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

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int lightSensorPin = A0; int valoreanalogico = 0;

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

void loop() { int Value1 = sonar.ping_cm(); Valore1 = mappa(Valore1, 1, 60, 500, 24); Valore1 = vincolo(Valore1, 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);

ritardo(50);

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

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

Serial.println(); }

Codice per il trattamento:

//classe: (base)//

import processing.serial.*;

int fine = 10; Seriale stringa; Porta seriale;

int pcount = 350; Particella p = nuova Particella[pcount]; int diagonale; intero e = 100;

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

rotazione galleggiante = 0;

void draw() { while (port.available() > 0) { serial = port.readStringUntil(end); ritardo(10); } if (serial != null) { String a = split(serial, ', '); println(a[0]); println(a[1]); println(a[2]); println(a[3]); println(a[4]); int risultato1 = Integer.parseInt(a[0]); System.out.println(risultato1); frameRate(risultato1); int risultato2 = Integer.parseInt(a[1]); System.out.println(risultato2); int risultato3 = Integer.parseInt(a[2]); System.out.println(risultato3); int risultato4 = Integer.parseInt(a[3]); System.out.println(risultato4); int risultato5 = Intero.parseInt(a[4]); System.out.println(risultato5); sfondo(risultato2, risultato3, risultato4); translate(larghezza/2, altezza); rotazione-=0,0005; ruotare(rotazione); for (int i = 0; i diagonale) { p = new Particle(); } } } }

//classe: Particella//

classe Particella { float n; galleggiante r; galleggiante o; galleggiante c; galleggiante d; intl; Particella() { l = 100; n = casuale(3, larghezza/2); r = casuale(0.10, DUE_PI); o = casuale(1, casuale(1, larghezza/n)); c = casuale(180, 228); d = casuale(160, 208); } disegno vuoto() { l++; pushMatrix(); ruotare(r); translate(drawDist(), 1); ellisse(10, 10, larghezza/o/4, larghezza/o/4); popMatrix(); o-=0.06; } float drawDist() { return atan(n/o)*width/HALF_PI; } }

Passaggio 4: Passaggio 4: Connetti e prova

Passaggio 4: connetti e prova
Passaggio 4: connetti e prova

Passaggio 5: Passaggio 5: vedere il risultato

Passaggio 5: guarda il risultato!
Passaggio 5: guarda il risultato!

La velocità della palla in movimento sarà maggiore quando qualcosa è più vicino al sensore a ultrasuoni. Inoltre, il controllo della luce con fotoresistenza apparirà durante l'elaborazione come oscurità di sfondo.

Consigliato: