驾驶模拟器DIY图解

电子说

1.3w人已加入

描述

步骤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);

int d = analogRead(A5);

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:一个步骤进一步

如果要超越,您可以制作或使用电子钢琴的踏板充当油门踏板/制动踏板。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_30925771 2022-05-26
0 回复 举报
收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分