Özet.
Bunu oluşturmak için biraz kodlama deneyimi gerekecek. Kodumu yayınlayacağım, ancak diğerlerinde mükemmel çalışması neredeyse imkansız, çünkü kaç dişli olduğuna ve hangi potansiyometreleri kullandığına bağlı olarak kalibrasyon gerektiriyor.
Bunlar kullandığım potansiyometrelerdir: Çok uzun bir bağlantı:
https://www.ebay.com/itm/224194967103?hash=item34330fb63f:g:JosAAOSwumNfh-6a&amdata=enc%3AAQAHAAAA4BnBp3BUqOSDtgO%2BOkIjRKj0v9FFKMXXQ9uqokanQnO7wLzAVmPI4UIP5jxfqxlrH6xW4AZqCVRTBvgK8pOYLXPH1yx
Kodlamak için Pro Trinket 5V'yi kullandım.
Kodum, vitesleri 1-6'ya ikili dönüştürecek ve klavyenizdeki 1-3 tuşlarına ikili sayılar olarak basmanıza olanak tanıracak.
6 vitesli olandan farklı bir üst kullanıyorsanız, kodun biraz değiştirilmesi gerekecek. Nasıl yapacağınızı bilmiyorsanız yorumlarda sorun, ben de size en kısa sürede geri dönmeye çalışacağım.
İşte bunun üzerinde çalıştığım kod:
(Burada hashtag sembolü) "ProTrinketKeyboard.h"yi dahil edin.
void setup() {
pinMode(A2, INPUT);
pinMode(A4, INPUT);
TrinketKeyboard.begin();
}
int T1=640;
int T2=480;
int T3=300;
İnt track;
Yukarı
İntikam dişlisi;
İnt doğruluk = 50;
Int down=350;
İnt up=650;
İnt updownR;
Int trackR;
void loop() {
getReading();
getTrack();
getUpDown();
getGear();
TurnBin();
}
void getReading() {
updownR=analogRead(A4);
trackR=analogRead(A2);
}
void getTrack(){
eğer (trackR, T1+doğruluk değeriyle eşit veya daha büyükse ve trackR, T1-doğruluk değeriyle eşit veya daha küçükse) {
Track=1;
}else if(trackR <= T2+accuracy ve trackR >= T2-accuracy){
Track=2;
}else if(trackR <= T3+accuracy ve trackR >= T3-accuracy){
Track=3;
}else {
Track=0;
}
}
void getUpDown() {
eğer (updownR, up+accuracy'den daha küçükse ve updownR, up-accuracy'den daha büyükse) {
Yukarı-aşağı=1;
}else if(updownR <= down+accuracy ve updownR >= down-accuracy){
Yukarı-aşağı=2;
}else {
Yukarı-aşağı=0;
}
}
void getGear(){
eğer (track==1 ve updown==1 ise)
Dişli=1;
}else if(track==1 ve updown==2){
Dişli=2;
}else if(track==2 ve updown==1){
Dişli=3;
}else if(track==2 ve updown==2){
Dişli=4;
}else if(track==3 ve updown==1){
vites=5;
}else if(track==3 ve updown==2){
Dişli=6;
}else {
Dişli:0;
}
}
// Trinket ile seri yazdırma sağlar, 1-3 tanımları yazdırdığı şeydir (0 hiçbir şey yazdırmak için), 4 gecikme süresidir
Bu çalıştıktan sonra hızlıca bir yazma programı açmanız gerekir.
void numprint(int p1034, int p2034, int p3034, int d034, int enter034){
eğer (p1034 == 0 değilse) {
TrinketKeyboard.print(p1034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
}
eğer (p2034 0 değilse) {
TrinketKeyboard.print(p2034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
}
eğer (p3034 0 değilse) {
TrinketKeyboard.print(p3034);
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
}
for(int wait034=0; wait034<d034; wait034++){
TrinketKeyboard.poll();
Gecikme(5);
}
for(int wait034=0; wait034<enter034; wait034++){
TrinketKeyboard.pressKey(0, KEYCODE_ENTER);
TrinketKeyboard.pressKey(0,0);
}
TrinketKeyboard.poll();
}
void TurnBin() {
eğer (gear==0) {
TrinketKeyboard.pressKey(0, 0);
}
eğer (gear == 1) {
TrinketKeyboard.pressKey(0, KEYCODE_1);
}
eğer (gear==2){
TrinketKeyboard.pressKey(0, KEYCODE_2);
}
eğer (vites == 3) ise;
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_2);
}
eğer (vites == 4) ise;
TrinketKeyboard.pressKey(0, KEYCODE_3);
}
eğer (vites == 5) ise;
TrinketKeyboard.pressKey(0, KEYCODE_1,KEYCODE_3);
}
eğer (gear == 6) ise;
TrinketKeyboard.pressKey(0, KEYCODE_2,KEYCODE_3);
}
}
Source du modèle
