Codice motore brushless 4P

Buongiorno a tutti. Ho da poco acquistato un motore brushless da macchina rc. questo per essere precisi: http://www.ebay.it/itm/3650-4370KV-4P-Sensorless-Brushless-Motore-45A-Brushless-ESC-per-1-10-RC-Auto-/141708201425?hash=item20fe778dd1:g:uwYAAOSwrklVepAO.
Vorrei farlo funzionare a velocità costante con arduino e mi chiedevo se qualcuno avesse un codice funzionante. xk io ne ho uno ma non sono sicuro che sia adatto.
Grazie a tutti in anticipo

Il codice che per adesso lo fa più o meno funzionare è questo. dico più o meno xk se lo faccio lavorare con un po di sforzo il motore si ferma e non riparte più. per farlo ripartire devo schiacciare il tasto di reset di Arduino

int STATE=1;
int Arming_Time=0;
int pin=9;
int Pulse=1000;
void setup(){
  pinMode(pin, OUTPUT);
  for(Arming_Time=0;Arming_Time<500;Arming_Time+=1)
  {
    digitalWrite(pin,HIGH);
  delayMicroseconds(1100);
  digitalWrite(pin,LOW);
  delay(20-(Pulse/1000));
  
}
}

void loop(){
  digitalWrite(pin, HIGH); 
  delayMicroseconds(1500); 
  digitalWrite(pin, LOW); 
  delay(20-(1250/1000)); 
}

Perché non usi la libreria Servo?

Ci ho provato. Ma non ci sn riuscito. ho trovato solo codici che usavano anche il potenziometro ho provato a eliminare la parte con il potenziometro sostituendola con un valore fisso ma una volta fatto non funzionava più. E non so come risolvere il problema

questo funziona ma solo se inserisco valori 700<val<1000
al di sotto non si muove…come mai?
quando poi sono passato da 800 a 700 si è fermato e non è più ripartito…

#include <Servo.h>

int val;
Servo motor_1;
void setup()
{
  motor_1.attach(9);
  Serial.begin(9600);
  delay(10000);
}
void loop()
{
  val = 500;            
  val = map(val, 0, 1023, 0, 180);
  motor_1.write(val);                  
}

Forse non hai ben compreso come funziona un ESC.

Usando l'emulazione di un servo, a 90° (impulso di 1500μs) il motore è fermo, mentre con impulsi minori o maggiori di questo valore il motore gira in una direzione o nell'altra.

Per evitare l'instabilità della posizione "fermo", in realtà c'è una isteresi per cui il motore è fermo anche con impulsi leggermente diversi da 1500μs: ad esempio tra 1400μs e 1600μs.

Mentre per impulsi maggiori o minori di questo range di valori la velocità aumenta proporzionalmente in una direzione o nell'altra fino al suo massimo (500μs oppure 1500μs).

Quasi tutti gli ESC sono programmabili o con schede opportune oppure agendo sul trottle in un particolare modo (ogni ESC ha una sua programmazione a riguardo).

cyberhs:
Usando l'emulazione di un servo, a 90° (impulso di 1500μs) il motore è fermo, mentre con impulsi minori o maggiori di questo valore il motore gira in una direzione o nell'altra.

Per gli ESC le cose sono diverse rispetto ad un servo, premesso che l'intervallo dell'impulso è sempre compreso tra 1050 e 1950 us, con 1500 us, o 1512us a seconda della marca, per il punto centrale, però gli ESC tipicamente variano la velocità del motore in un solo verso, quindi impulso a 1050 us motore fermo, impulso a 1950us motore al massimo, gli ESC per uso auto rc, come quello indicato nel link, possono avere il freno e la retromarcia, in tutti e due i casi riguarda solo una piccola porzione della corsa dello stick sulla radio, a partire da circa 1200us a scendere.
Tutti gli ESC hanno una funzione di sicurezza, il motore non viene armato se lo stick della radio non si trova a zero, questo per evitare spiacevoli incidenti, pertanto per far girare un motore collegato ad un ESC con Arduino la prima cosa da fare è portare l'impulso di comando a zero (1050 us) per diversi secondi, il motore emette dei bip per indicare che è armato e da questo momento è possibile farlo girare.
Quasi tutti gli ESC sono programmabili tramite determinati movimenti dello stick, molti di questi anche tramite apposite card, o software, di programmazione.

Wow non immaginavo assolutamente che ci fosse così tanta roba dietro......interessantissimo. Grazie delle spiegazioni...
Però non sono del tutto sicuro di aver capito come applicare il tutto al mio codice:
Per far girare il motore è sufficiente che metta al posto della variabile val un valore compreso tra 1050 e 1950? quindi se inserisco il valore di val = 1200 il motore andrà quasi al minimo?