4597| 5
|
[教程] 【Everything Is Message】创建第一个Scratch3.0 Extension |
【教程目的】 引入CodeLab Adapter,是为了能在树莓派中使用Scratch增加扩展。 【CodeLab Adapter是什么】 CodeLab Adapter早期的名字叫scratch-adapter,它最初的目的是提供一种更加灵活的方式来增强 Scratch。 就像Scratch3.0连接micro:bit,使用Scratch-Link一样。 【与 micro:bit 建立连接Scratch 社区的做法】 Scratch 社区在发布 3.0 版本的时候,一个重要的工作就是兼容 micro:bit。Scratch 团队似乎也认为 micro:bit 未来会是最重要的教育开源硬件生态(至少是之一)。 Scratch 团队采用的策略是构建一个Scratch-Link,使用它将 Scratch 与外部设备连接(主要是乐高)), 然后为 micro:bit 构建一个兼容于 Scratch-Link的固件。 Scratch 的做法是可以理解的,Scratch 的核心是交互式编程(Scratch 的许多设计理念来自 Smalltalk),而不是灌入式编程,所以他们为树莓派写了固件,来服务于交互式编程。关于这点我在两种硬件编程风格的比较里做了详尽讨论。 目前 scratch 开放了Scratch-Link 的源码,但 micro:bit 的源码目前尚未开源。 【CodeLab Adapter进行了延展】 CodeLab Adapter并不限于增强 Scratch,它已经成为: 致力于连接万物,无论是软件还是硬件,无论是 AI、开源硬件、现实世界的物体、还是虚拟世界的动画角色,在 CodeLab Adapter 的驱动下,皆可彼此互动。 目前,我们在 CodeLab Neverland 中使用 CodeLab Adapter。CodeLab Neverland 是一个由 CodeLab Adapter 驱动的可编程空间,空间里的所有事物皆可编程。 【支持目前最流行的三大开源硬件】
【创建第一个Scratch3.0 Extension】用户操作手册 创建你的第一个Scratch3.0 Extension(尽管 Scratch3 官方的 extensions 机制已经可用了,可以在 Scratch 3.0 中写插件,但社区里文档不多,不大建议大家来踩坑,如果愿意折腾,可以参考创建你的第一个 Scratch 3.0 Extension。) 【写一个自定义的插件】 1、EIM使用(CodeLab Scratch3中构建的通用消息积木),eim 每秒钟更新一次数值,将数值报告给 Scratch3。 2、教程(hello world) https://codelab-adapter-docs.codelab.club/dev_guide/helloworld/ 3、修改代码,实现广播信息后,返回本地时间 [mw_shl_code=python,false]import time from codelab_adapter.core_extension import Extension class HelloWorldExtension(Extension): def __init__(self): super().__init__() self.EXTENSION_ID = "eim" def send_message_to_scratch(self, content): message = self.message_template() message["payload"]["content"] = content self.publish(message) def extension_message_handle(self, topic, payload):#是个回调函数,处理从 Scratch 过来的消息(一般由积木触发) self.logger.info(f'the message payload from scratch: {payload}') content = payload["content"] if type(content) == str: content_send_to_scratch = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 返回本地时间 self.send_message_to_scratch(content_send_to_scratch) def run(self): while self._running: time.sleep(1) export = HelloWorldExtension[/mw_shl_code]4、识取屏幕某点颜色 [mw_shl_code=python,false]import time from codelab_adapter.core_extension import Extension from ctypes import * # 获取屏幕上某个坐标的颜色 class HelloWorldExtension(Extension): def __init__(self): super().__init__() self.EXTENSION_ID = "eim" def get_color(self,x, y): gdi32 = windll.gdi32 user32 = windll.user32 hdc = user32.GetDC(None) # 获取颜色值 pixel = gdi32.GetPixel(hdc, x, y) # 提取RGB值 r = pixel & 0x0000ff g = (pixel & 0x00ff00) >> 8 b = pixel >> 16 return r def send_message_to_scratch(self, content): message = self.message_template() message["payload"]["content"] = content self.publish(message) def extension_message_handle(self, topic, payload):#是个回调函数,处理从 Scratch 过来的消息(一般由积木触发) self.logger.info(f'the message payload from scratch: {payload}') content = payload["content"] if type(content) == str: content_send_to_scratch = self.get_color(100,100) # 获取颜色值 self.send_message_to_scratch(content_send_to_scratch) def run(self): while self._running: time.sleep(1) export = HelloWorldExtension[/mw_shl_code] 第一帖子:智控万物之掌控微信 【以下为个人学习内容(备忘录)】 https://blog.just4fun.site/post/%E5%B0%91%E5%84%BF%E7%BC%96%E7%A8%8B/adapter-tensorflow/ https://codelab-adapter-docs.codelab.club/extension_guide/microbit/ 树莓派4B因为性能的巨大提升,采用电源性能更好的 type c 作为供电口。令人不可思议的是树莓派4B的 USB-C 居然缺少一个 5.1k 欧姆的电阻:原本有两个电阻,分别是R1和R79,结果变成了共用一个电阻。于是所有带有 e-mark 的 type c 电源(可以简单的理解为pd标准的电源)连接树莓派4B的时候都会被当作非供电设备,比如耳机等。 树莓派4确认翻车:官方承认硬件设计失败 树莓派4B修复USB-C供电问题的新版已出货 新版4B版本的检测方法如下: 在终端输入 cat /proc/cpuinfo 将会显示硬件版本,倒数第二行里有Revision。如果是如下的字符串,说明你买到的是已经修复的新版本,Revision: c03112。 值得注意的是,目前只有4G版本才有1.2版出货。 我在命令行输入pinout查看,我的还是旧版本。 学习笔记: 初始化配置sudo raspi-config 启动图形化界面startx 升级系统sudo rpi-update 立即关机sudo shutdown -h now 更新软件源sudo apt-get update 更新已经安装的软件sudo apt-get upgrade 安装XX软件sudo apt-get install XX 切换到root用户su root 设置user用户的密码passwd user 修改网络参数sudo nano /etc/network/interfaces 查看网络配置ifconfig -a 重启网络sudo service networking restart 扫描WIFIsudo iwlist wlan0 scan 获取GPIO信息gpio readall 重启sudo reboot 资源管理命令: 1、top :查看系统的运行情况 2、free -m(-k, -g):查看内存分配情况 3、sudo df -h :查看磁盘使用情况 4、sudo du -sh :查看当前目录下的磁盘使用信息 文件管理 1、pwd :显示当前的绝对路径 2、cd :切换路径 3、cd .. :切换到上级目录 4、find :查找文件 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed