Start javaifying

This commit is contained in:
jan 2016-07-09 17:16:15 -07:00
commit 5f0a62d9bf
16 changed files with 756 additions and 93 deletions

30
src/Camera.java Normal file
View file

@ -0,0 +1,30 @@
import processing.core.*;
import processing.video.*;
class Camera {
Capture cam;
/*
Set up a camera.
*/
Camera(PApplet applet, int cameraMode) {
String[] cameras = Capture.list();
if (cameras.length == 0) {
PApplet.println("There are no cameras available for capture.");
applet.exit();
} else {
PApplet.println("Available cameras:");
for(int i = 0; i < cameras.length; i++) {
PApplet.println(i, cameras[i]);
}
PApplet.print("Using camera mode ");
PApplet.println(cameras[cameraMode]);
this.cam = new Capture(applet, cameras[cameraMode]);
this.cam.start();
}
}
}

58
src/EuglenaApplet.java Normal file
View file

@ -0,0 +1,58 @@
import processing.core.*;
public class EuglenaApplet extends PApplet {
final int cameraMode = 77;
final int whichArduino = 0;
// Hardware
ProjectorApplet projectorApplet;
Camera camera;
LEDControl ledControl;
// Software components
Menu menu;
public static void main(String args[]) {
PApplet.main("EuglenaApplet");
}
@Override
public void settings() {
size(1000, 1000, P2D);
}
@Override
public void setup() {
clear();
smooth();
// Start up projectorApplet window
projectorApplet = new ProjectorApplet();
String[] args = {"Euglena projector"};
PApplet.runSketch(args, projectorApplet);
camera = new Camera(this, cameraMode);
ledControl = new LEDControl(this, whichArduino);
menu = new Menu(this);
}
@Override
public void draw() {
clear();
fill(255);
rect(50, 50, 100, 100);
}
void drawArrow(int cx, int cy, int len, float angle){
pushMatrix();
translate(cx, cy);
rotate(radians(angle));
line(0,0,len, 0);
line(len, 0, len - 8, -8);
line(len, 0, len - 8, 8);
popMatrix();
}
}

View file

@ -1,29 +0,0 @@
import processing.core.*;
public class ExampleApplet extends PApplet {
public static void main(String args[]) {
PApplet.main("ExampleApplet");
}
@Override
public void settings() {
// TODO: Customize screen size and so on here
size(200, 200);
}
@Override
public void setup() {
// TODO: Your custom drawing and setup on applet start belongs here
clear();
}
@Override
public void draw() {
// TODO: Do your drawing for each frame here
clear();
fill(255);
rect(50, 50, 100, 100);
}
}

66
src/LEDControl.java Normal file
View file

@ -0,0 +1,66 @@
import processing.core.*;
import cc.arduino.*;
class LEDControl {
final int comRate = 57600;
Arduino arduino;
boolean[] state = {false, false, false, false};
LEDControl(PApplet applet, int whichArduino) {
// Arduino - initialize correct arduino
String[] arduinos = Arduino.list();
if (arduinos.length == 0) {
PApplet.println("There are no arduinos available for use.");
applet.exit();
} else {
PApplet.println("Available arduinos:");
for(int i = 0; i < arduinos.length; i++) {
PApplet.println(arduinos[i]);
}
PApplet.print("Using arduino ");
PApplet.println(arduinos[whichArduino]);
this.arduino = new Arduino(applet, arduinos[whichArduino], comRate);
this.arduino.pinMode(Direction.LEFT.pin, Arduino.OUTPUT);
this.arduino.pinMode(Direction.RIGHT.pin, Arduino.OUTPUT);
this.arduino.pinMode(Direction.UP.pin, Arduino.OUTPUT);
this.arduino.pinMode(Direction.DOWN.pin, Arduino.OUTPUT);
}
}
boolean isActive(Direction dir) {
return this.state[dir.index];
}
public void turnOff(Direction dir) {
this.arduino.digitalWrite(dir.pin, Arduino.LOW);
this.state[dir.index] = false;
}
public void turnOn(Direction dir) {
this.arduino.digitalWrite(dir.pin, Arduino.HIGH);
this.state[dir.index] = true;
}
public void toggle(Direction dir) {
if (isActive(dir)) {
turnOff(dir);
} else {
turnOn(dir);
}
}
enum Direction {
LEFT (0, 10),
RIGHT (1, 5),
UP (2, 6),
DOWN (3, 9);
final int index, pin;
Direction(int index, int pin) {
this.index = index;
this.pin = pin;
}
}
}

25
src/ProjectorApplet.java Normal file
View file

@ -0,0 +1,25 @@
import processing.core.PApplet;
class ProjectorApplet extends PApplet {
final int projectorScreenNumber = 2;
final static int centerX = 860;
final static int centerY = 540;
public void settings() {
fullScreen(P2D, this.projectorScreenNumber);
}
@Override
public void setup() {
clear();
}
@Override
public void draw() {
background(50);
fill(255);
ellipse(mouseX, mouseY, 10, 10);
}
}

8
src/Settings.java Normal file
View file

@ -0,0 +1,8 @@
/**
*
*/
public class Settings {
final static int centerX = 860;
final static int centerY = 540;
}