Eenvoudige 18dof Hexapod, Arduino nano (eventueel met pololu maestro) (12 / 13 stap)

Stap 12:18 Servo Code


Zie "12 servo" voor de noten over het aanpassen van de-constanten zijn. Code is op
https://github.com/nouyang/18-servo-hexapod/blob/master/pololu_aug17-2012.pde.

Uitleg:
Zie documentatie op http://www.pololu.com/docs/0J40/5.e

a. BYTE is een parameter die aanduidt van de base (formaat) naar ons http://www.arduino.cc/en/Serial/Print

b. doel is een niet-negatief geheel getal minder dan 8192 (het kan worden geschreven in binaire notatie met 14 of minder cijfers)
bijvoorbeeld 6000, of binair: 01011101110000

c. 0x7F is 01111111 in binary, welke oneindig naar links, dus nullen "&" ing (bitsgewijze AND) het maskers uit alle cijfers in doel (als doel wordt geschreven in binaire) met uitzondering van de laatste 7 cijfers (alleen 1 en 1 == 1. alle andere combinaties == 0)
01011101110000
& 00000001111111
= 00000001110000

d. rechts exploitant, laatste zeven cijfers (nummers 7 t/m 13) doel van verschuivingen in de lege ruimte en dus nu de "nieuwe" laatste zeven cijfers werden oorspronkelijk bits #0 tot en met 6 (Zie kleurgecodeerde pololu doc). Masker met 0x7F weer, gewoon om zeker te zijn.
01011101110000, >> 7 te:
00000000101110, vervolgens:
& 00000001111111
= 00000000101110

Het belangrijkste verschil met de standaardcode is dat ik de waarden toegewezen, zodat ik kon gedachteloos poort kode arduino-"Servo.write ()" - stijl pololu-"settarget ()" - stijl.

VOID settarget (unsigned char servo, unsigned int doel)
{
doelstelling = kaart (doel, 0, 180, 2400, 9500);

Mijn code, omhoog op github, wordt ook gekopieerd hieronder:
======================
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 3

#define TIBIA 25
#define vertraging 150

#define CW 70
#define CCW 105

#define van 92
#define neer 125

// ~~~~~~~~~~~~~~~~~~~~ //

#define A_COX 1
#define A_FEM 2
#define A_TIB 3

#define B_COX 4
#define B_FEM 5
#define B_TIB 6

#define C_COX 7
#define C_FEM 8
#define C_TIB 9

#define D_COX 10
#define D_FEM 11
#define D_TIB 12
#define E_COX 13
#define E_FEM 14
#define E_TIB 15

#define F_COX 16
#define F_FEM 17
#define F_TIB 18

int numtimes = 3;

SoftwareSerial mySerial (rxPin, txPin);

void setup / / run eenmaal in, wanneer de schets wordt gestart
{
mySerial.begin(9600);
delay(1000);
}
void loop
{
for (int i = 0; ik < = 4; i ++) {}
walkfwd();
}
for (int j = 0; j < = 4; j ++) {}
walkbwd();
}
voor (int k = 0; k < = 2; k ++) {}
turnleft();
}
voor (int l = 0; l < = 2; l ++) {}
turnright();
}
}

ongeldig tibia() {}
settarget (A_TIB, TIBIA);
settarget (B_TIB, TIBIA);
settarget (C_TIB, TIBIA);
settarget (D_TIB, TIBIA);
settarget (E_TIB, TIBIA);
settarget (F_TIB, TIBIA);
}

// ~~~~~~~~~~fwd~~~~~~~~~~ //

ongeldig f1() {}
[COXA] gewijzigd
settarget (A_COX, CW);
settarget (C_COX, CW);
settarget (E_COX, CCW);

settarget (D_COX, CW);
settarget (F_COX, CW);
settarget (B_COX, CCW);

delay(delay);
}

ongeldig f2() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, DOWN);
settarget (C_FEM, DOWN);
settarget (E_FEM, DOWN);

settarget (D_FEM, UP);
settarget (F_FEM, UP);
settarget (B_FEM, UP);

delay(delay);
}

ongeldig f3() {}
[COXA] gewijzigd
settarget (A_COX, CCW);
settarget (C_COX, CCW);
settarget (E_COX, CW);

settarget (D_COX, CCW);
settarget (F_COX, CCW);
settarget (B_COX, CW);

delay(delay);
}

ongeldig f4() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, UP);
settarget (C_FEM, UP);
settarget (E_FEM, UP);

settarget (D_FEM, DOWN);
settarget (F_FEM, DOWN);
settarget (B_FEM, DOWN);

delay(delay);
}

// ~~~~~~~~~bwd~~~~~~~~~~~ //

ongeldig b1() {}
[COXA] gewijzigd
settarget (A_COX, CCW);
settarget (C_COX, CCW);
settarget (E_COX, CW);

settarget (D_COX, CCW);
settarget (F_COX, CCW);
settarget (B_COX, CW);

delay(delay);
}

ongeldig b2() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, DOWN);
settarget (C_FEM, DOWN);
settarget (E_FEM, DOWN);

