Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 XBee xsc s3b+;Pyserial+;阿杜伊诺_Python 2.7_Arduino_Pyserial_Xbee - Fatal编程技术网

Python 2.7 XBee xsc s3b+;Pyserial+;阿杜伊诺

Python 2.7 XBee xsc s3b+;Pyserial+;阿杜伊诺,python-2.7,arduino,pyserial,xbee,Python 2.7,Arduino,Pyserial,Xbee,我需要把arduino作为地面站连接到计算机上。在地面站,我需要实时高度,我需要能够移动伺服,或者像这里的例子一样,点亮LED。我不能用2.4ghz的xbee。因此,我将XBee XSC S3B设置为AT模式 现在,我收到了我的高度,但我不能向arduino发送任何命令(或者我不明白它到底是如何工作的)。这是我的Python GUI代码和arduino代码,它为我提供了高度。我在uart模式下使用Sparkfun Xbee屏蔽。我对比特、字节和所有类型的数据不太了解。我想知道从python向ar

我需要把arduino作为地面站连接到计算机上。在地面站,我需要实时高度,我需要能够移动伺服,或者像这里的例子一样,点亮LED。我不能用2.4ghz的xbee。因此,我将XBee XSC S3B设置为AT模式

现在,我收到了我的高度,但我不能向arduino发送任何命令(或者我不明白它到底是如何工作的)。这是我的Python GUI代码和arduino代码,它为我提供了高度。我在uart模式下使用Sparkfun Xbee屏蔽。我对比特、字节和所有类型的数据不太了解。我想知道从python向arduino发送什么,以及如何使用arduino阅读它来执行我想要的

不要介意if条件,我正在做一些测试,解释为什么它们不匹配

Python:

#import libraries
import serial
from Tkinter import *
from PIL import ImageTk,Image
import time
import threading

main = Tk()
main.title('AVION CARGO 2021')
main.geometry('1300x700')

serialData = serial.Serial('COM6', 9600, bytesize=serial.SEVENBITS, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_ONE)

# creates a grid 50x50
rows = 0
while rows < 50:
    main.rowconfigure(rows, weight=1)
    main.columnconfigure(rows,weight=1)
    rows += 1

# altitude print function
# put in serial data from arduino
altitude = [0]
zeroing_value = float(0)

def serialRead():
    while True:
        global zeroing_value
        if (serialData.inWaiting() > 0):
            altm_ = float(serialData.readline())
            adjusted_alt = round((altm_ + zeroing_value), 2)
            alt['text']='{} ft'.format(adjusted_alt)
            altitude[0]=adjusted_alt
            print altitude
            time.sleep(0.2)


gliderflag = 0
nerfflag = 0
waterflag = 0

# drop function for dropping and writing the altitude at the moment of drop
def altGlider():
    global gliderflag
    CommandGlider = "g"
    if gliderflag == 0:
        serialData.write(CommandGlider.encode())
        print(CommandGlider)
        print type(CommandGlider)
        txt = "{} ft".format(altitude[0])
        glider['text']=txt
        gliderflag += 1
    else:
        pass

def altNerf():
    global nerfflag
    CommandNerf = "n"
    if nerfflag == 0:
        serialData.write('2')
        txt = "{} ft".format(altitude[0])
        nerf['text'] = txt
        nerfflag += 1
    else:
        pass

def altWater():
    global waterflag
    CommandWater = "w"
    if waterflag == 0:
        serialData.write(CommandWater.encode())
        txt = "{} ft".format(altitude[0])
        water['text'] = txt
        waterflag += 1
    else:
        pass

# function to zero the altitude value in real time

zeroFlag = 0

def zero():
    global zeroing_value
    global altitude
    global zeroFlag
    if zeroFlag == 0:
        zeroing_value = 0.0 - altitude[0]
        zeroFlag += 1
        zero['text'] = '       DONE       '
    else:
        pass


# defines das label
lbl = Label(main, text='Data Acquisition System', font=('Arial Bold', 30))
lbl.grid(row=0, rowspan=10, column=0, columnspan=50)

