Resumé
Pour le construire, il vous faudra un peu d'expérience en programmation. Je vais publier mon code, mais il y a pratiquement aucune chance qu'il fonctionne parfaitement chez d'autres personnes, car il nécessite un calibrage en fonction du nombre d'engrenages qu'il possède et des potentiomètres qu'il utilise.
Voici les potentiomètres que j'ai utilisés : Lien incroyablement long :
http://www.ebay.com/itm/224194967103?hash=item34330fb63f:g:JosAAOSwumNfh-6a&amdata=enc%3AAQAHAAAA4BnBp3BUqOSDtgO%2BOkIjRKj0v9FFKMXXQ9uqokanQnO7wLzAVmPI4UIP5jxfqxlrH6xW4AZqCVRTBvgK8pOYLXPH1yx
J'ai utilisé le Pro Trinket 5V pour le codage.
Mon code va transformer les engrenages 1 à 6 en binaire et appuyer sur les boutons 1 à 3 de votre clavier en tant que nombres binaires.
Si vous utilisez un top différent de celui à 6 vitesses, le code aura besoin d'être modifié. Demandez simplement dans les commentaires si vous ne savez pas comment faire, et je tâcherai de vous répondre rapidement.
Voici le code que j'exécute dessus :
(symbole de hashtag ici) inclure "ProTrinketKeyboard.h"
void setup() {
pinMode(A2, INPUT);
pinMode(A4, INPUT);
TrinketKeyboard.begin();
)
int T1=640 ;
int T2=480 ;
int T3=300 ;
int track ;
int updown ;
Vitesse d'engrenage :
La précision de l'int est de 50 ;
int down=350 ;
int up=650 ;
int updownR ;
int trackR ;
void loop() {
getReading();
obtenirLaPiste();
getUpDown();
getGear();
TurnBin();
)
void getReading() {
updownR=analogRead(A4);
trackR=analogRead(A2);
)
void getTrack() {
si(trackR <= T1+précision et trackR >= T1-précision) {
piste=1 ;
}else if(trackR <= T2+accuracy && trackR >= T2-accuracy){
piste=2 ;
}else if(trackR <= T3+accuracy && trackR >= T3-accuracy){
piste=3 ;
}else{
piste=0 ;
)
)
void getUpDown() {
si(updownR <= up+accuracy et updownR >= up-accuracy) {
updown=1 ;
}else if(updownR <= down+accuracy && updownR >= down-accuracy){
updown=2 ;
}else{
updown=0 ;
)
)
void getGear() {
si(track == 1 et updown == 1) {
Gear=1 ;
}else if(track==1 && updown==2){
Gear=2 ;
}else if(track==2 && updown==1){
Gear=3 ;
}else if(track==2 et updown==2){
Gear=4 ;
}else if(track==3 && updown==1){
Gear=5 ;
}else if(track==3 && updown==2){
Gear=6 ;
}else{
gear=0;
)
)
// Permet l'impression en série avec le trinket. Les définitions 1 à 3 correspondent à ce qu'il imprime (0 pour n'imprimer rien), 4 est le délai en ms*5, et le 5ème est l'espacement entre chaque impression.
//Vous devez ouvrir un programme d'écriture rapidement après avoir exécuté ceci.
void numprint(int p1034,int p2034,int p3034,int d034, int enter034){
si(p1034 != 0) {
TrinketKeyboard.print(p1034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
si(p2034 != 0) {
TrinketKeyboard.print(p2034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
si(p3034 != 0) {
TrinketKeyboard.print(p3034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
pour(int wait034=0; wait034<d034; wait034++){
TrinketKeyboard.poll();
délai(5);
)
pour (int wait034=0 ; wait034<enter034 ; wait034++){
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
TrinketKeyboard.poll();
)
void TurnBin() {
si(gear == 0) {
TrinketKeyboard.pressKey(0, 0);
)
si(gear == 1) {
TrinketKeyboard.pressKey(0, KEYCODE_1);
)
si(gear == 2) {
TrinketKeyboard.pressKey(0, KEYCODE_2);
)
si(gear == 3) {
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_2);
)
si(gear==4){
TrinketKeyboard.pressKey(0, KEYCODE_3);
)
si(gear == 5) {
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_3);
)
si(gear == 6) {
TrinketKeyboard.pressKey(0, KEYCODE_2,KEYCODE_3);
)
)
Источник модели
