This commit is contained in:
commit
1df3c70f2c
1 changed files with 147 additions and 0 deletions
147
snowflake energy meter.pde
Normal file
147
snowflake energy meter.pde
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
//Based on an example by Tom Igoe
|
||||||
|
PrintWriter output;
|
||||||
|
import processing.serial.*;
|
||||||
|
import de.bezier.data.sql.*;
|
||||||
|
//import SQLibrary.*; // mysql database library
|
||||||
|
int xrnd = 0;
|
||||||
|
int yrnd = 0;
|
||||||
|
PFont fontA;
|
||||||
|
int xbig = 1000;
|
||||||
|
int ybig = 768;
|
||||||
|
int flakesize = 200;
|
||||||
|
|
||||||
|
Serial myPort; // The serial port:
|
||||||
|
String buff = "";
|
||||||
|
int NEWLINE = 10;
|
||||||
|
MySQL msql;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// List all the available serial ports:
|
||||||
|
println(Serial.list());
|
||||||
|
|
||||||
|
// I know that the first port in the serial list on my mac
|
||||||
|
// is always my Keyspan adaptor, so I open Serial.list()[0].
|
||||||
|
// Open whatever port is the one you're using.
|
||||||
|
String portName = Serial.list()[1];
|
||||||
|
myPort = new Serial(this, portName, 9600);
|
||||||
|
output = createWriter("datalog.txt");
|
||||||
|
size(xbig,ybig);
|
||||||
|
background(0);
|
||||||
|
fontA = loadFont("CourierNew36.vlw");
|
||||||
|
textAlign(CENTER);
|
||||||
|
textFont(fontA, 20);
|
||||||
|
|
||||||
|
|
||||||
|
String user = "insert username";
|
||||||
|
String pass = "insert password";
|
||||||
|
String database = "hackdb";
|
||||||
|
msql = new MySQL( this, "insert yourserver here", database, user, pass );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void draw()
|
||||||
|
{
|
||||||
|
while (myPort.available() > 0)
|
||||||
|
serialEvent(myPort.read());
|
||||||
|
}
|
||||||
|
|
||||||
|
void snowflakedraw()
|
||||||
|
{
|
||||||
|
|
||||||
|
//randomly refresh the screen
|
||||||
|
if (random(0,200) > 170){
|
||||||
|
// saveFrame("snowflakespaperx##.png");
|
||||||
|
background(0,10);
|
||||||
|
}
|
||||||
|
//stroke(0, random(50,255));
|
||||||
|
//translate(width/2, height/2);
|
||||||
|
translate(random(0+flakesize/2,width-flakesize/2), random(0+flakesize/2,height-flakesize/2));
|
||||||
|
rotate(radians(random(0,360)));
|
||||||
|
//float itervar = random(0, 2*width);
|
||||||
|
for (int sweep = 1; sweep <random(5,50); sweep++){
|
||||||
|
float spikelength = random(0, flakesize*.7);
|
||||||
|
float offset = random(0, flakesize*.7);
|
||||||
|
|
||||||
|
//draw the spines
|
||||||
|
stroke(255,10);
|
||||||
|
for (int i = 0; i<6; i++){
|
||||||
|
rotate(radians(-60));
|
||||||
|
line(0,0,0,flakesize/2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw the flake bits
|
||||||
|
stroke(250,random(0,255));
|
||||||
|
for (int i = 0; i<6; i++){
|
||||||
|
rotate(radians(-60));
|
||||||
|
line(0,spikelength/(sweep/2),spikelength/(sweep/2),offset/12);
|
||||||
|
line(0,spikelength/(sweep/2),-spikelength/(sweep/2),offset/12);
|
||||||
|
// delay(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void serialEvent(int serial)
|
||||||
|
{
|
||||||
|
if (serial != NEWLINE) {
|
||||||
|
// Store all the characters on the line.
|
||||||
|
buff += char(serial);
|
||||||
|
} else {
|
||||||
|
// The end of each line is marked by two characters, a carriage
|
||||||
|
// return and a newline. We're here because we've gotten a newline,
|
||||||
|
// but we still need to strip off the carriage return.
|
||||||
|
if (buff.length()>1) {
|
||||||
|
buff = buff.substring(0, buff.length()-1);
|
||||||
|
|
||||||
|
// Parse the String into an integer. We divide by 4 because
|
||||||
|
// analog inputs go from 0 to 1023 while colors in Processing
|
||||||
|
// only go from 0 to 255.
|
||||||
|
// int val = Integer.parseInt(buff)/4;
|
||||||
|
|
||||||
|
// Clear the value of "buff"
|
||||||
|
println(buff);
|
||||||
|
snowflakedraw();
|
||||||
|
//xrnd = int(random(0,xbig));
|
||||||
|
//yrnd = int(random(0,ybig));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// fill(random(180,255),random(0,255),random(0,255), 100);
|
||||||
|
// ellipse(xrnd, yrnd, 80, 80);
|
||||||
|
// font = loadFont("FFScala-32.vlw");
|
||||||
|
// textFont(font);
|
||||||
|
// fill(random(0,50));
|
||||||
|
// text("1kWh",xrnd-40,yrnd-5, 80, 50);
|
||||||
|
output.println(buff);
|
||||||
|
if ( msql.connect() )
|
||||||
|
{
|
||||||
|
msql.execute(buff);//"INSERT INTO yoursqltable VALUES (55, 2, 3)");
|
||||||
|
// msql.next();
|
||||||
|
// (<MsgNum>,<MeterNum>,<MeterAcc>)
|
||||||
|
// println( "number of rows: " + msql.getInt(1) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// connection failed !
|
||||||
|
}
|
||||||
|
buff = "";
|
||||||
|
|
||||||
|
// Shift over the existing values to make room for the new one.
|
||||||
|
// for (int i = 0; i < 63; i++)
|
||||||
|
// values[i] = values[i + 1];
|
||||||
|
|
||||||
|
// Add the received value to the array.
|
||||||
|
// values[63] = val*8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyPressed() { // Press a key to save the data
|
||||||
|
output.flush(); // Write the remaining data
|
||||||
|
output.close(); // Finish the file
|
||||||
|
exit(); // Stop the program
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in a new issue