【Everything Is Message】创建第一个Scratch3.0 Extension
https://adapter.codelab.club/img/adapter_party.jpeg【教程目的】
引入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 的源码目前尚未开源。 分析 scratch3.0 与 micro:bit 的通信
【CodeLab Adapter进行了延展】
CodeLab Adapter并不限于增强 Scratch,它已经成为:致力于连接万物,无论是软件还是硬件,无论是 AI、开源硬件、现实世界的物体、还是虚拟世界的动画角色,在 CodeLab Adapter 的驱动下,皆可彼此互动。 目前,我们在 CodeLab Neverland 中使用 CodeLab Adapter。CodeLab Neverland 是一个由 CodeLab Adapter 驱动的可编程空间,空间里的所有事物皆可编程。
【支持目前最流行的三大开源硬件】
[*]micro:bit
[*]Raspberry Pi(显示正在构建中)
[*]Arduino
未来支持:更多的开源硬件支持,如 esp8266 等。
【创建第一个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、修改代码,实现广播信息后,返回本地时间
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 = HelloWorldExtension4、识取屏幕某点颜色
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
第一帖子:智控万物之掌控微信
【以下为个人学习内容(备忘录)】
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查看,我的还是旧版本。学习笔记:树莓派3B+开机自启动Python程序
初始化配置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 :查找文件
好文章,学习中 云天老师,你宝贝好多。{:7_216:} 羡慕。。。。。。。。。。。。。 rzyzzxw 发表于 2020-4-22 08:07
云天老师,你宝贝好多。
我有很多,但上图中有很多没有,不过都会有的(做梦中……) 学习到新知识了
页:
[1]