Stap 3: De code uploaden naar je Arduino
Deze demonstratie-Code vindt u in de RobotGeek bibliotheken en gereedschappen onder:
Deze code krijgt ons door de volgende drie secties. U zal worden gevraagd om de lineaire actuator aansluiten op verschillende pinnen op basis van het gedeelte van de zelfstudie u bezig bent.
/ *** * De manifestatie van de uitrusting van de RobotGeek Lineaire Actuator experimentator van * ___ * | \---------\___________________________ * __| | || --------------------|__ * (o | FIRGELLI | o || ____________________| o) * |__________________/--------------------------|| *** Het volgende schema zal u toelaten om een Firgelli Lineaire actuator met controle * de RobotGeek schuif, RobotGeek knop RobotGeek Joystick en RobotGeek druktoetsen ** http://www.robotgeek.com/robotgeek-experimenters-kit-linear-actuator *** bedrading * Lineaire Actuator - Digital Pin 6, 9, 10 en 11 ** Knob - analoge Pin 0 * Joystick - analoge Pin 1 * Slider - analoge Pin 2 ** drukknop - Digital Pin 2 * drukknop - digitale Pin 4 * drukknop - digitale Pin 7 ** Jumpers voor pinnen 3/5/6 en 9/10/11 moeten worden ingesteld op 'VIN' *** controle gedrag : * De lineaire actuator houden absolute positie verplaatsen van de schuifregelaar of de knop zal verplaatsen. -De verplaatsen van de joystick wordt de lineaire actuator stapsgewijs verplaatsen. Drukken een van de knoppen zal de lineaire actuator naar een vooraf bepaalde positie verplaatsen. * *** / //Includes #include //Servo bibliotheek kan gebruikt worden voor lineaire aandrijvingen van Firgelli Mini //Linear Actuator Pins const int LINEARPIN_BUTTON = 6; Lineaire Actuator op digitale Pin 6 const int LINEARPIN_KNOB = 9; Lineaire Actuator op digitale Pin 9 const int LINEARPIN_SLIDER = 10; Lineaire Actuator op digitale Pin 10 const int LINEARPIN_JOYSTICK = 11; Lineaire Actuator op digitale Pin 11 //Analog Input Pins const int KNOB_PIN = 0; Knop op analoge Pin 0 const int JOYSTICK_PIN = 1; Joystick (verticaal) op analoge Pin 1 const int SLIDER_PIN = 2; Schuifregelaar op analoge Pin 2 //Digital Input Pins const int BUTTON1_PIN = 2; Knop 1 op Digital Pin 2 const int BUTTON2_PIN = 4; Knop 2 op de digitale Pin 4 const int BUTTON3_PIN = 7; Met knop 3 op digitale Pin 7 //Generic deadband beperkt - niet alle joystics zullen centreren op 512, zodat deze limieten verwijderen 'drift' van joysticks die uit het midden. Const int DEADBAND_LOW = 482; Deze waarde te verlagen als drift optreedt, verhogen te verhogen van de gevoeligheid rond het centrum positie const int DEADBAND_HIGH = 542; Verhoog deze waarde als drift optreedt, verlagen om te verhogen van de gevoeligheid rond de midden positie //Max/min pulse waarden in microseconden voor de lineaire aandrijvingen const int LINEAR_MIN = 1050; Const int LINEAR_MAX = 2000; variabelen zal veranderen: int button1State = 0; variabele voor het lezen van de drukknop status int button2State = 0; variabele voor het lezen van de drukknop status int button3State = 0; variabele voor het lezen van de drukknop status Servo linearKnob, linearSlider, linearButton, linearJoystick; maken van servo-objecten om te bepalen de lineaire aandrijvingen int knobValue, sliderValue, joystickValue; variabelen te houden van de laatste lezing van de analoge pins. De waarde zal liggen tussen 0 en 1023 int valueMapped; de joystick waarden zal worden gewijzigd (of 'toegewezen') naar nieuwe waarden worden verzonden naar de lineaire actuator. variabelen voor de huidige positionele waarde wordt verzonden naar de Lineaire servomotor. int linearValue_Knob = 1500; int linearValue_Slider = 1500; int linearValue_Button = 1500; int linearValue_Joystick = 1500; int speed = 2; void setup {//initialize lineaire aandrijvingen als servo objecten linearKnob.attach(LINEARPIN_KNOB); / / hecht/activeert de lineaire actuator als een servo-object linearSlider.attach(LINEARPIN_SLIDER); / / hecht/activeert de lineaire actuator als een servo-object linearButton.attach(LINEARPIN_BUTTON); / / hecht/activeert de lineaire actuator als een servo-object linearJoystick.attach(LINEARPIN_JOYSTICK); / / hecht/activeert de lineaire actuator als een servo-object //Analog pinnen niet hoeft te worden geïnitialiseerd //use de writeMicroseconds in te stellen van de lineaire aandrijvingen op hun standaard posities linearKnob.writeMicroseconds(linearValue_Knob); () linearSlider.writeMicroseconds linearValue_Slider); linearButton.writeMicroseconds(linearValue_Button); linearJoystick.writeMicroseconds(linearValue_Joystick); } void loop {//Preset posities voor knopbesturingselement / / als de drukknop instellen wordt ingedrukt de lineaire waarde button1State = digitalRead(BUTTON1_PIN); als (button1State == HIGH) {/ / set de positie waarde linearValue_Button = 1300;} button2State = digitalRead(BUTTON2_PIN); als (button2State == HIGH) {/ / set de positie waarde linearValue_Button = 1500;} button3State = digitalRead(BUTTON3_PIN); als (button3State == HIGH) {/ / set de positie waarde linearValue_Button = 1700;} //Analog directe controle //read de waarden uit de analoge sensoren-knobValue = analogRead(KNOB_PIN); sliderValue = analogRead(SLIDER_PIN); linearValue_Knob = kaart (knobValue 0, 1023, LINEAR_MAX, LINEAR_MIN); Kaart van analoge waarde van de sensor tot de lineaire actuator-linearValue_Slider = kaart (sliderValue, 0, 1023, LINEAR_MAX, LINEAR_MIN); Kaart van analoge waarde van de sensor tot de lineaire actuator //Incremental Joystick-controle joystickValue = analogRead(JOYSTICK_PIN); Lees de waarden van de joystick //only update als de joystick buiten de deadzone (d.w.z. verplaatste oustide de middenpositie is) als (joystickValue > DEADBAND_HIGH || joystickValue < DEADBAND_LOW) {valueMapped = kaart (joystickValue, 0, 1023, snelheid, - snelheid); //Map analoge waarde van inheemse joystick waarde (0 tot 1023) tot stapsgewijze wijziging (snelheid naar - snelheid). linearValue_Joystick = linearValue_Joystick + valueMapped; //add toegewezen joystick waarde te presenteren van de waarde linearValue_Joystick = beperken (linearValue_Joystick LINEAR_MIN, LINEAR_MAX); } //Use de writeMicroseconds in te stellen van de lineaire actuator op zijn nieuwe positie linearKnob.writeMicroseconds(linearValue_Knob); linearSlider.writeMicroseconds(linearValue_Slider); linearButton.writeMicroseconds(linearValue_Button); linearJoystick.writeMicroseconds(linearValue_Joystick); delay(10); }