Start javaifying
This commit is contained in:
parent
518fccaf4c
commit
5f0a62d9bf
16 changed files with 756 additions and 93 deletions
30
src/Camera.java
Normal file
30
src/Camera.java
Normal 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
58
src/EuglenaApplet.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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
66
src/LEDControl.java
Normal 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
25
src/ProjectorApplet.java
Normal 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
8
src/Settings.java
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
public class Settings {
|
||||
|
||||
final static int centerX = 860;
|
||||
final static int centerY = 540;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue