Étape 2: installation
90 * 8 = 720 + 450 = 1170us / 5 = 234 pulsout port, 234 est de 90 degrés sur ce servo.
J’ai trouvé un correctif pour flottante point multiplication et division en math entier dans le Picaxe programming manual sous mathématiques. Ma formule 90 * 5.556 devient 90 / 10 * 56 en math entier. Il fonctionne mais il n’est pas que précis. Les 56 si un correctif et en ajoutant 1 comme 90 / 10 + 1 * 56 est un peu plus précis. Je n’ai pas tout servos avec un UPD de 5.556 ou qui ont un bas de gamme de 1000. Rien de mon code cela utilise plus. C’était un plaisir Rechercher et il fonctionne.
90 / 10 * 56 = 504 + 450 = 954 est environ 90 sur un servo
90 / 10 + 1 * 56 = 560 + 450 = 1010 est plus proche. C’est pourquoi je ne l’utilise pas plus.
90 * 8 = 720 + 450 = 1170 est de 90 sur le tour Pro Micro SG90
Processeurs de point flottant comme l’Arduino cela facilitent. L’Arduino n’est pas une commande de pulsout, mais il a delayMicroseconds(). L’Arduino possède également une bibliothèque de servo qui peut faire à peu près n’importe quoi avec un servo.
digitalWrite (ficche, HIGH) ;
delayMicroseconds (pulsAng (unsigned int)) ; ' pulsAng = 1170
digitalWrite (ficche, basse)
Le fichier zip contient des programmes pour les timbres de base 1 & 2, Picaxe et Arduino. Photos de portrait pour imprimer facilement des nombres binaires et de détails.
Ma fonction Math Servo Arduino
void pulsePin (int ficche, pAng int) {}
Si (bitRead (sFlags, svr1On) == 0) {}
bitWrite (sFlags, svr1On, 1) ;
}
Si (lastAng! = pAng) {}
cntSetSrv = svrSetR ;
RfhSetSrv = 1 ;
lastAng = pAng ;
Si (pAng == 0) {}
pAng = svr1Lrng ;
}
else {}
pAng pAng de = * curUPD ; //Angle * UPD (us par degré)
pAng = pAng + svr1Lrng ; //Add bas de gamme pour faire
} //servo angle
pulsAng = (unsigned int) pAng ;
}
digitalWrite (ficche, HIGH); //Set Angle de Servo
delayMicroseconds(pulsAng) ;
digitalWrite (ficche, faible) ;
retour ;
}
Fonction de base timbre 2 Servo Math
angToInt :
IF sLastAng <> sAngle puis
"Hit pause & hit counter
sLastAng = sAngle
svoHitT = srvo1Hits
svoRfrsh = srvo1Hpaus
wTmp1 = sAngle
« Changer l’Angle d’un PulsOut Int
IF wTmp1 = 0 THEN
wTmp1 = sRangeLow / srvo1Pu
D’AUTRE
wTmp1 = wTmp1 * curUPD
wTmp1 = wTmp1 + sRangeLow / srvo1Pu
ENDIF
ENDIF
PULSOUT srvo1, wTmp1
RETOUR