标签: micropython

微:蓝牙低功耗黑客持久性(高中实习项目)

我的项目是使用Micro:bit微处理器创建一个交互式程序我正在构建一个游戏,它使用钻孔马达作为控制器,读取旋转方向和速度作为控制输入,但我的导师也说很酷在游戏运行的同时为电路板供电,所以现在我遇到了这样的情况,一旦我停止转向改变方向或我的速度低于传输3.3伏电源,然后游戏重新启动,我失去了所有进展

我有使用第二个micro:bit作为一种由我的电脑供电的存储位置的想法,并且两个不断通信的发送回播放器位置和LED上的其他对象

但我无法弄清楚如何让两个Micro:bit互相交谈

如果有人可以指出我正确的方向,甚至建立某种沟通方式,在我开始前进的过程中向我推进正确的方向

我是一个高中学生,我不会像我假装的那样知道,所以我可能需要很多帮助(我比我班上的大多数人都更先进,所以把我当作一个技术天才少年投入与大学生一天天失去我不应得的自我LOL)请帮助我不知何故我目前完全失去

bluetooth-lowenergy micropython bbc-microbit

4
推荐指数
1
解决办法
568
查看次数

MicroPython:OSError:[Errno 19] ENODEV

我尝试将 ESP32 连接到传感器 GY91(MPU9250 +BMP280)。我正在使用这个库:https ://github.com/tuupola/micropython-mpu9250

我使用了示例代码:

import utime
from machine import I2C, Pin
from mpu9250 import MPU9250

i2c = I2C(scl=Pin(22), sda=Pin(21))
sensor = MPU9250(i2c)

print("MPU9250 id: " + hex(sensor.whoami))

while True:
    print(sensor.acceleration)
    print(sensor.gyro)
    print(sensor.magnetic)
    print(sensor.temperature)

    utime.sleep_ms(1000)
Run Code Online (Sandbox Code Playgroud)

我将库(mpu6500、mpu9250、ak8963)导入到我的设备 ESP32 中。但是当我启动代码时出现这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 8, in <module>
  File "mpu9250.py", line 45, in __init__
  File "mpu6500.py", line 97, in __init__
  File "mpu6500.py", line 149, in whoami
  File "mpu6500.py", line 181, …
Run Code Online (Sandbox Code Playgroud)

python arduino micropython esp32 sensors

4
推荐指数
1
解决办法
1万
查看次数

ModuleNotFoundError:没有名为“machine”的模块

当我尝试使用 micropython 控制 esp32 微控制器时,出现以下错误:

  File "c:/Users/supre/Documents/Python Programme/micropython/blinktest.py", line 1, in <module>
    from machine import Pin
ModuleNotFoundError: No module named 'machine'
Run Code Online (Sandbox Code Playgroud)

我尝试测试基本的眨眼测试代码:

from machine import Pin
import time

led = Pin(12, Pin.OUT)
for n in range(1,30):
    led.value(0) #on
    sleep(1)
    led.value(1) #off
    sleep(1)
Run Code Online (Sandbox Code Playgroud)

我无法通过 pip 或 anaconda 安装此模块(当我尝试通过 pip 安装模块时,构建失败)

这个错误可能是因为我以错误的方式安装了 micropython 导致的吗?

因此,如果有人能帮助我解决这个问题,那就太好了。

python python-3.x micropython esp32

4
推荐指数
1
解决办法
2万
查看次数

@staticmethod 在 CPython 或 Micropython 中保存任何内存吗?

在回答最近的一个问题时,我重复了我的假设,即使用的一个原因@staticmethod是节省内存,因为静态方法只实例化一次。这个断言可以很容易地在网上找到,(例如这里),我不知道我第一次遇到它。

我的推理基于两个假设,其中一个是错误的:python在实例化一个类时实例化了所有方法(事实并非如此,稍加思考就会发现,哎呀)和b。静态方法没有在访问时实例化,而是直接调用。因此我认为这段代码:

import asyncio

class Test:
    async def meth1():
        await asyncio.sleep(10)
        return 78
t1= Test()
t2 = Test()
loop = asyncio.get_event_loop
loop.create_task(t1)
loop.create_task(t2)

def main():
    for _ in range(10):
        await asyncio.sleep(2)

loop.run(main())
Run Code Online (Sandbox Code Playgroud)

比我这样定义类会使用更多的内存:

class Test:
    @staticmethod
    async def meth1():
        await asyncio.sleep(10)
        return 78
Run Code Online (Sandbox Code Playgroud)

是这样吗?静态方法会在访问时实例化吗?类方法会在访问时实例化吗?我知道在第二种情况和第一种情况下t1.meth1 is t2.meth1都会返回,但这是因为 python第一次实例化然后第二次查找它,或者因为在这两种情况下它只是查找它,或者因为在这两种情况下它都会得到静态方法的副本在某种程度上是相同的(我认为不是这样?)静态方法的副本似乎没有改变:但我不确定我对它的访问正在做什么。TrueFalsemeth1id

