本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

未写入数据库的正确传感器读数

发布于2021-07-30 14:59     阅读(938)     评论(0)     点赞(12)     收藏(0)



我有一个 Arduino MKR1000 设置了一个光传感器,它基本上根据它是亮还是暗提供一个布尔值。

{
  pinMode(6, INPUT);
}

void loop()
{
  bool gotLight = (digitalRead(6) == LOW);
  String PostDataTrue = "TRUE";
  String PostDataFalse = "FALSE";

  if (gotLight == 1) {
  Serial.println(PostDataTrue);
  delay(1000); 
  }

  if (gotLight == 0) {
  Serial.println(PostDataFalse);
  delay(1000); 
  }

}

当我运行串行监视器时,我可以看到它根据我是否将传感器暴露在光线下而正确地给出交替的读数。

但是,我用来将这些值写入 Postgres 数据库的 python 脚本似乎“卡住”了某些值。例如,如果我覆盖并揭开传感器,串行监视器可能准备好 TRUE、FALSE、TRUE。表中的结果是真、真、真。

最终出现在表中的值确实在 TRUE 和 FALSE 之间有所不同,但通常发生的情况是,它开始读取 TRUE、TRUE、TRUE 等,直到我覆盖传感器,然后它将正确读取 FALSE、FALSE、FALSE 等.,但是当我揭开传感器时,它仍然会在表中插入 FALSE。

我在下面发布我的python代码。如果有人能指出导致这种情况的原因,我将不胜感激。

import serial
import psycopg2
import datetime
import time

# Initiate the serial connection to the Arduino device.
try:
    ser = serial.Serial('/dev/cu.usbmodem14401', 115200, timeout=1)
    # Brief pause to establish connection to port.
    time.sleep(3)
except Exception as e:
    print(e)
    exit(1)

def insert_data(dt, s1):
    '''Insert data into the database.'''
    conn = psycopg2.connect('''
                            [my connection string info here]
                            ''')
    cur = conn.cursor()
    cur.execute('''INSERT INTO lightbool
                (date_time, sensor1)
                VALUES (%s, %s)''', (dt, s1))
    conn.commit()
    conn.close()


def read_sensors():
    '''Read the sensors connected to Arduino device.'''
    global sensor1
    # When the Arduino receives the character 'z' it will read the sensor data.
    ser.write(b'z')
    try:
        data = ser.readline().decode('utf-8')
        data = data.split()
        sensor1 = data[0]
        print("{} {} {}".format(sensor1))
        return (sensor1)
    except Exception as e:
        print(e)
        return


while True:
    # Get the current date and time from the datetime module.
    time_now = datetime.datetime.today()
    date_time = datetime.datetime.strftime(time_now, "%Y-%m-%d %H:%M:%S")
    read_sensors()
    print(date_time, sensor1)
    # Save data in a Postgresql database.
    insert_data(date_time, sensor1)
    # Pause a few seconds.
    time.sleep(3)


ser.close()


解决方案


暂无回答






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1006890/9b61e8645a3da975f912/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)