Zusammenfassung
Der Aufbau erfordert ein wenig Programmiererfahrung. Ich werde meinen Code veröffentlichen, aber es ist praktisch unmöglich, dass er bei anderen perfekt funktioniert, da er eine Kalibrierung benötigt, die davon abhängt, wie viele Gänge er hat und welche Potentiometer er verwendet.
Das sind die Potentiometer, die ich verwendet habe: Ein unglaublich langer Link:
https://www.ebay.com/itm/224194967103?hash=item34330fb63f:g:JosAAOSwumNfh-6a&amdata=enc%3AAQAHAAAA4BnBp3BUqOSDtgO%2BOkIjRKj0v9FFKMXXQ9uqokanQnO7wLzAVmPI4UIP5jxfqxlrH6xW4AZqCVRTBvgK8pOYLXPH1yx
Ich habe das Pro Trinket 5V für die Programmierung verwendet.
Mein Code wird die Gänge 1-6 in Binär umwandeln und die Tasten 1-3 auf deiner Tastatur als binäre Zahlen drücken.
Wenn du ein anderes Top als das 6-Gang-Top verwendest, muss der Code etwas modifiziert werden. Frag einfach in den Kommentaren, wenn du nicht weißt, wie es geht, und ich werde versuchen, dir schnell zu antworten.
Hier ist der Code, den ich darauf ausführe:
(Hashtag-Symbol hier) Schließe "ProTrinketKeyboard.h" ein.
void setup() {
pinMode(A2, INPUT);
pinMode(A4, INPUT);
TrinketKeyboard.begin();
)
int T1=640;
int T2=480;
int T3=300;
int track;
int updown;
Int Gear;
Int Genauigkeit=50;
int down=350;
int up=650;
int updownR;
int trackR;
void loop() {
getReading();
getTrack();
getUpDown();
getGear();
TurnBin();
)
void getReading(){
updownR=analogRead(A4);
trackR=analogRead(A2);
)
void getTrack(){
wenn (trackR <= T1+Genauigkeit und trackR >= T1-Genauigkeit) {
track=1;
}else if(trackR <= T2+accuracy && trackR >= T2-accuracy){
track=2;
}else if(trackR <= T3+accuracy && trackR >= T3-accuracy){
track=3;
}else{
track=0;
)
)
void getUpDown(){
wenn (updownR <= up+genauigkeit && updownR >= up-genauigkeit) {
updown=1;
}else if(updownR <= down+accuracy && updownR >= down-accuracy){
Aufwärts
}else{
updown=0;
)
)
void getGear(){
wenn (track == 1 und updown == 1) {
Gear=1;
}else if(track==1 && updown==2){
Gang=2;
}else if(track==2 && updown==1){
Gang=3;
}else if(track==2 && updown==2){
Gang=4;
}else if(track==3 && updown==1){
Gang=5;
}else if(track==3 && updown==2){
Gear=6;
}else{
Gear=0;
)
)
//Ermöglicht seriellen Druck mit dem Trinket. Die Definitionen 1-3 bestimmen, was gedruckt wird (0 bedeutet, nichts zu drucken), 4 ist die Verzögerung in ms*5, und die 5. Zahl gibt den Abstand zwischen den einzelnen Drucken an.
//Du musst schnell ein Schreibprogramm öffnen, nachdem du dies ausgeführt hast.
void numprint(int p1034,int p2034,int p3034,int d034, int enter034){
wenn (p1034 nicht gleich 0 ist) {
TrinketKeyboard.print(p1034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
wenn (p2034 nicht gleich 0 ist) {
TrinketKeyboard.print(p2034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
wenn (p3034 nicht gleich 0 ist) {
TrinketKeyboard.print(p3034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
für(int wait034=0; wait034<d034; wait034++){
TrinketKeyboard.poll();
delay(5);
)
für(int wait034=0; wait034<enter034; wait034++){
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
)
TrinketKeyboard.poll();
)
void TurnBin();
wenn (Gang==0){
TrinketKeyboard.pressKey(0, 0);
)
wenn (Gang == 1) {
TrinketKeyboard.pressKey(0, KEYCODE_1);
)
wenn (Gang == 2) {
TrinketKeyboard.pressKey(0, KEYCODE_2);
)
wenn (Gang == 3) {
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_2);
)
wenn (Gang == 4) {
TrinketKeyboard.pressKey(0, KEYCODE_3);
)
wenn (Gang == 5) {
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_3);
)
wenn (Gang == 6) {
TrinketKeyboard.pressKey(0, KEYCODE_2,KEYCODE_3);
)
)
Modellquelle
