python - 让 Arduino 无法与 Flask 框架一起工作,我做错了什么?
问题描述
这是一个学校俱乐部的项目。我有一个非常基本的 Arduino 程序,它以两种不同的速率闪烁 LED,具体取决于接收到的输入。我对python真的很陌生,所以我真的不知道自己在做什么。到目前为止,我为此编写了一小段代码,仅适用于 python。我只是让它接受用户输入并将其写入 Arduino。它工作得很好。
但我打算有一个基于烧瓶的 GUI 来控制 Arduino。我设置了两个按钮来做到这一点。当我修改代码以使用烧瓶应用程序运行时,Arduino LED 只闪烁一次并且不会运行程序。我不确定出了什么问题。这是我的代码:
阿杜诺:
int led =13, data;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // Set the baud rate
pinMode(13, OUTPUT); // Set the onboard LED to output
digitalWrite(13, LOW);
Serial.println("Ready");
}
void loop()
{
while (Serial.available())
{
data = Serial.read();
}
if (data =='1')
{
digitalWrite(led, HIGH); //turn LED on
delay(500); //wait for a second
digitalWrite(led, LOW);//turn LED off
delay(500); //wait for a second
}
if (data =='0')
{
digitalWrite(led, HIGH);//turn LED on
delay(2000); //wait for a second
digitalWrite(led, LOW);//turn LED off
delay(2000); //wait for a second
}
}
HTML 表单提交按钮:
<form action ="/gui" method= "POST">
<input type="submit" name="submit" value="Blink Fast">
<input type="submit" name="submit" value="Blink Slow">
</form>
蟒蛇烧瓶
import serial
from flask import render_template, request
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/gui', methods=(['GET', 'POST']))
def hello_world():
if request.method =='POST':
request.form['submit']
arduino_serial = serial.Serial('COM3', 9600) # Create Serial port object called arduinoSerialData
if request.form['submit']== 'Blink Fast': # if the entered data is blink fast
print(b'1')
arduino_serial.write(b'1') # send 1 to arduino
elif request.form['submit']=='Blink Slow':
arduino_serial.write(b'0') # send 0 to arduino
print(b'1')
return render_template('gui.html')
if __name__ == '__main__':
app.run()
最后这是有效的代码:
import serial
Arduino_Serial = serial.Serial('COM3', 9600) # Create Serial port object called arduinoSerialData
print
Arduino_Serial.readline() # read the serial data and print it as line
print("Enter 1 to ON LED and 0 to OFF LED")
while 1: # infinite loop
input_data = input() # waits until user enters data
print
"you entered", input_data # prints the data for confirmation
if (input_data == '1'): # if the entered data is 1
Arduino_Serial.write(b'1') # send 1 to arduino
print("LED ON")
if (input_data == '0'): # if the entered data is 0
Arduino_Serial.write(b'0') # send 0 to arduino
print("LED OFF")
解决方案
推荐阅读
- ios - 为什么我的 Xcode 10.1 Playground 没有运行代码?
- python - 找不到通过 csv 检查 Python 中的 URL 状态的方法
- javascript - 我需要这个函数返回这个数组之间的“差异”
- javascript - 无法使用 JS 变量访问带有“:”的 GeoJSON 属性
- angular - 名称只能包含 URL 友好字符 NPM 安装
- java - HotSpot JVM 在哪里存储解释的字节码?
- powershell - 在 xml 生成 PowerShell 脚本中实现跟踪
- c++ - 为什么我的计数器应该为 0 时不能正常工作,但其他值 >0 工作正常?
- android - kotlin 中 val 的动态延迟初始化
- python - eBay API 返回 errorID 2000,服务操作 GetItem 未知