如果是这样的话,现实世界有理由关心吗?我在 micropython 代码中看到了大量的静态方法,其中异步代码中同时存在多个实例。我以为这是为了节省内存,但我怀疑我错了。我很想知道 micropython 和 Cpython 实现之间是否有任何区别。

编辑 我的想法是正确的,调用t1.meth1()and将在第一个实例中t2.meth1()绑定该方法两次,在第二个实例中绑定一次

python static-methods micropython

4
推荐指数
1
解决办法
222
查看次数

为什么此代码在启动时没有任何输入就显示“ A”?

这是微摩尔斯电码转换器,但在开始时显示“ A”

from microbit import *
morse={'.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E', '..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J', '-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O', '.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T', '..-': 'U', '...-': 'V', '.--': 'W', '-..-': 'X', '-.--': 'Y', '--..': 'Z', '.----': '1', '..---': '2', '...--': '3', '....-': '4', '.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9', '-----': '0', '--..--': ', …
Run Code Online (Sandbox Code Playgroud)

python micropython bbc-microbit

3
推荐指数
1
解决办法
184
查看次数

如何为 micropython 编写测试

我想为我正在为 micro:bit 编写的 micropython 代码编写测试。这里的例子使用doctest。我愿意接受任何测试系统的变通方案。

名为testing_python.py 的工作Python 示例:

def sum(a, b):
    '''
    >>> sum(3, 0)
    3
    '''
    return a + b

print(sum(2,2))
Run Code Online (Sandbox Code Playgroud)

当我测试时使用:

python -m doctest -v testing_python.py 

Run Code Online (Sandbox Code Playgroud)

我得到:

4
Trying:
    sum(3, 0)
Expecting:
    3
ok
Run Code Online (Sandbox Code Playgroud)

使用 micropython 作为 micro:bit 的失败示例,名为testing_micropython.py:

from microbit import *

def sum(a, b):
    '''
    >>> sum(3, 0)
    3
    '''
    return a + b

print(sum(2,2))
Run Code Online (Sandbox Code Playgroud)

当我测试时使用:

python -m doctest -v testing_micropython.py 
Run Code Online (Sandbox Code Playgroud)

我明白了

Traceback (most recent call last):
...
ModuleNotFoundError: No module named 'microbit'
Run Code Online (Sandbox Code Playgroud)

我尝试将“import microbit”语句包装在 try, …

doctest micropython bbc-microbit

3
推荐指数
1
解决办法
1541
查看次数

如何让 Pico W 在启动时设置正确的时间

当使用电池运行时,Pico W 的时钟/utime 默认从 2021-01-01 00:00:00 开始。

每次启动时显然应该:

  • 自己获取当前时间,可能是通过互联网获取的。
  • 将其内部芯片设置为该时间,以便其 utime 库返回正确的时间。

有什么好的既定技术可以实现这一目标吗?

使用微蟒蛇。

micropython raspberry-pi-pico

3
推荐指数
1
解决办法
7904
查看次数

Python中的字节总是八位字节吗?

可能存在断言失败的Python实现:

assert all(byte in range(256) for byte in any_bytes_object) # Python 3 semantics 
assert all(byte in range(256) for byte in map(ord, any_bytes_object)) # Python 2
Run Code Online (Sandbox Code Playgroud)

POSIX明确指定CHAR_BIT == 8(每字节8位).Python中有类似的保证吗?它在某处记录了吗?

Python 2引用说:"字符代表(至少)8位字节."

如果bytes没有定义name(在旧的Python版本上),例如,在Jython 2.5上,那么问题是关于str类型(bytestrings),即bytes = str在Python 2上.

python pypy jython language-lawyer micropython

2
推荐指数
1
解决办法
818
查看次数

micro python中有Zfill类型的函数吗?微型 python 中的 Zfill

我正在尝试将 python 脚本放在运行 micro python 的 pyboard \xe2\x80\x99s 上。MicroPython 中是否有相当于 .zfill 的 python 版本?

\n

micropython

2
推荐指数
1
解决办法
1842
查看次数

我如何让树莓派 pico 与 PC/外部设备通信

例如,当我给代码5时,我想打开我们的rpi pico中的LED(rpi pico通过电缆连接到电脑)

#This code will run in my computer (test.py)

x=int(input("Number?"))
if (x==5):
    #turn on raspberry pi pico led
Run Code Online (Sandbox Code Playgroud)

rpi pico的代码:

#This code will run in my rpi pico (pico.py)

from machine import Pin
led = Pin(25, Pin.OUT)

led.value(1)
Run Code Online (Sandbox Code Playgroud)

反之亦然(使用 rpi pico 中的代码在计算机上的代码中执行某些操作)

我如何调用/获取 pc 中的变量到 rpi pico

注意:我正在使用 opencv python 编写代码,我想在我的计算机上处​​理来自计算机摄像头的数据,并且我希望 rpi pico 根据处理后的数据做出反应。并将树莓派 pico 通过电缆连接到电脑。

python raspberry-pi micropython raspberry-pi-pico

1
推荐指数
1
解决办法
9168
查看次数