在Windows中通过Arduino Uno执行python脚本

时间:2016-09-15 14:58:10

标签: python arduino-uno

我想知道有没有办法通过Windows中的Arduino命令运行python脚本?

2 个答案:

答案 0 :(得分:1)

我不知道这是否能回答你的问题,但是你可以下载Vpython库来创建一些很酷的项目,或者连接传感器并从arduino或者反之中将数据恢复到python中

例如:

int trigPin=13; //Sensor Trig pin connected to Arduino pin 13
int echoPin=11;  //Sensor Echo pin connected to Arduino pin 11
float pingTime;  //time for ping to travel from sensor to target and return
float targetDistance; //Distance to Target in inches
float speedOfSound=776.5; //Speed of sound in miles per hour when temp is 77 degrees.

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(trigPin, LOW); //Set trigger pin low
  delayMicroseconds(2000); //Let signal settle
  digitalWrite(trigPin, HIGH); //Set trigPin high
  delayMicroseconds(15); //Delay in high state
  digitalWrite(trigPin, LOW); //ping has now been sent
  delayMicroseconds(10); //Delay in low state

  pingTime = pulseIn(echoPin, HIGH);  //pingTime is presented in microceconds
  pingTime=pingTime/1000000; //convert pingTime to seconds by dividing by 1000000 (microseconds in a second)
  pingTime=pingTime/3600; //convert pingtime to hourse by dividing by 3600 (seconds in an hour)
  targetDistance= speedOfSound * pingTime;  //This will be in miles, since speed of sound was miles per hour
  targetDistance=targetDistance/2; //Remember ping travels to target and back from target, so you must divide by 2 for actual target distance.
  targetDistance= targetDistance*63360;    //Convert miles to inches by multipling by 63360 (inches per mile)

  Serial.println(targetDistance);

  delay(100); //delay tenth of a  second to slow things down a little.
}

在python中

import serial #Import Serial Library
from visual import * #Import all the vPython library

arduinoSerialData = serial.Serial('com11', 9600) #Create an object for the Serial port. Adjust 'com11' to whatever port your arduino is sending to.
measuringRod = cylinder( radius= .1, length=6, color=color.yellow, pos=(-3,-2,0))
lengthLabel = label(pos=(0,5,0), text='Target Distance is: ', box=false, height=30)
target=box(pos=(0,-.5,0), length=.2, width=3, height=3, color=color.green)
while (1==1):  #Create a loop that continues to read and display the data
    rate(20)#Tell vpython to run this loop 20 times a second
    if (arduinoSerialData.inWaiting()>0):  #Check to see if a data point is available on the serial port
        myData = arduinoSerialData.readline() #Read the distance measure as a string
        print myData #Print the measurement to confirm things are working
        distance = float(myData) #convert reading to a floating point number
        measuringRod.length=distance #Change the length of your measuring rod to your last measurement
        target.pos=(-3+distance,-.5,0)
        myLabel= 'Target Distance is: ' + myData #Create label by appending string myData to string
        lengthLabel.text = myLabel #display updated myLabel on your graphic

这将使python中的图形代表你在超声波传感器前面的东西,你可以看到物体实时移动

我从这个网站上获取了代码:

Toptechboy

这是非常好的教程如何将arduino连接到python!而且非常简单

答案 1 :(得分:0)

我相信不会有任何支持Python的Arduino库因为python被解释而且Arduino没有整个Python的内存,如果你想用Python编程Arduino然后可能只是尝试C你需要学习编程的代码Arduino与你在python中找到的代码没有什么不同,你可以在这里找到大部分代码: https://www.arduino.cc/en/Reference/HomePage

但这些是与在Arduino上运行Python相关的一些python模块:http://playground.arduino.cc/CommonTopics/PyMite