settarget (D_FEM, UP);
settarget (F_FEM, UP);
settarget (B_FEM, UP);

delay(delay);
}

ongeldig b3() {}
[COXA] gewijzigd
settarget (A_COX, CW);
settarget (C_COX, CW);
settarget (E_COX, CCW);

settarget (D_COX, CW);
settarget (F_COX, CW);
settarget (B_COX, CCW);

delay(delay);
}

ongeldig b4() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, UP);
settarget (C_FEM, UP);
settarget (E_FEM, UP);

settarget (D_FEM, DOWN);
settarget (F_FEM, DOWN);
settarget (B_FEM, DOWN);

delay(delay);
}

// ~~~~~~~~~left~~~~~~~~~~~ //

ongeldig l1() {}
[COXA] gewijzigd
settarget (A_COX, CCW);
settarget (C_COX, CCW);
settarget (E_COX, CCW);

settarget (D_COX, CW);
settarget (F_COX, CW);
settarget (B_COX, CW);

delay(delay);
}

ongeldig l2() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, DOWN);
settarget (C_FEM, DOWN);
settarget (E_FEM, DOWN);

settarget (D_FEM, UP);
settarget (F_FEM, UP);
settarget (B_FEM, UP);

delay(delay);
}

ongeldig l3() {}
[COXA] gewijzigd
settarget (A_COX, CW);
settarget (C_COX, CW);
settarget (E_COX, CW);

settarget (D_COX, CCW);
settarget (F_COX, CCW);
settarget (B_COX, CCW);

delay(delay);
}

ongeldig l4() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, UP);
settarget (C_FEM, UP);
settarget (E_FEM, UP);

settarget (D_FEM, DOWN);
settarget (F_FEM, DOWN);
settarget (B_FEM, DOWN);

delay(delay);
}

// ~~~~~~~~~right~~~~~~~~~~~ //

ongeldig r1() {}
[COXA] gewijzigd
settarget (A_COX, CW);
settarget (C_COX, CW);
settarget (E_COX, CW);

settarget (D_COX, CCW);
settarget (F_COX, CCW);
settarget (B_COX, CCW);

delay(delay);
}

ongeldig r2() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, DOWN);
settarget (C_FEM, DOWN);
settarget (E_FEM, DOWN);

settarget (D_FEM, UP);
settarget (F_FEM, UP);
settarget (B_FEM, UP);

delay(delay);
}

ongeldig r3() {}
[COXA] gewijzigd
settarget (A_COX, CCW);
settarget (C_COX, CCW);
settarget (E_COX, CCW);

settarget (D_COX, CW);
settarget (F_COX, CW);
settarget (B_COX, CW);

delay(delay);
}

ongeldig r4() {}
[DIJBEEN] gewijzigd
settarget (A_FEM, UP);
settarget (C_FEM, UP);
settarget (E_FEM, UP);

settarget (D_FEM, DOWN);
settarget (F_FEM, DOWN);
settarget (B_FEM, DOWN);

delay(delay);
}

// ~~~~~~~~~~~~~~~~~~~~ //

ongeldig walkbwd() {}
Tibia();
B1();
B2();
B3();
B4();
}
ongeldig walkfwd() {}
Tibia();
F1();
F2();
F3();
F4();
}

ongeldig turnleft() {}
Tibia();
L1();
L2();
L3();
L4();
}

ongeldig turnright() {}
Tibia();
R1();
R2();
R3();
R4();
}

// ~~~~~~~~~~~~~~~~~~~~ //

Een doel instellen opdracht verzenden de Maestro.
Doel is in eenheden van kwartaal microseconden, zodat het normale bereik 4000 tot 8000 is.
VOID settarget (unsigned char servo, unsigned int doel)
{
doelstelling = kaart (doel, 0, 180, 2400, 9500);
mySerial.write(0xAA); Start byte
mySerial.write(0x0C); apparaat-id
mySerial.write(0x04); commando nummer
mySerial.write(servo); Servo-nummer
mySerial.write (doel & 0x7F);
mySerial.write ((target >> 7) & 0x7F);
}

Gerelateerde Artikelen

Super eenvoudige en goedkope Arduino Bumper robot met behulp van 28BYJ-48 stepper

Super eenvoudige en goedkope Arduino Bumper robot met behulp van 28BYJ-48 stepper

