You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.9 KiB
Java

import processing.core.*;
import static processing.core.PApplet.*;
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) {
println("There are no arduinos available for use.");
applet.exit();
} else {
println("Available arduinos:");
for( String ard : arduinos) {
println(ard);
}
print("Using arduino ");
println(arduinos[whichArduino]);
// this.arduino = new Arduino(applet, arduinos[whichArduino], comRate);
//
// for (Direction dir : Direction.values()) {
// this.arduino.pinMode(dir.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);
}
}
public void allOn() {
for (Direction dir : Direction.values()) {
turnOn(dir);
}
}
public void allOff() {
for (Direction dir : Direction.values()) {
turnOff(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;
}
}
}