Stap 7: De code...
Het basis idee voor de OpenSquare is aan het besturen van de auto met uw computer voor een testlooppas terwijl de code uw elke beweging registreert. Het tweede stukje code vervolgens replays"" de instructies die u hebt genoteerd zodat de auto gewoon rond gaat en druppels van het poeder op haar eigen. U kunt gewoon Parkeer de wagen op een plein en Bekijk het tekenen rond, of u kon tekenen van een eenvoudig element en herhaal het vaak om te maken een enorme stedelijke copy paste.
Ik verwerking gebruikt om te communiceren met de afstandsbediening van Arduino.
Om dingen makkelijker, ik heb net geüpload de schets van de StandardFirmata u onder bestand/voorbeeld/Firmata op de Arduino software vindt.
Gebruik de W, S, A en D toetsen om te bepalen van de richting van de auto. Ik had wat problemen met mijn 5e kanaal wordt HIGH hele tijd dus de manier waarop ik bepalen de servo is met de toets C. Een korte druk opent de poort en een lange druk op sluit het. Om af te sluiten van de app, drukt u op Alt.
Kopieer de bovenstaande code in twee verschillende schetsen en sla ze als "Record" en "Replay" in de dezelfde hoofdmap.
Je moet zoiets als dit op uw computer:
somewhere/OpenSquare/Record/Record.pde
somewhere/OpenSquare/Replay/Replay.pde
Hier is de code voor verwerking ten behoeve van de Recorder:
OpenSquare v1.2 - 2/2/14
importeren van processing.serial.*;
importeren van cc.arduino.*;
Seriële myPort;
Arduino arduino;
PrintWriter uitvoerbestand;
Booleaanse ToetsOmhoog (KeyUp) = false;
Boole keyright = false;
Boole keyleft = false;
Booleaanse ToetsOmlaag (KeyDown) = false;
Boole endofrec = false;
Booleaanse servo = false;
lange lastTime = 0;
float x, y;
VOID Setup {}
Uitvoerbestand = createWriter("positions.csv");
println(Arduino.List());
Arduino = nieuwe Arduino (dit, 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 = breedte/2;
y = hoogte/2;
lastTime = millis();
}
VOID draw() {}
Background(51);
Fill(255);
Ellipse(x,y,16,16);
outputFile.print(millis() + ",");
println(Millis());
Als (keyup) {}
y--;
arduino.digitalWrite (4, Arduino.HIGH);
outputFile.print(1+",");
}
else {}
outputFile.print(0+",");
arduino.digitalWrite (4, Arduino.LOW);
}
Als (keydown) {}
y ++;
arduino.digitalWrite (6, Arduino.HIGH);
outputFile.print(1+",");
}
else {}
outputFile.print(0+",");
arduino.digitalWrite (6, Arduino.LOW);
}
Als (keyleft) {}
x--;
arduino.digitalWrite (9, Arduino.HIGH);
outputFile.print(1+",");
}
else {}
outputFile.print(0+",");
arduino.digitalWrite (9, Arduino.LOW);
}
Als (keyright) {}
x ++;
arduino.digitalWrite (10, Arduino.HIGH);
outputFile.print(1+",");
}
else {}
outputFile.print(0+",");
arduino.digitalWrite (10, Arduino.LOW);
}
Als (servo) {}
//y--;
arduino.digitalWrite (2, Arduino.HIGH);
outputFile.print(1+",");
}
else {}
outputFile.print(0+",");
arduino.digitalWrite (2, Arduino.LOW);
}
outputFile.println();
println("bla");
terwijl (millis ()-lastTime < 20);
lastTime = millis();
Als (endofrec) {}
outputFile.flush(); De resterende gegevens schrijft naar het bestand
outputFile.close(); Het bestand eindigt
Exit(); Stopt het programma
}
}
ongeldig keyPressed() {}
Als (sleutel == CODED) {}
Als (sleutel == 'w') ToetsOmhoog (KeyUp) = true;
Als (sleutel == de ') keydown = true;
Als (sleutel == 'a') keyleft = true;
Als (toets 'c' ==) servo = true;
Als (toets 'v' ==) servo = false;
Als (sleutel == had') {}
keyright = true;
endofrec = true;
}
Als (keyCode == ALT) endofrec = true;
}
//}
ongeldig keyReleased() {}
Als (sleutel == CODED) {}
Als (sleutel == 'w') ToetsOmhoog (KeyUp) = false;
Als (sleutel == de ') ToetsOmlaag (KeyDown) = false;
Als (sleutel == 'a') keyleft = false;
Als (sleutel == had') keyright = false;
Als (toets 'c' ==) servo = false;
Als (toets 'v' ==) servo = false;
}
//}
En nu de code voor de Replay:
OpenSquare v1.2 - 2/2/14
importeren van processing.serial.*;
importeren van cc.arduino.*;
Seriële myPort;
Arduino arduino;
Tabel;
int temps;
int w;
int s;
int;
int d;
int c;
void setup () {}
println(Arduino.List());
Arduino = nieuwe Arduino (dit, 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);
tabel = loadTable(".. / Record/positions.csv ","koptekst");
println(Table.getRowCount() + "totale rijen in tabel");
}
VOID draw() {}
for (int i = 0; ik < table.getRowCount(); i ++) {}
TableRow rij = table.getRow(i);
temps = row.getInt(0);
w = row.getInt(1);
s = row.getInt(2);
een = row.getInt(3);
d = row.getInt(4);
c = row.getInt(5);
Als (w == 1) {}
arduino.digitalWrite (4, Arduino.HIGH);
}
else {}
arduino.digitalWrite (4, Arduino.LOW);
}
Als (s == 1) {}
arduino.digitalWrite (6, Arduino.HIGH);
}
else {}
arduino.digitalWrite (6, Arduino.LOW);
}
Als (een == 1) {}
arduino.digitalWrite (9, Arduino.HIGH);
}
else {}
arduino.digitalWrite (9, Arduino.LOW);
}
Als (d == 1) {}
arduino.digitalWrite (10, Arduino.HIGH);
}
else {}
arduino.digitalWrite (10, Arduino.LOW);
}
Als (c == 1) {}
arduino.digitalWrite (2, Arduino.HIGH);
}
else {}
arduino.digitalWrite (2, Arduino.LOW);
}
vertraging(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();
}