In deze video zal ik u tonen hoe te bouwen uw eerste arduino robot, dan wel in de volgorde natuurlijk, maar als u nog niet gemaakt een robot voor dan deze robot is een geweldige plek om te beginnen, het is echt eenvoudig te begrijpen codewise (slecht
Arduino Nano met DHT11, RTC DS1307 en LCD 16 x 2

Arduino Nano met DHT11, RTC DS1307 en LCD 16 x 2

Hallo. Dit is mijn eerste Instructable, dus ik hoop dat het zal worden OK.Dit is mijn Arduino Nano project met LCD-scherm met I2C board, RTC DS1307 en DHT11 sensor.Voor dit project gebruikte ik Arduino Nano, RTC DS1307 klok bord, DHT11 sensor board,
Arduino Nano: I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: I2C 2 X 16 LCD-scherm met Visuino

Karakter LCD-schermen zijn een zeer veel gebruikte voor Arduino projecten, om kleine hoeveelheden tekstuele informatie te geven. De meest voorkomende zijn de fundamentele rechtstreeks aangesloten beeldschermen en degene met I2C adapter. De I2C -versi
Arduino Nano met DHT sensor & OLED

Arduino Nano met DHT sensor & OLED

In deze tutorial zal ik beschrijven hoe een DHT sensor gebruik op een Arduino Nano en OLED-display.Stap 1: IntroHalloMijn naam is Nick Hendriks en ik woon in Nederland. Ik heb geen ervaring met Arduino of de onderdelen die worden gebruikt, maar met h
Arduino Nano: Eenvoudige SSD1306 I2C analoge vertoning OLED met Visuino

Arduino Nano: Eenvoudige SSD1306 I2C analoge vertoning OLED met Visuino

OLED Displays zijn enkele van de coolste en meest geavanceerde modules die u in uw project van Arduino gebruiken kunt. Ze komen in een kleine vormfactor, en hebben zeer laag verbruik terwijl het leveren van heldere, levendige kleuren. Sommige van de
Ruimtebesparend Arduino Nano met USB-opladen circuit (Li Ion of LIPO) dat zelf uitschakelen van de kunt (zachte klink kracht)

Ruimtebesparend Arduino Nano met USB-opladen circuit (Li Ion of LIPO) dat zelf uitschakelen van de kunt (zachte klink kracht)

Toen ik begon mijn eerste Arduino project, realiseerde ik me dat ik een klein-formaat Arduino gebruiken moest zodat kon ik mijn apparaat plaatst. Het nieuwe aan de Arduino, wist niet ik dat alle uitdagingen die ik met batterij management hebben zou!N
RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

Soms moeten we aansluiten Arduino boards Arduino boards ligt ver weg van elkaar. De RS485 is een zeer handige manier om te verbinden de planken met slechts 2 draden, en kan werken tot een afstand van 1200 m (4000 ft). Het maakt het ook mogelijk meerd
Arduino Nano: Debouncing en Toggle knop met Visuino

Arduino Nano: Debouncing en Toggle knop met Visuino

Knoppen die zijn aangesloten op de Arduino kan gemakkelijk worden gebruikt als aan/uit schakelaar. De knoppen meestal helaas stuiterende lawaai maken wanneer ze verbinding maken/verbreken, waardoor de functionaliteit van de knevel onbetrouwbaar. Het
Hexapod Arduino Pololu Maestro Servo controle

Hexapod Arduino Pololu Maestro Servo controle

Nach dem mein erster Versuch mit einem Hexapod, daran gescheitert war das sterven servos zu lebhafter waren jetzt ein neuer Versuch mit mit 10 Kg Servos aus HK.Ausserdem habe ich mich für ein neuen Sevocontroller von Pololu entschieden. Stap 1: mater
Arduino Nano met WIZ550io = gemakkelijk Internet

Arduino Nano met WIZ550io = gemakkelijk Internet

Ik hou van de Arduino Nano - het is een mooi compact maar volledig functionele versie van de Arduino Uno. Echter, toen ik ging naar het verbinden met internet alle die netjes en opgeruimd kleinheid verdwenen onder de grote volledige formaat ethernet-
DIY hete drank Monitor - met behulp van de DS18B20 en Arduino Nano

DIY hete drank Monitor - met behulp van de DS18B20 en Arduino Nano

Mijn vriendin heb altijd een probleem dat ze haar tong brandt wanneer ze proeven van warme dranken. Toen begon ik te denken, misschien dat ik een apparaat dat voorkomt dat haar het branden van haar tong, zodat ze haar thee drinken kunt en wel altijd
Knipperende LED met Arduino Nano

Knipperende LED met Arduino Nano

Hallo vrienden,Zien van een knipperende LED is zo leuk, maar wanneer u er een maken als dat door uzelf dan de pret is zelfs meer. ^_^Dus, laat de pret beginnen,In dit instructable, ik heb aangetoond over het knipperen van een LED met Arduino Nano.Opm
Arduino Nano: Foto-onderbreker (Slotted Optocoupler) verbinden met Visuino

Arduino Nano: Foto-onderbreker (Slotted Optocoupler) verbinden met Visuino

Slotted optokoppelaars (foto Interrupters) zijn zeer nuttig sensoren, vaak opgenomen in Arduino projecten om de positie van bewegende objecten detecteren, meten van de snelheid van de rotatie of lineaire beweging, frequentie van gebeurtenissen, en ve
Arduino Nano en Visuino: meten van gewicht met HX711 Load cel versterker en ADC

Arduino Nano en Visuino: meten van gewicht met HX711 Load cel versterker en ADC

HX711 Cel versterker en ADC modules laden maken het zeer eenvoudig om te bouwen van uw eigen schaal met Arduino. Met de hulp van Visuino is de taak zo eenvoudig dat u kunt het in slechts enkele minuten voltooien.In dit instructable, ik zal u tonen de