步驟1:重力感應電位器
我在舊的直升機遙控器中找到了商用等級,但如果您不這樣做,要購買一個,下一步將告訴您如何構建自己的傳感器。
為了幫助那些打算構建自己的傳感器的人,我用一個商用傳感器和一個自制傳感器建造了我的模擬器傳感器(您需要共2個)
第2步:制作自己的重力感應電位器
此步驟向您展示如何用家用零件創建完美的重力感應電位器
Ge ta電位計
拿一個重的小球
將球的一側向下銼
將旋鈕粘到電位計上
將球的扁平面粘到旋鈕上-確保將其直接放在旋鈕上旋鈕的中心
將螺母粘在球上以增加重量
第3步:滾輪
我找到了一個舊的飛盤,但是它沒有開關燈的功能,還配備了討厭的紐扣電池。
此步驟通過重新連接飛盤解決了這個問題。
將導線連接到飛盤電路的正極和負極。
連接開關并將其連接在電池和電路之間。
》將所有東西粘上。
第4步:套管
帶出樂高積木!帶有3x6孔和6x6孔的12x8盒
這些用于向上,向下,向左和向右移動傳感器
盒應為5高
然后您可以填充空間以使傳感器處于更加緊湊和方向受限的
請確保包括用于電線露出的孔
第5步:連接所有物體
將更長的電線連接到所有物體上,以便您可以遠距離使用車輪
將傳感器粘上將其裝板并包裝到Lego機殼中的孔中,然后將其粘貼到“車輪”的底面和背面
步驟6:可選的防護罩(方法一)
您可以使用以下兩種方法之一制作自己的“屏蔽層”:
1:獲取一些PCB和一些引腳并將它們焊接到板上,然后焊接在導線上
步驟7 :可選防護罩(方法二)
2:獲取一些針腳并粘上或使用硅將它們固定到板上。確保銷釘與下一步的圖對齊。
讓硅干燥一天。
我使用了切割式安全銷,最后它們很好用了
我用了熱熔膠,然后是超級膠,然后用硅來匹配焊接強度
步驟8:該圖將引領您邁向卓越之路
不要弄亂這張圖。在繼續進行操作并插入arduino之前,請確保一切正確。
電位計1的右側轉到GND
中間電位到模擬5
左側轉到引腳4
電位器2右側轉到GND
中間轉到模擬0
左側轉到引腳8
步驟9:編程(Arduino)
Arduino代碼:
void setup(){
Serial.begin(9600);
pinMode(4,OUTPUT);
pinMode(8,OUTPUT);
}
void loop(){
digitalWrite(4,HIGH);
digitalWrite(4,LOW);
digitalWrite(8,HIGH);
int r = analogRead(A0);
digitalWrite(8,LOW);
int最小值= 400;
int最大值= 800;
Serial.println(d);
》 Serial.println(r);
//向前傾斜
if(d》 maximum){
Serial.println(‘0’);
}
else {
Serial.println(‘1’);
}
delay(12.5);
//向后傾斜
if(d 串行.println(‘2’);
}
else {
Serial.println(‘3’);
}
delay(12.5);
//left傾斜結果if(r 《最小){
Serial.println(‘4’);
}
else {
Serial.println(‘5’);
}
延遲(12.5 );
//右傾斜
if(r》 maximum){
Serial.println(‘6’);
}
else {
Serial.println( ‘7’);
}
delay(12.5);
}
第10步:編程(Python )
Python代碼:
導入串行
導入編解碼器
導入ctypes
導入時間
從時間導入sleep
SendInput = ctypes.windll.user32.SendInput
= ctypes.POINTER(ctypes.c_ulong)
class KeyBdInput(ctypes.Structure):
_fields_ = [(“ wVk” ,ctypes.c_ushort),
(“ wScan”,ctypes.c_ushort),
(“ dwFlags,ctypes.c_ulong),
(” time“,ctypes.c_ulong),
(” dwExtraInfo“,PUL)]
類HardwareInput(ctypes.Structure):
_fields_ = [(” uMsg“,ctypes.c_ulong),
(” wParamL“,ctypes.c_short),
( “ wParamH”,ctypes.c_ushort)]
類MouseInput(ctypes.Structure):
_fields_ = [(“ dx”,ctypes.c_long),
(“ dy”,ctypes.c_long),
(“ mouseDa ta“,ctypes.c_ulong),
(” dwFlags“,ctypes.c_ulong),
(” time“,ctypes.c_ulong),
(” dwExtraInfo“,PUL)]
class Input_I (ctypes.Union):
_fields_ = [(“ ki”,KeyBdInput),
(“ mi”,MouseInput),
(“ hi”,HardwareInput)]
類Input(ctypes。結構):
_fields_ = [(“ type”,ctypes.c_ulong),
(“ ii”,Input_I)]
def PressKey(hexKeyCode):
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput(hexKeyCode,0x48,0,0,ctypes.pointer(extra))
x =輸入(ctypes.c_ulong(1),ii_)
ctypes.windll.user32.SendInput(1,ctypes.pointer(x),ctypes.sizeof(x))
def ReleaseKey(hexKeyCode):
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput(hexKeyCode,0x48,0x0002,0,ctypes.pointer(extra))
x =輸入(ctypes.c_ulong(1),ii_)
ctypes.windll。 user32.SendInput(1,ctypes.pointer(x),ctypes.sizeof(x))
def PressW():
PressKey(0x57)#W
def ReleaseW():
ReleaseKey( 0x57)#W
def PressA():
PressKey(0x41)#A
def Relea seA():
ReleaseKey(0x41)#A
def PressS():
PressKey(0x53)#S
def ReleaseS():
ReleaseKey(0x53)#S
def PressD():
PressKey(0x44)#D
def ReleaseD():
ReleaseKey(0x44)#D
port =“ COM6”
ser = serial.Serial(port, 9600,timeout = 0)
而True:
#data = ser.read(9999)
line = ser.readline()
如果line:
print(‘Got:’,行)
如果line == b‘0 r n’:
print(‘W_UP’)
按W()
elif line == b‘1 r n’:
print(‘W_DOWN’)
ReleaseW()
如果line == b‘2 r n’:
print(‘S_UP’)
按S()
》 elif行== b‘3 r n’:
print(‘S_DOWN’)
如果行== b‘4 r n’:
ReleaseS()
》 print(‘A_UP’)
按A()
elif line == b‘5 r n’:
print(‘A_DOWN’)
ReleaseA()
如果line = = b‘6 r n’:
打印(‘D_UP’)
PressD()
省略號行== b‘7 r n’:
打印(‘D_DOWN’)
ReleaseD()
睡眠(0.0125)
print(‘0’)
ser.close()
步驟11:游戲
現在您可以從此處下載我的游戲,也可以修改t他的python代碼可用于其他任何游戲!
如果您對修改其他游戲的代碼有任何疑問,請給我發消息或在評論中提問!
步驟12:一個步驟進一步
如果要超越,您可以制作或使用電子鋼琴的踏板充當油門踏板/制動踏板。
-
駕駛模擬器
+關注
關注
0文章
5瀏覽量
6039
發布評論請先 登錄
相關推薦
評論