# defines drop button
glider = Button(main, text='Glider', font=('Arial Bold', 70), command=altGlider)
glider.grid(row=10, rowspan=5, column=24, columnspan=25, sticky=E)
glider.config(width=10)

nerf = Button(main, text='Nerf', font=('Arial Bold', 70), command=altNerf)
nerf.grid(row=20, rowspan=5, column=24, columnspan=25, sticky=E)
nerf.config(width=10)

water = Button(main, text='Water', font=('Arial Bold', 70), command=altWater)
water.grid(row=30, rowspan=5, column=24, columnspan=25, sticky=E)
water.config(width=10)

# defines DAS BEGIN button
dasbegin = Button(main, text='DAS BEGIN', fg='red', font=('Arial Bold', 50), command=threading.Thread(target=serialRead).start)
dasbegin.grid(row=25, rowspan=8, column=0, columnspan=24, sticky=E)
dasbegin.config(width=10)

# defines zeroing button
zero = Button(main, text='ZERO ALTITUDE', font=('Arial Bold', 15), command=threading.Thread(target=zero).start)
zero.place(x=270, y=615)

# altitude Label
alt = Label(main, font=('Arial Bold', 100))
alt.place(x=150, y=250)

# altitude Text box for real time readings
#alt = Text(main, width=5, height=1, takefocus=0, font=('Arial Bold', 100))
#alt.place(x=70, y= 250)


