Étape 4: Mon code. Yay encore plus.
Suffit de copier et coller dans l’arduino et il devraient fonctionner si vous avez déjà les bibliothèques encodeur et tv.
Ardudro programme, révision 2
#define ENCODER_OPTIMIZE_INTERRUPTS
n’ont pas essayé d’utiliser la ligne ci-dessus encore, peut le rendre plus rapide, mais ne peut pas.
#include < Encoder.h >
#include < TVout.h >
int xminus = 0 ;
int yminus = 0 ;
MyEnc encodeur (2, 7); //flip « myEnc » et « Ecy » si les axes X et Y sont en arrière
Ecy encodeur (3, 6) ;
flotteur anaval = 0 ;
float value01 = 0 ;
float val = 1000 ;
nombre en virgule flottante ;
float value10 ;
float value100 ;
int
int r = 0 ;
flotteur pos = 0 ;
int rd = 4 ;
long np = 0 ;
flotteur incr = 0,000390625 ; 1/2560, ce numéro peut changer pour votre configuration. Assurez-vous d’utiliser un nombre décimal, pas une fraction.
onx int = 12 ;
negx int = 0 ;
npy long = 0 ;
ty int = 0 ;
TVout TV ;
const int buttonx = 11 ; //flip ces deux (x et y ou les numéros) si les boutons sont désactivés.
const int buttony = 10 ;
unsigned char x, y ;
J’ai char = 48 ;
int ic = 6 ;
void setup() {}
pinMode(buttonx,INPUT) ;
pinMode(buttony,INPUT) ;
digitalWrite(buttonx,HIGH) ;
digitalWrite(buttony,HIGH) ;
x = 0 ;
y = 0 ;
TV.begin(_NTSC,110,30) ;
}
void loop() {}
if(digitalRead(ButtonX) == 0) {//this n’a pas besoin d’être lu immédiatement, donc nous allons utiliser la boucle
au lieu d’une interruption. De plus, les encodeurs utilisent les autres interruptions.
myEnc.write(0) ;
}
if(digitalRead(buttony) == 0) {//same ici.
Ecy.Write(0) ;
}
NP = myEnc.read() ;
NP = np *-1 ; décommenter si l’axe des X est remis
Delay(1) ;
Ty = 0 ;
TV.print_char(onx,ty,'X') ;
Si (val! = np) {}
Si (np < 0) {}
Val = -1 * np ;
NegX = 1 ;
} else {}
Val = np ;
NegX = 0 ;
}
}
DISP() ;
NP = Ecy.read() ;
NP = np *-1; //uncomment si l’axe des Y est retournée
Delay(1) ;
Ty = 10 ;
TV.print_char(onx,ty,'Y') ;
Si (val! = np) {}
Si (np < 0) {}
Val = -1 * np ;
NegX = 1 ;
} else {}
Val = np ;
NegX = 0 ;
}
}
DISP() ;
}
void stringer() {}
value01 = val ;
valeur = val / 10 ;
value10 = val / 100 ;
value100 = val / 1000 ;
valeur = int(value) ;
value10 = int(value10) ;
value100 = int(value100) ;
value01 = int(value01) ;
value01 = value01 - (valeur * 10) ;
valeur = valeur - (value10 * 10) ;
value10 = value10 - (value100 * 10) ;
}
void disp() {}
Val = val * incr ;
Val = int(val * 1000) ;
Stringer() ;
Si (negx == 1) {}
TV.print_char(onx-ic,ty,'-') ;
} else {}
TV.print_char (onx-ic, ty,' ') ;
}
TV.print_char(onx+ic,ty,char(value100)+48) ;
TV.print_char(onx+(ic*2),ty,char(value10)+48) ;
TV.print_char(onx+(ic*3),ty,char(value)+48) ;
TV.print_char(onx+(ic*4),ty,char(value01)+48) ;
}