Hola a todos.
Quiero conectar un cuadro eléctrico, que fabrique hace tiempo, a un ordenador con arduino DUE y processing para programar y así crear un ejecutable para poder usarlo tanto en un portátil como en tablet-android, o voy a intentar hacerlo.
Voy haciendo mientras voy aprendiendo.
Programo con processing y manejo el arduino con el standarfirmata.
Lo que va ha hacer(O deseo que al final haga
):
Manejar el cuadro desde el ordenador, y en el futuro desde una tablet.
Ver señales del cuadro en el ordenador.
Coger tiempos , voltajes y consumos desde el ordenador y si es posible crear gráfica para imprimir..
Futuras ampliaciones según el programa ejecutado
El control de arduino ya lo tengo casi echo, solo me falta poder manejar el cuadro desde el programa y mejorarlo mientras aprendo. El estado del cuadro esta también casi, solo que cuando esta abriendo o cerrando no me lo pone se me queda intermedia, no veo que estoy haciendo mal. El resto mientras investigo.
Os dejo lo que he escrito asta ahora:
import processing.serial.*;
import org.firmata.*;
import cc.arduino.*;
Arduino arduino;
boolean SignalOpen;
boolean SignalClose;
PFont font12, font22, font44;
PImage logo;
void setup() {
size(350, 280);
font12 = loadFont("MicrosoftYaHei-12.vlw");
font22 = loadFont("MicrosoftYaHei-22.vlw");
font44 = loadFont("FranklinGothic-Demi-32.vlw");
logo=loadImage("logo.gif");
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57000);
for (int i = 2; i <= 7; i++)
arduino.pinMode(i, Arduino.INPUT);
for (int i = 8; i <= 13; i++) {
arduino.pinMode(i, Arduino.OUTPUT);
arduino.digitalWrite(i, Arduino.LOW);
}
}
void draw() {
fondo();
estado();
if ( arduino.digitalRead(2)==Arduino.LOW) abriendo();
if ( arduino.digitalRead(3)==Arduino.LOW) cerrando();
}
void abriendo() {
SignalOpen=true;
while (arduino.digitalRead (4)==Arduino.LOW) {
if (arduino.digitalRead(3)==Arduino.LOW) break;
estado();
arduino.digitalWrite(8, Arduino.HIGH);
arduino.digitalWrite(9, Arduino.HIGH);
delay(100);
arduino.digitalWrite(9, Arduino.LOW);
delay(100);
}
arduino.digitalWrite(8, Arduino.LOW);
SignalOpen=false;
delay(300);
return;
}
void cerrando() {
SignalClose=true;
while (arduino.digitalRead (6)==Arduino.LOW) {
if (arduino.digitalRead(2)==Arduino.LOW) break;
estado();
arduino.digitalWrite(10, Arduino.HIGH);
arduino.digitalWrite(11, Arduino.HIGH);
delay(100);
arduino.digitalWrite(11, Arduino.LOW);
delay(100);
}
arduino.digitalWrite(10, Arduino.LOW);
SignalClose=false;
delay(300);
return;
}
void fondo() {
background(255, 255, 255);
stroke(0, 0, 0);
textAlign(CENTER, CENTER);
image(logo, 75, 0);
fill(0, 0, 0);
textFont(font12);
text("POR _________________________", 175, 250);
textFont(font44);
textSize(28);
text("MANEJO DE ACTUADORES", 175, 80);
fill(255, 0, 0);
rect(50, 120, 100, 40);
fill(0, 255, 0);
rect(200, 120, 100, 40);
fill(0, 0, 0);
textFont(font22);
text("ABRIR", 100, 140);
text("CERRAR", 250, 140);
return;
}
void estado() {
fill(0, 0, 0);
textFont(font22);
textAlign(CENTER, CENTER);
if (SignalClose) text("CERRANDO", 175, 200);
else
if (SignalOpen) text("ABRIENDO", 175, 200);
else
if (arduino.digitalRead(4)==Arduino.HIGH && arduino.digitalRead(5)==Arduino.HIGH && arduino.digitalRead(6)==Arduino.HIGH && arduino.digitalRead(7)==Arduino.HIGH) text("CONECTAR MANIOBRA", 175, 200);
else
if (arduino.digitalRead(4)==Arduino.LOW && arduino.digitalRead(5)==Arduino.LOW && arduino.digitalRead(6)==Arduino.LOW && arduino.digitalRead(7)==Arduino.LOW && SignalOpen==false && SignalClose==false) text("INTERMEDIA", 175, 200);
else
if (arduino.digitalRead(4)==Arduino.LOW && arduino.digitalRead(5)==Arduino.LOW && arduino.digitalRead(6)==Arduino.HIGH && arduino.digitalRead(7)==Arduino.HIGH) text("ABIERTA", 175, 200);
else
if (arduino.digitalRead(6)==Arduino.LOW && arduino.digitalRead(7)==Arduino.LOW && arduino.digitalRead(4)==Arduino.HIGH && arduino.digitalRead(5)==Arduino.HIGH) text("CERRADA", 175, 200);
return;
}
Bueno, no se que mas poner aquí.
Alguna duda intentare responder, si alguien me ayuda con lo de marcar abriendo o cerrando se lo agradecere mucho, si lo consigo yo lo expondré aquí, y si me dais algún consejo también lo agradezco
Un saludo.