Stap 4: Instellen van Pyduino Sketch
We sturen het om ons dynamisch kunt bepalen onze Arduino-apparaat dat we moeten een schets op het uploaden zodat het van de berichten interpreteren kan van onze Python code. Het opzetten van deze schets is vrij eenvoudig. Het apparaat Arduino zal communiceren met onze computer via de seriële poort. Voor meer informatie over seriële functies voor Arduino check out: http://www.arduino.cc/en/Reference/Serial . Het apparaat Arduino zal controleren om te zien of het willekeurige tekens beschikbaar in de seriële ontvangstbuffer en als zij dit doet zal te parseren van het binnenkomende bericht. Schrijf na ontvangst die het gehele bericht het apparaat dan wat interpreteren zal te doen, of het nu een lees functie, functie of instelling van een pin-modus. Dit is schets is veelzijdig genoeg voor zitten kundig voor pin modi instellen, uitvoeren van lezen en schrijven van digitale en analoge waarden, alsmede uitvoeren van servo schrijft. Eventuele extra functies zal moeten worden gecodeerd in jezelf maar voor de toepassing van dit project hoeven we niet iets toe te voegen.
Bekijk het stukje code hieronder. Dit is wat we gaan gebruiken om een servomotor werken met de sprong Motion Controller. Wij willen kunnen krijgen een servo werken voordat we gaan en alle 4 daar krijgen. Dit bestand is tevens beschikbaar op de github pagina voor dit instructable op: https://github.com/theown1/pyduino_leapmotion/blob...
U kunt gaan en deze schets uploaden naar uw apparaat Arduino. Wanneer u het uploadt, moet je een foto die op degene hierboven lijkt. Een ding die om op te schrijven moet u wellicht is de locatie van uw apparaat Arduino op uw computer, kunt u dit bij het bodemrecht van de arduino-programma nadat u een schets geüpload. Voor mij mijn arduino bevindt zich op: / dev/ttyACM0
/* * Sketch to control the pins of Arduino via serial interface * * Commands implemented with examples: * * - RD13 -> Reads the Digital input at pin 13 * - RA4 - > Reads the Analog input at pin 4 * - WD13:1 -> Writes 1 (HIGH) to digital output pin 13 * - WA6:125 -> Writes 125 to analog output pin 6 (PWM) */#include char operation; // Holds operation (R, W, ...) char mode; // Holds the mode (D, A) int pin_number; // Holds the pin number int digital_value; // Holds the digital value int analog_value; // Holds the analog value int value_to_write; // Holds the value that we want to write int wait_for_transmission = 5; // Delay in ms in order to receive the serial data// create servo object to control a servo // a maximum of eight servo objects can be created Servo SERVO2; int SERVO2_PIN = 2; // this is where the servo is attached to on our boardvoid setup() { Serial.begin(9600); // Serial Port at 9600 baud Serial.setTimeout(500); // Instead of the default 1000ms, in order // to speed up the Serial.parseInt() SERVO2.attach(SERVO2_PIN); SERVO2.write(180); // reset to original position}void servo_write(int pin_number, int servo_value){ /* * Performs a servo write on pin_number with the servo_value * The value must be 0 to 180 (might change depending on servo) */ if (pin_number==SERVO2_PIN) { SERVO2.write(servo_value); delay(10); } }void loop() { // Check if characters available in the buffer if (Serial.available() > 0) { // parse information // courtesy of lekum operation = Serial.read(); delay(wait_for_transmission); // If not delayed, second character is not correctly read mode = Serial.read(); pin_number = Serial.parseInt(); // Waits for an int to be transmitted if (Serial.read()==':') { value_to_write = Serial.parseInt(); // Collects the value to be written } // if we recieve proper input write servo if (operation == 'W') { if (mode == 'S') { servo_write(pin_number, value_to_write); } } } }