Hi, I'm trying to control the pace at which my two Neopixel ring LEDs glow with a byte variable called d from Processing. When I run the two sketches, the lights will turn on but blink at a constant pace, unaffected by the d variable.
- In my computer, yes, it's port 3
- I'm using an Arduino Nano
Please help asap!
Here are the two sketches, first Processing and then Arduino:
///PROCESSING------------------------------------------------------------------------------
import processing.video.;
import processing.serial.;
int PulseVal;
Serial myPort;
Capture video;
PImage prevFrame;
float threshold = 50;
float average=0;
float sum = 0;
int count = 0;
float AVGr = 0;
float[] storedValues; // array for storing values to smooth
void setup() {
storedValues = new float[10];
size(320, 240);
// Using the default capture device
String portName = Serial.list()[3]; //change the 0 to a 1 or 2 etc. to match your port
video = new Capture(this, width, height);
video.start();
// Create an empty image the same size as the video
prevFrame = createImage(video.width, video.height, RGB);
myPort = new Serial(this, portName, 9600);
myPort.clear();
}
// New frame available from camera
void captureEvent(Capture video) {
// Save previous frame for motion detection!!
prevFrame.copy(video, 0, 0, video.width, video.height, 0, 0, video.width, video.height);
prevFrame.updatePixels();
video.read();
}
void draw() {
background(0);
frameRate(10);
// You don't need to display it to analyze it!
image(video, 0, 0);
video.loadPixels();
prevFrame.loadPixels();
// Begin loop to walk through every pixel
// Start with a total of 0
float totalMotion = 0;
// Sum the brightness of each pixel
for (int i = 0; i < video.pixels.length; i ++ ) {
// Step 2, what is the current color
color current = video.pixels*;*
- // Step 3, what is the previous color*
_ color previous = prevFrame.pixels*;_
_ // Step 4, compare colors (previous vs. current)_
_ float r1 = red(current);_
_ float g1 = green(current);_
_ float b1 = blue(current);_
_ float r2 = red(previous);_
_ float g2 = green(previous);_
_ float b2 = blue(previous);_
_ // Motion for an individual pixel is the difference between the previous color and current color._
_ float diff = dist(r1, g1, b1, r2, g2, b2);_
_ // totalMotion is the sum of all color differences._
_ totalMotion += diff;_
_ }_
_ // averageMotion is total motion divided by the number of pixels analyzed._
_ float avgMotion = totalMotion / video.pixels.length;_
_ // Draw a circle based on average motion*_
* noStroke();*
* fill(0);*
_ float r = avgMotion * 2;_
* AddNewValue(r); // function to average values*
* float lerp = 0.95; //must be between 0-1*
_ AVGr = lerp * AVGr + (1.0-lerp) * r;_
* int AVGr2 = int (AVGr);*
* int AVGr3 = 100 - AVGr2;*
* float d = map(AVGr3, 0, 100, 0, 10);*
* byte d2 = byte (d);*
* myPort.write(d2);*
* //println(d2);*
* ellipse(width/2, height/2, r, r);*
* }*
// FUNCTION to smooth the values:
void AddNewValue(float val){
* if(count < storedValues.length){*
* //array is not full yet*
* storedValues[count++] = val;*
* sum += val;*
* }*
* else{*
* sum += val;*
* sum -= storedValues[0];*
* //shift all of the values, drop the first one (oldest)*
* for(int i = 0; i < storedValues.length-1; i++){*
_ storedValues = storedValues[i+1] ;
* }
//the add the new one*
* storedValues[storedValues.length-1] = val;
}
}
////// ARDUINO------------------------------------------------------------------------------_
#include <Adafruit_NeoPixel.h>
_#define PIN 3 // input pin Neopixel is attached to*
//#define PIN 4
#define NUMPIXELS 12 // number of neopixels in Ring
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
* Serial.begin(9600);
pixels.begin(); // Initializes the NeoPixel library.
pixels.show();
pixels.setBrightness(40);
Serial.begin(9600);
}
void loop() {
//
byte d2; // timing delay*
* if (Serial.available()) { // If data is available to read,
d2 = Serial.read();
Serial.println(d2);
}
// GOING UP:
for(int i=0;i<255;i++){
for(int j=0; j<NUMPIXELS; j++){
pixels.setPixelColor(j, i, i, i); // Moderately bright green color.
}
pixels.show(); // This sends the updated pixel color to the hardware.
delay(2);
// Serial.print("LED speedD: ");
// Serial.println(i);
}*_
// GOING DOWN:
* for(int i=255;i>0;i--){*
* for(int j=0; j<NUMPIXELS; j++){*
* pixels.setPixelColor(j, i, i, i); // Moderately bright green color.*
* }*
* pixels.show(); // This sends the updated pixel color to the hardware.*
* delay(d2);*
* Serial.print("LED speedD: ");*
* Serial.println(d2);*
* }*
}