1. python 樹莓派如何控制小車轉向90度後停止
首先申明js我不會
看到樓主你的思路,我感覺你應該不會成功,看我分析一下:
當程序自啟動,python程序開始運行,running=?Ture,那麼程序將一直按照running=?Ture執行下去,外部任何輸入都是沒有用,除非程序停下來檢測一下,running的狀態,換句話說:你啟動的時候running就是Ture,那麼我就運行,你什麼時候改變狀態我也不知道,建議樓主,能在循環中檢測一下running狀態。這樣才能有效的控製程序運行,下面是都偽代碼:
while?Ture:????????#?程序一直循環開啟
????if?running:??????#?如果如果運行狀態是真
????????do?something??#?開始執行當然這里要注意一下 全局變數問題,我這沒有測試,怕全局變數會有影響!!!
2. 樹莓派小車後端控制,調用Car 類的方法會輪子走一會就不動了,感覺是Car類的方法調用有問題。
<?php $lasttime=filemtime($_SERVER['DOCUMENT_ROOT'].」/index.html」); $interval=180; //更新時間秒為單位180秒=3分鍾 3分鍾審核一篇 if((time()-$lasttime)>$interval) { require_once(dirname(__FILE__).」/../include/common.inc.php」); $row = $dsql->GetOne(「select id from`dede_archives` where arcrank = -1″); // 找到未審核的文章排序根據你的要求修改下 $aid= $row['id']; if($aid!=」){ //審核文章 $upquery = 「Update `dede_archives` set arcrank =0 where id=』$aid』;」; $upquery1 = 「Update `dede_arctiny` set arcrank =0 where id=』$aid』;」; $rs = $dsql->ExecuteNoneQuery($upquery); $rs1 = $dsql->ExecuteNoneQuery($upquery1); $isremote = (empty($isremote)? 0 : $isremote); function MakeArt($aid, $mkindex=FALSE, $ismakesign=FALSE, $isremote=0) { global $envs, $typeid; require_once(DEDEINC.』/arc.archives.class.php』); if($ismakesign) $envs['makesign'] = 『yes』; $arc = new Archives($aid); $reurl = $arc->MakeHtml($isremote); return $reurl; } $arcID=$aid; $artUrl = MakeArt($aid,true,true,$isremote); require_once(DEDEINC.』
3. 樹莓派小車python代碼
樹莓派控制小車,python代碼要根據你採用的硬體進行編寫。不同的硬體,比如電機驅動器,感測器等等不同,代碼就不一樣,包括你使用的是樹莓派的哪些GPIO介面,這些都要先確定了,才能編寫python代碼,並沒有統一的一份代碼可以適用與任何一台樹莓派小車。
4. 如何在樹莓派上安裝 QT 編譯器
首先我需要的開發工具Qt Creator 先從終端單獨下載:
sudo apt-get install qt4-dev-tools
之後安裝QT CREATOR 編譯器:
sudo apt-get install qtcreator
之後繼續安裝編譯環境:
sudo apt-get install gcc
sudo apt-get install xterm
sudo apt-get install git-core
sudo apt-get install subversion
該版本基於Qt Creator 2.5 with Qt 4.8.1 32 bit
存在問題:沒有工具鏈。
我們只能編譯遠程嵌入式設備,這不是這里的情況,因為我們是PI,而不是遠程訪問它。
我添加了一個gcc工具鏈
工具/選項>構建和運行>標簽工具鏈>按鈕添加 選擇GCC
然後設置編譯器路徑:/usr/bin/arm - linux - gnueabihf - gcc - 4.6
調試器:/usr/bin/gdb
Mkspec:默認
Qt Creator似乎發現我們將部署在一個遙遠的目標。
為了解決這個問題:
去幫助>菜單插件
取消設備支持遠程linux >
重啟Qt的創造者
去工具>選項選項卡> >構建和運行> Qt版本添加「/ usr / bin / qmake-qt4」
然後,它將顯示為一個桌面項目在項目向導,而不是嵌入。
5. 怎麼用樹莓派編譯C語言程序
用樹莓派編譯C語言程序方法:
首先安裝Xshell軟體。
點擊New,新建一個ssh連接。
名字隨便起,這里我寫樹莓派。
ip地址,寫樹莓派的ip,我的樹莓派ip是192.168.1.222。
點擊OK。
這樣就建好ssh鏈接了,雙擊樹莓派。
填寫的用戶名,我是用的默認的pi。
點擊OK。
填寫密碼,默認的是raspberry
連接成功。
在命令行輸入vim test.c。
回車。
這時,無法輸入任何字元,按下i鍵,進入編輯模式,此時test.c會變成INSERT
,這時就可以輸入代碼了。
編輯好代碼。按ESC,進入命令行模式
輸入wq!回車
退出vim程序。
接下來在命令行中輸入gcc test.c -o test
回車,生成可執行文件test
./test即可看到運行結果hello world !
大功告成
6. 已經有樹莓派程序,請問如何讓程序在樹莓派里運行呢
樹莓派中sudo是不需要密碼的。 所以原則上可以在腳本里切換成ROOT用戶。
你這個腳本做什麼用,如果只是切換完了,執行一個命令,直接用su就可以搞定,印象中是su -c。su -c USER CMD
如果你想執行完腳本後還保留在root狀態中,直接用sudo -s就可以
7. 樹莓派 編譯驅動 需要編譯內核嗎
如果不是交叉編譯的的話,需要下載和系統版本相同的Linux內核源代碼;如果是交叉編譯的話,還需要安裝交叉編譯工具;詳見http://blog.csdn.net/hcx25909/article/details/16860055
8. 如何用樹莓派驅動一個馬達
第一步,我先將樹莓派的系統安裝好, 確定gcc編譯器,GPIO口都能正常使用.這些操作大家都可以在design spark中搜到,此處就不細講.
圖2
第二步,准備一個小的馬達,再到買一個L298N 電機驅動板. L298N是ST公司生產的一種高電壓、大電流電機驅動晶元。該晶元採用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續工作電流為2A;額定功率25W。
圖3
將樹莓派上的GPIO 0 1 2 3 分別接到電機驅動板上的IN1、IN2、IN3、IN4口.我們使用的馬達連接驅動板後,IN1 IN2 是控制底盤左邊的馬達, IN3 IN4是控制底盤右邊的馬達. 控制的原理拿左邊的電機來講: 依次把驅動板的IN1~IN2置為高電平,就可以驅動馬達,也就是說,要把樹莓派的2個GPIO輸出口依次置為高電平。例如,假設用0代表低電平,1代表高電平的話,GPIO 0、1口的電平第一次被置為1、0,第二次被置為0、1,持續下去,電機就會運作。
我修改好的代碼如下:
#include
#include
#include
#include
#define CLOCKWISE 1
#define COUNTER_CLOCKWISE 2
void delayMS(int x);
void rotate(int* pins, int direction);
int main(int argc,char* argv[]) {
if (argc < 4) {
printf("Usage example: ./motor 0 1 2 3 \n");
return 1;
}
/* number of the pins which connected to the stepper motor driver board */
int pinA = atoi(argv[1]);
int pinB = atoi(argv[2]);
int pinC = atoi(argv[3]);
int pinD = atoi(argv[4]);
int pins[4] = {pinA, pinB, pinC, pinD};
if (-1 == wiringPiSetup()) {
printf("Setup wiringPi failed!");
return 1;
}
/* set mode to output */
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
int i;
delayMS(50); // wait for a stable status
for (i = 0; i < 500; i++) {
rotate(pins, CLOCKWISE);
}
return 0;
}
/* Suspend execution for x milliseconds intervals.
* @param ms Milliseconds to sleep.
*/
void delayMS(int x) {
usleep(x * 1000);
}
/* Rotate the motor.
* @param pins A pointer which points to the pins number array.
* @param direction CLOCKWISE for clockwise rotation, COUNTER_CLOCKWISE for counter clockwise rotation.
*/
void rotate(int* pins, int direction) {
int i=0;
int j=0;
for (i = 0; i < 2; i++) {
if (CLOCKWISE == direction) {
for (j = 0; j < 2; j++) {
if (j == i) {
digitalWrite(pins[3 - j], 1); // 控制GPIO 2 3為高電平
digitalWrite(pins[1 - j], 1); // 控制GPIO 0 1為高電平
} else {
digitalWrite(pins[3 - j], 0); // 控制GPIO 2 3為低電平
digitalWrite(pins[1 - j], 0 );// 控制GPIO 0 1為低電平
}
}
} else if (COUNTER_CLOCKWISE == direction) {
for (j = 0; j < 2; j++) {
if (j == i) {
digitalWrite(pins[j+2], 1); // 控制GPIO 2 3為高電平
digitalWrite(pins[j], 1); // 控制GPIO 0 1為高電平
} else {
digitalWrite(pins[j+2], 0); // 控制GPIO 2 3為低電平
digitalWrite(pins[j], 0); // 控制GPIO 0 1為低電平
}
}
}
delayMS(4);
}
9. 樹莓派怎麼運行python程序
樹莓派運行Python程序的方法:
一、RaspBerry系統設置
1、首先在開發板沒有通電情況下,連接硬體,以及項目中用到感測器。比如當前項目需要將LED燈插在麵包板上,然後通過杜邦線將開發板和麵包板連接,硬體平台搭建完畢。
2、其次打開樹莓派開發板3B,然後用vnc連接上。
3、打開ssh功能。
如下圖,Raspberry Pi Configuration
啟用SSH連接功能。然後點擊OK
更改後需要重新啟動才能生效
二、使用ssh連接上開發板Raspberry Pi
1、打開事先安裝好的File Zilla,輸入IP地址、賬戶、埠號,連接到樹莓派的Linux系統
2、在當前pi目錄上創建存放開發項目的文件夾。在項目文件夾上創建具體的項目文件夾存放項目文件。例如在DIYdemo目錄上創建LED燈項目
3、在PC端寫好的python程序文件放到LED文件夾中。
三、運行python代碼
1、打開VNC軟體,點擊菜單--programming--python3(EDLE)
2、打開寫好的的程序,運行python程序
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於樹莓派怎麼運行python程序的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
10. 求助樹莓派避障小車,遇到 python 了
小白第一次上手 python ,用樹莓派,紅外和超聲波感測器做智障小車。 編譯錯誤:
RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(trip,GPIO.OUT)
Traceback (most recent call last):
File "xiaochetest.py", line 82, in <mole>
fwd()
TypeError: fwd() takes exactly 1 argument (0 given)
下面是小車的代碼:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
m1_fwd = 12
m1_rev = 11
m2_fwd = 13
m2_rev = 15
red_left = 07
red_right = 16
trip = 38
echo = 37
def init():
GPIO.setup(m1_fwd,GPIO.OUT)
GPIO.setup(m1_rev,GPIO.OUT)
GPIO.setup(m2_fwd,GPIO.OUT)
GPIO.setup(m2_rev,GPIO.OUT)
def stop(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def fwd(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def rev(sleep_time):
GPIO.output(m1_fwd,GPIO.LOW)
GPIO.output(m1_rev,GPIO.HIGH)
GPIO.output(m2_fwd,GPIO.LOW)
GPIO.output(m2_rev,GPIO.HIGH)
time.sleep(sleep_time)
GPIO.cleanup()
def right(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def left(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def get_distance():
GPIO.setup(trip,GPIO.OUT)
GPIO.setup(echo,GPIO.IN)
GPIO.output(trip,GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(trip,GPIO.LOW)
while not GPIO.input(echo):
pass
t1 = time.time()
while GPIO.input(echo):
pass
t2 = time.time()
return (t2-t1)*34300/2
def turnaround():
GPIO.setup(red_left,GPIO.IN)
GPIO.setup(red_right,GPIO.IN)
while GPIO.input(red_left) and GPIO.input(red_right)==0:
rev()
if GPIO.input(red_left)==1:
left(1)
else:
right(1)
GPIO.cleanup()
while True:
distance = get_distance()
time.sleep(0.5)
if distance > 20:
fwd()
elif distance == 20:
stop()
else:
stop()
turnaround()
def fwd(sleep_time)
if distance > 20:
fwd()
調用 fwd 的時候要傳參數啊,錯誤提示說的比較清楚了。