# execute mainloop
main.mainloop()
#导入库
导入序列号
从Tkinter进口*
从PIL导入ImageTk,图像
导入时间
导入线程
main=Tk()
主标题(“航空货运2021”)
主要几何图形('1300x700')
serialData=serial.serial('COM6',9600,字节大小=serial.SEVENBITS,奇偶校验=serial.parity\u奇数,停止位=serial.stopbits\u ONE)
#创建一个网格50x50
行数=0
当行数小于50时:
main.rowconfigure(行,权重=1)
main.columnconfigure(行,权重=1)
行数+=1
#高度打印功能
#从arduino输入串行数据
海拔高度=[0]
归零_值=浮点(0)
def serialRead():
尽管如此:
全局归零_值
如果(serialData.inWaiting()>0):
altm_u2;=浮点(serialData.readline())
调整后的高度=四舍五入((高度+调零值),2)
alt['text']='{}ft'。格式(调整后的alt)
高度[0]=调整后的高度
打印高度
睡眠时间(0.2)
gliderflag=0
nerflag=0
水滞=0
#下降功能,用于在下降时下降并写入高度
def altGlider():
全局滑动滞后
CommandGlider=“g”
如果gliderflag==0:
serialData.write(CommandGlider.encode())
打印(命令滑翔机)
打印类型(CommandGlider)
txt=“{}ft.”格式(高度[0])
滑翔机['text']=txt
gliderflag+=1
其他:
通过
def altNerf():
全球能源公司
CommandNerf=“n”
如果nerflag==0:
serialData.write('2')
txt=“{}ft.”格式(高度[0])
nerf['text']=txt
nerflag+=1
其他:
通过
def altWater():
全球水滞
CommandWater=“w”
如果waterlag==0:
serialData.write(CommandWater.encode())
txt=“{}ft.”格式(高度[0])
水['text']=txt
水滞+=1
其他:
通过
#用于实时将高度值归零的功能
零标志=0
def zero():
全局归零_值
全球高度
全局零标志
如果zeroFlag==0:
归零_值=0.0-高度[0]
零标志+=1
零['text']='DONE'
其他:
通过
#定义das标签
lbl=标签(主标签,文本=“数据采集系统”,字体=('Arial Bold',30))
lbl.grid(行=0,行span=10,列=0,列span=50)
#定义下拉按钮
glider=按钮(main,text='glider',font=('Arial Bold',70),command=altGlider)
glider.grid(行=10,行跨度=5,列=24,列跨度=25,粘性=E)
glider.config(宽度=10)
nerf=按钮(main,text='nerf',font=('Arial Bold',70),command=altNerf)
能量网格(行=20,行span=5,列=24,列span=25,粘性=E)
nerf.config(宽度=10)
水=按钮(main,text='water',font=('Arial Bold',70),command=altWater)
水网格(行=30,行span=5,列=24,列span=25,粘性=E)
water.config(宽度=10)
#定义DAS开始按钮
dasbegin=按钮(main,text='DAS BEGIN',fg='red',font=('Arial Bold',50),command=threading.Thread(target=serialRead.start)
dasbegin.grid(行=25,行span=8,列=0,列span=24,粘滞=E)
dasbegin.config(宽度=10)
#定义调零按钮
zero=按钮(main,text='zero ALTITUDE',font=('Arial Bold',15),command=threading.Thread(target=zero).start)
零位(x=270,y=615)
#高度标签
alt=标签(主字体,字体=('Arial Bold',100))
alt.place(x=150,y=250)
#用于实时读数的高度文本框
#alt=文本(主,宽度=5,高度=1,takefocus=0,字体=('Arial Bold',100))
#高度位置(x=70,y=250)
#执行主循环
main.mainloop()
阿杜伊诺

    #include <Wire.h>
#include "SparkFunMPL3115A2.h"

//Create an instance of the object
MPL3115A2 myPressure;

int LED = 8;
int LED2 = 6;
int LED3 = 10;

int n;

char Command;

void setup()
{
  Wire.begin();        // Join i2c bus
  Serial.begin(9600);  // Start serial for output

  myPressure.begin(); // Get sensor online

  //Configure the sensor
  myPressure.setModeAltimeter(); // Measure altitude above sea level in meters
  //myPressure.setModeBarometer(); // Measure pressure in Pascals from 20 to 110 kPa

  myPressure.setOversampleRate(7); // Set Oversample to the recommended 128
  myPressure.enableEventFlags(); // Enable all three pressure and temp event flags 

  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  digitalWrite(LED, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
}

void loop()
{
  float altitude = myPressure.readAltitudeFt();
    if (Serial.available() >0){
      Command = Serial.read();
    }
  
        // glider
    if (Command == '2'){
  
      digitalWrite(LED, HIGH);
      delay(2000);
      digitalWrite(LED, LOW);
      delay(500);
      
    }
  
      // nerf
    if (Command == 'n'){
  
      digitalWrite(LED2, HIGH);
      delay(2000);
      digitalWrite(LED2, LOW);
      delay(500);
      
    }
  
    // water
  
    if (Command == 'w'){
  
      digitalWrite(LED3, HIGH);
      delay(2000);
      digitalWrite(LED3, LOW);
      delay(500);
      
    }
      
      
    Serial.println(altitude);  
    delay(400);
}
#包括
#包括“SparkFunMPL3115A2.h”
//创建对象的实例
MPL3115A2-myPressure;
int-LED=8;
int-LED2=6;
int-LED3=10;
int n;
char命令;
无效设置()
{
Wire.begin();//连接i2c总线
Serial.begin(9600);//开始串行输出
myPressure.begin();//使传感器联机
//配置传感器
myPressure.setModeAltimeter();//测量海平面以上的高度,单位为米
//myPressure.setModeBarometer();//测量20到110 kPa之间的压力,单位为帕斯卡
myPressure.setOversampleRate(7);//将过采样设置为建议的128
myPressure.enableEventFlags();//启用所有三个压力和温度事件标志
引脚模式(LED,输出);
引脚模式(LED2,输出);
引脚模式(LED3,输出);
数字写入(LED,低电平);
数字写入(LED2,低电平);
数字写入(LED3,低电平);
}
void循环()
{
浮动高度=我的压力。readAltitudeFt();
如果(Serial.available()>0){
Command=Serial.read();
}
//滑翔机
如果(命令=='2'){
数字写入(LED,高电平);
延迟(2000年);
数字写入(LED,低电平);
延迟(500);
}
//削弱
如果(命令=='n'){
数字写入(LED2,高);
延迟(2000年);
数字写入(LED2,低电平);
延迟(500);
}
//水
如果(命令=='w'){
数字写入(LED3,高);
延迟(2000年);
数字写入(LED3,低电平);
延迟(500);
}
串行打印LN(高度);
延迟(400);
}