Una volta eseguita la fase di montaggio del busto, lasciate collegati i servomotori ma senza assemblare le gambe e le ginocchia in modo da poter eseguire correttamente in seguito il settaggio dello zero dei servomotori.
Inizia tutto con il download della libreria dal seguente qui e ricordatevi di rinominare la cartella in OpenCat
Quindi caricate il file .ino e inviatelo a Bittle,vedi figura sotto.

Inizia con un errore (ma non fateci tanto caso) in fase di compilazione di OpenCat.ino (che si trova nella cartella Utente\Documents\Arduino\OpenCat)
In file included from C:\Users\Sergio\AppData\Local\Temp\arduino_build_604654\sketch\WriteInstinct/OpenCat.h:85:0,
from C:\Users\Sergio\Documents\Arduino\libraries\OpenCat\OpenCat.ino:31:
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h: In member function 'void Motion::loadDataFromI2cEeprom(unsigned int&)':
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h:68:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
uint8_t requestFrom(int, int);
^~~~~~~~~~~
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h:65:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
uint8_t requestFrom(uint8_t, uint8_t);
^~~~~~~~~~~
La compilazione procede e lo sketch viene inviato al Bittle quandoha finito di inviare aprite il terminal di Arduino ,riceverete il seguente messaggio (rappresentato anche in figura sopra) :
18:25:44.207 -> * Start *
18:25:44.207 -> Initialize I2C
18:25:44.207 -> Connect MPU6050
18:25:44.720 -> Test connection
18:25:44.720 -> MPU successful
18:25:44.720 -> Initialize DMP
18:25:45.573 -> 1693 41 -31 8
18:25:45.573 -> Enable DMP
18:25:45.573 -> Enable interrupt
18:25:45.573 -> DMP ready!
18:25:46.391 ->
18:25:46.391 -> * Assigning 1 skill addresses...
18:25:46.391 -> Finished!
che conferma che il programma è stato trasferito e che tutte le componenti sono attive
Andare quindi nella sottodirectory di (Utente\Documents\Arduino\librerie\OpenCat\WriteInstinct ), e modificare le righe di WriteInstinct.ino come descritto dal manuale decommentando la vostra scheda di bordo correttamente
#include "InstinctBittle.h" //activate the correct header file according to your model
//#include "InstinctNybble.h"
//#define NyBoard_V0_1
//#define NyBoard_V0_2
#define NyBoard_V1_0
Quindi trasferiamo OpenCat.h (una delle quattro schede schede), sarà il codice principale da inviare al Bittle
Il codice comprende 3 file :
WriteInstinct è responsabile della scrittura dei dati raccolti durante la calibrazione nella EEPROM.
Instinct definisce tutti i tipi di posture. Qui viene definita la postura di riferimento, postura seduta, in piedi ecc.
OpenCat è il programma generale che esegue i movimenti delle posture definite in Instinct.h .
Ancora una volta durante la compilazione compariranno gli stessi errori postati sopra che per comodità ri-posto nuovamente
In file included from C:\Users\Sergio\AppData\Local\Temp\arduino_build_132630\sketch\OpenCat.h:85:0,
from C:\Users\Sergio\Documents\Arduino\libraries\OpenCat\WriteInstinct\WriteInstinct.ino:31:
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h: In member function 'void Motion::loadDataFromI2cEeprom(unsigned int&)':
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h:68:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
uint8_t requestFrom(int, int);
^~~~~~~~~~~
C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire\src/Wire.h:65:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
uint8_t requestFrom(uint8_t, uint8_t);
^~~~~~~~~~~
alla fine della compilazione si avranno i seguenti messaggi
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\Sergio\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Using Port : COM13
Using Programmer : arduino
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\Sergio\AppData\Local\Temp\arduino_build_851178/WriteInstinct.ino.hex"
avrdude: writing flash (25572 bytes):
Writing | ################################################## | 100% 3.97s
avrdude: 25572 bytes of flash written
avrdude: verifying flash memory against C:\Users\Sergio\AppData\Local\Temp\arduino_build_851178/WriteInstinct.ino.hex:
avrdude: load data flash data from input file C:\Users\Sergio\AppData\Local\Temp\arduino_build_851178/WriteInstinct.ino.hex:
avrdude: input file C:\Users\Sergio\AppData\Local\Temp\arduino_build_851178/WriteInstinct.ino.hex contains 25572 bytes
avrdude: reading on-chip flash data:
Reading | ##
avrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0x00
#avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
reathe selected serial port rea does not exist or your board is not connected
d operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x2a
avrdude done. Thank you.
NOTA!!!!!
Ricordarsi nel monitor seriale, di impostare Nessuna fine di riga e baudrate su 115200 (o 57600 per NyBoard V0_ *). Immettere tre Y maiuscole dopo il prompt e attendere che la MPU si calibri.

Confermate quindi "y" alle domande che vi saranno rivolte

Calibrate infine la MPU? (Y/n) rispondendo ancora Y
Inizierà quindi la calibrazione......

Se tutto andrà bene dopo al massimo un paio di minuti otterrete un beep lungo con la seguente schermata :

ATTENZIONE!!! Non toccare nulla durante questo periodo di attesa !!!!
È NECESSARIO collegare tutti i servi e le batterie per una corretta calibrazione. Quindi, nel monitor seriale, digitare "c" per accedere alla modalità di calibrazione.
Ci sarà rumore proveniente dal sistema di ingranaggi dei servi e vedrete la tabella di calibrazione:
18:58:22.725 -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18:58:22.760 ->