步驟1:重力感應(yīng)電位器
我在舊的直升機(jī)遙控器中找到了商用等級(jí),但如果您不這樣做,要購買一個(gè),下一步將告訴您如何構(gòu)建自己的傳感器。
為了幫助那些打算構(gòu)建自己的傳感器的人,我用一個(gè)商用傳感器和一個(gè)自制傳感器建造了我的模擬器傳感器(您需要共2個(gè))
第2步:制作自己的重力感應(yīng)電位器
此步驟向您展示如何用家用零件創(chuàng)建完美的重力感應(yīng)電位器
Ge ta電位計(jì)
拿一個(gè)重的小球
將球的一側(cè)向下銼
將旋鈕粘到電位計(jì)上
將球的扁平面粘到旋鈕上-確保將其直接放在旋鈕上旋鈕的中心
將螺母粘在球上以增加重量
第3步:滾輪
我找到了一個(gè)舊的飛盤,但是它沒有開關(guān)燈的功能,還配備了討厭的紐扣電池。
此步驟通過重新連接飛盤解決了這個(gè)問題。
將導(dǎo)線連接到飛盤電路的正極和負(fù)極。
連接開關(guān)并將其連接在電池和電路之間。
》將所有東西粘上。
第4步:套管
帶出樂高積木!帶有3x6孔和6x6孔的12x8盒
這些用于向上,向下,向左和向右移動(dòng)傳感器
盒應(yīng)為5高
然后您可以填充空間以使傳感器處于更加緊湊和方向受限的
請確保包括用于電線露出的孔
第5步:連接所有物體
將更長的電線連接到所有物體上,以便您可以遠(yuǎn)距離使用車輪
將傳感器粘上將其裝板并包裝到Lego機(jī)殼中的孔中,然后將其粘貼到“車輪”的底面和背面
步驟6:可選的防護(hù)罩(方法一)
您可以使用以下兩種方法之一制作自己的“屏蔽層”:
1:獲取一些PCB和一些引腳并將它們焊接到板上,然后焊接在導(dǎo)線上
步驟7 :可選防護(hù)罩(方法二)
2:獲取一些針腳并粘上或使用硅將它們固定到板上。確保銷釘與下一步的圖對齊。
讓硅干燥一天。
我使用了切割式安全銷,最后它們很好用了
我用了熱熔膠,然后是超級(jí)膠,然后用硅來匹配焊接強(qiáng)度
步驟8:該圖將引領(lǐng)您邁向卓越之路
不要弄亂這張圖。在繼續(xù)進(jìn)行操作并插入arduino之前,請確保一切正確。
電位計(jì)1的右側(cè)轉(zhuǎn)到GND
中間電位到模擬5
左側(cè)轉(zhuǎn)到引腳4
電位器2右側(cè)轉(zhuǎn)到GND
中間轉(zhuǎn)到模擬0
左側(cè)轉(zhuǎn)到引腳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傾斜結(jié)果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代碼:
導(dǎo)入串行
導(dǎo)入編解碼器
導(dǎo)入ctypes
導(dǎo)入時(shí)間
從時(shí)間導(dǎo)入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。結(jié)構(gòu)):
_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()
省略號(hào)行== b‘7 r n’:
打印(‘D_DOWN’)
ReleaseD()
睡眠(0.0125)
print(‘0’)
ser.close()
步驟11:游戲
現(xiàn)在您可以從此處下載我的游戲,也可以修改t他的python代碼可用于其他任何游戲!
如果您對修改其他游戲的代碼有任何疑問,請給我發(fā)消息或在評(píng)論中提問!
步驟12:一個(gè)步驟進(jìn)一步
如果要超越,您可以制作或使用電子鋼琴的踏板充當(dāng)油門踏板/制動(dòng)踏板。
-
駕駛模擬器
+關(guān)注
關(guān)注
0文章
5瀏覽量
5994
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論