Paso 7: El código...
La idea básica de la OpenSquare es controlar el coche con el ordenador para una prueba de funcionamiento mientras que el código registra todos tus movimientos. La segunda pieza de código entonces "repite" las instrucciones que registran para que el coche sólo va alrededor y cae el polvo en su propia. Puedes dejar caer el coche en una plaza y ver traza en torno o podría dibujar un elemento simple y repetir muchas veces para crear un gran urbano copy paste.
Usé el procesamiento para comunicarse con Arduino el control remoto.
Para facilitar las cosas, he subido solo el bosquejo de StandardFirmata que se puede encontrar en archivo/ejemplo/una firmado en el software de Arduino.
Utiliza W, S, A y D teclas para controlar la dirección del coche. Tuve algunos problemas con mi canal 5 siendo alta todo el tiempo por lo que la manera de controlar el servo es pulsando la tecla C. Una pulsación breve abre la puerta y lo cierra una pulsación larga. Para salir de la aplicación, presione Alt.
Copiar el código anterior en dos diferentes dibujos y guardarlos como "Record" y "Reproducción" en la misma carpeta raíz.
Debe tener algo como esto en su computadora:
somewhere/OpenSquare/Record/Record.pde
somewhere/OpenSquare/Replay/Replay.pde
Aquí está el código para el proceso de la grabadora:
OpenSquare v1.2 - 02/02/14
Import processing.serial.*;
Import cc.arduino.*;
Serie myPort;
Arduino arduino;
PrintWriter outputFile;
Boolean keyup = false;
keyright boolean = false;
Boolean keyleft = false;
Boolean keydown = false;
Boolean endofrec = false;
servo boolean = false;
largo lastTime = 0;
Float x, y;
void setup() {}
outputFile = createWriter("positions.csv");
println(Arduino.List());
Arduino = nuevo Arduino (este, Arduino.list() [3], 57600);
arduino.pinMode (2, Arduino.OUTPUT);
arduino.pinMode (4, Arduino.OUTPUT);
arduino.pinMode (6, Arduino.OUTPUT);
arduino.pinMode (9, Arduino.OUTPUT);
arduino.pinMode (10, Arduino.OUTPUT);
Size(640,360);
x = ancho/2;
y = altura/2;
lastTime = millis();
}
void draw() {}
Background(51);
Fill(255);
Ellipse(x,y,16,16);
outputFile.print(millis() + ",");
println(Millis());
Si (keyup) {}
y--;
arduino.digitalWrite (4, Arduino.HIGH);
outputFile.print(1+",");
}
Else {}
outputFile.print(0+",");
arduino.digitalWrite (4, Arduino.LOW);
}
Si {} (keydown)
y ++;
arduino.digitalWrite (6, Arduino.HIGH);
outputFile.print(1+",");
}
Else {}
outputFile.print(0+",");
arduino.digitalWrite (6, Arduino.LOW);
}
Si (keyleft) {}
x--;
arduino.digitalWrite (9, Arduino.HIGH);
outputFile.print(1+",");
}
Else {}
outputFile.print(0+",");
arduino.digitalWrite (9, Arduino.LOW);
}
Si (keyright) {}
x ++;
arduino.digitalWrite (10, Arduino.HIGH);
outputFile.print(1+",");
}
Else {}
outputFile.print(0+",");
arduino.digitalWrite (10, Arduino.LOW);
}
Si {} (servo)
//y--;
arduino.digitalWrite (2, Arduino.HIGH);
outputFile.print(1+",");
}
Else {}
outputFile.print(0+",");
arduino.digitalWrite (2, Arduino.LOW);
}
outputFile.println();
println("bla");
mientras que (millis ()-lastTime < 20);
lastTime = millis();
Si (endofrec) {}
outputFile.flush(); Escribe los datos restantes en el archivo
outputFile.close(); Termina el archivo
Exit(); Se detiene el programa
}
}
{} void keyPressed()
Si (clave == codificado) {}
Si (clave == 'w') keyup = true;
Si (clave == de ') keydown = true;
Si (clave == 'a') keyleft = true;
Si (clave == 'c') servo = true;
Si (clave == 'v') servo = false;
Si (clave == había ') {}
keyright = true;
endofrec = true;
}
Si (keyCode == ALT) endofrec = true;
}
//}
{} void keyReleased()
Si (clave == codificado) {}
Si (clave == 'w') keyup = false;
Si (clave == de ') keydown = false;
Si (clave == 'a') keyleft = false;
Si (clave == había ') keyright = false;
Si (clave == 'c') servo = false;
Si (clave == 'v') servo = false;
}
//}
Y ahora el código para la reproducción:
OpenSquare v1.2 - 02/02/14
Import processing.serial.*;
Import cc.arduino.*;
Serie myPort;
Arduino arduino;
Mesa;
temps de int;
int w;
int s;
int a;
int d;
int c;
void setup () {}
println(Arduino.List());
Arduino = nuevo Arduino (este, Arduino.list() [3], 57600);
arduino.pinMode (2, Arduino.OUTPUT);
arduino.pinMode (4, Arduino.OUTPUT);
arduino.pinMode (6, Arduino.OUTPUT);
arduino.pinMode (9, Arduino.OUTPUT);
arduino.pinMode (10, Arduino.OUTPUT);
tabla = loadTable(".. / Record/positions.csv ","header");
println(Table.getRowCount() + "total de filas en la tabla");
}
void draw() {}
para (int i = 0; i < table.getRowCount(); i ++) {}
TableRow fila = table.getRow(i);
Temps = row.getInt(0);
w = row.getInt(1);
s = row.getInt(2);
un = row.getInt(3);
d = row.getInt(4);
c = row.getInt(5);
Si (w == 1) {}
arduino.digitalWrite (4, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (4, Arduino.LOW);
}
Si (s == 1) {}
arduino.digitalWrite (6, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (6, Arduino.LOW);
}
Si (a == 1) {}
arduino.digitalWrite (9, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (9, Arduino.LOW);
}
Si (d == 1) {}
arduino.digitalWrite (10, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (10, Arduino.LOW);
}
Si (c == 1) {}
arduino.digitalWrite (2, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (2, Arduino.LOW);
}
Delay(20);
}
arduino.digitalWrite (2, Arduino.LOW);
arduino.digitalWrite (4, Arduino.LOW);
arduino.digitalWrite (6, Arduino.LOW);
arduino.digitalWrite (9, Arduino.LOW);
arduino.digitalWrite (10, Arduino.LOW);
Exit();
}