电子说
步骤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:一个步骤进一步
如果要超越,您可以制作或使用电子钢琴的踏板充当油门踏板/制动踏板。
全部0条评论
快来发表一下你的评论吧 !