樹莓派 wifi小車製作(1)獲取手柄遙感輸入

2021-10-24 21:56:55 字數 2634 閱讀 4549

這部分主要是通過某些模組獲取控制資訊,輸入單獨寫乙個模組,以後想要調整成其他的裝置只需要單獨改一下這部分的**

哦……目前模仿我這個小車前提要求要有個手柄233

這部分主要是使用了pygame裡面的joystick模組

joystick的學習教程

使用joystick簡化只保留搖桿操作

最後貼上我新增的小車控制部分,使用了多執行緒(其實也不是很需要)

test_shoubing_noclass.py

import pygame

import threading

import time

#初始化

pygame.init()

pygame.joystick.init()

clock = pygame.time.clock()

#車輛各個引數設定

car_max_speed=10 #車輛最大移動速度

car_max_turn=3 #車輛最大轉向速度

camera_max_speed=10 #視角轉移速度

done=false

left_speed=0 #車輛左半邊輪子的速度

right_speed=0 #車輛右半邊輪子的速度

vis_v_par=0 #攝像頭舵機水平轉向速度

vis_v_hor=0 #攝像頭舵機垂直轉向速度

def shoubin_thread():

global left_speed

global right_speed

global vis_v_par

global vis_v_hor

#尋找電腦上的手柄數量,一般我只連了乙個手柄(因為只有乙個)

joystick_count = pygame.joystick.get_count()

for i in range(joystick_count):

#讀取對應裝置

joystick = pygame.joystick.joystick(i)

joystick.init()

while (not done ):

# 這句話很重要,這是保障實時讀取手柄搖桿資訊,反正不能去掉

pygame.event.get()

#獲取搖桿數量

axes = joystick.get_numaxes()

ls=0

rs=0

vps = 0

vhs = 0

for i in range(axes):

axis = joystick.get_axis(i)

if i==0:

# print("zhuanxiang ",axis*car_max_turn)

ls+=axis*car_max_turn

rs-=axis*car_max_turn

if i==1:

# print("zhixing ",-axis*car_max_speed)

ls-=axis*car_max_speed

rs -= axis * car_max_speed

if i==4:#上是負數

vps=axis*camera_max_speed

if i == 3: # 左是負數

vhs = -axis * camera_max_speed

# print(i,axis)

left_speed = ls

right_speed = rs

vis_v_par = vps

vis_v_hor = vhs

# print('左輪速度 = ', left_speed, " 右輪速度 = ", right_speed)

# print('相機水平移動速度 = ', vis_v_par, " 相機垂直移動速度 = ", vis_v_hor)

clock.tick(20)

def print_thread():

while (not done):

print('***************=')

print('左輪速度 = ',left_speed," 右輪速度 = ",right_speed)

print('相機水平移動速度 = ', vis_v_par, " 相機垂直移動速度 = ", vis_v_hor)

def get_shoubing_info():

return left_speed,right_speed,vis_v_par,vis_v_hor

t1 =threading.thread(target=shoubin_thread)

t1.start()

# t2 =threading.thread(target=print_thread)

# t2.start()

1.最簡單的,將最後面t2的注釋去掉就好了

2.亦或者通過呼叫的方法

import test_shoubing_noclass#這裡放上面的檔案的名字

while(1):

print(test_shoubing_noclass.get_shoubing_info())

因為樹莓派小車是四輪固定的,沒有轉向輪,所以轉向是通過兩邊輪胎的差速來達成轉向

所以我將兩邊輪胎的轉速分開控制

使用樹莓派製作智慧型小車

小車的控制最主要有兩方面的控制,乙個是小車的前後左右的運動控制,乙個是攝像頭的拍攝 上下左右轉運的控制。複製 coding utf 8 import rpi.gpio as gpio import time 小車電機引腳定義 leftin1 20 leftin2 21 leftspeed 16 ri...

樹莓派筆記15 手機控制樹莓派小車

小車 演示 購買現成的小車底座,包括電機馬達和車輪 使用l298n模組來控制小車底座上的電機,使樹莓派可以驅動小車運動 一塊12v的鋰電池,專門給l298n供電 樹莓派專用csi介面攝像頭,用來採集影象 由兩個sg90舵機構成的雲台,作為攝像頭的搭載平台 一塊oled顯示屏,簡要地顯示一些資訊 不用...

樹莓派wifi自動獲取ip

樹莓派的wifi顯示正常鏈結到了網路中,但是ping www.baidu.com時,顯示網路不可用。初步判斷是前一天設定了固定ip,今天換成鏈結移動無線路由器時,ip無法正常獲取。因此,在network preferences中,將所有的網路都設定成了自動獲取配置的方式。然後,重啟後,仍然無法pin...