惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threatpost
S
Securelist
T
Tor Project blog
V
V2EX - 技术
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
E
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
F
Fortinet All Blogs
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Scott Helme
Scott Helme
Google DeepMind News
Google DeepMind News
月光博客
月光博客
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
T
Threat Research - Cisco Blogs
Vercel News
Vercel News
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
Apple Machine Learning Research
Apple Machine Learning Research
N
News | PayPal Newsroom
C
Cyber Attacks, Cyber Crime and Cyber Security
D
DataBreaches.Net
Cloudbric
Cloudbric
GbyAI
GbyAI
T
Tailwind CSS Blog
Recorded Future
Recorded Future
A
About on SuperTechFans
Last Week in AI
Last Week in AI
T
Troy Hunt's Blog
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
Schneier on Security
Schneier on Security
腾讯CDC
S
SegmentFault 最新的问题
量子位

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
彩虹🌈的旋律
种瓜 · 2018-08-08 · via 夜行人

阳光总在风雨后, 请相信有彩虹

我喜欢这个粉色少女心的题目

演示

我们先来看看演示效果:在桌子上一字排开彩虹糖,按照你喜欢的颜色去摆放,这些彩虹糖将被演奏为一首音乐

缘起

我非常喜欢Scratch团队成员Eric Rosenbaum发起的颜色编程项目。颜色编程的基本想法是使用日常物体表面的颜色与计算机中的虚拟事物进行互动

颜色编程由一系列的实验构成:

  • Twinkle
  • Color Code
  • Scratch Color Code
  • Programming with Color

我们下边将逐一做个简单介绍

Twinkle

Twinkle 使用一个颜色传感器将颜色序列转化为一首旋律,于是你可以将一幅画、一个乐高建筑以及你身上衬衫上的条纹演奏为一首歌

Color Code

Color Code 的想法是: 物体的颜色可以控制屏幕里的运动,于是你可以利用这个概念创造从乒乓球游戏、音序器以及人工生命模拟。

Scratch Color Code

Scratch Color Code则将Color Code的想法带入到Scratch中,如此一来,人们可以使用友好的scratch图形化编程环境来创建项目,与外部世界的彩色物体交互

视频里展示的例子包括一个cookie怪物游戏、一个叶子平台游戏,以及一个糖果鼓机(candy drum machine)

Programming with Color

Programming with Color将前头的概念延伸到最远处:使用颜色来编程,用Scratch Color Code来创造一个微型编程语言,在这门语言里颜色代表着指令。

这是个极为有趣的想法,我们来看看这个想法的细节

  • 一个小角色在屏幕移动,画出一条线;
  • 一个黑色箭头在屏幕的底部,从左向右滑动,读取由彩色物体组成的“程序”。
  • 当黑色箭头碰到红色时,小角色向右转。
  • 当黑色箭头碰到绿色时,小角色正在绘制的线条会改变颜色。
  • 箭头碰到黄色时小角色向左转,碰到蓝色时小角色回到初始位置重新开始。

这是一种有形的编程语言,指令由对象表示,即便在程序运行时也可以重新排列程序(如果你是一名职业程序员,可能想到了热重载或者LISP)。

与其他有形编程语言不同的是,指令块可以由任何对象来表示,不必是特定的指令块,只要颜色对了就行。对比PETSCubetto,我们可以看到它们的目标上的相似,以及策略上的差别

与其他编程语言不同,Programming with Color的指令具有连续的效应,举例来说明:红色物体越宽,角色右转的时间越长。

这些属性为创造新的编程语言提供了一些有趣的探索。

Scratch颜色编程

本文主要受Scratch Color Code的启发,准备在最新发布的Scratch3.0,使用彩虹糖来演奏乐曲,这便是少女心题目彩虹的旋律之来由

原理

Programming with Color部分其实已经将原理说清楚了,在此我们将原理与当前项目:彩虹🌈的旋律结合起来说明

  1. 彩虹糖在桌子上排成一列,使用摄像头对着它们, 彩虹糖被投影到scratch舞台
  2. 一个粉色箭头在屏幕中间,从左向右滑动
  3. 当粉色箭头碰到不同颜色的彩虹糖时,演奏不同旋律的音符

接着,让我们一起动起手来

需要的材料

  • 一些彩虹糖
  • 一个usb摄像头
  • 一台笔记本电脑(安装chrome浏览器)

Do-Re-Mi

让我们从音乐届的hello world开始: 演奏:Do Re Mi

回顾下原理,看看我们都需要做些什么:

  1. 彩虹糖在桌子上排成一列,使用摄像头对着它们, 彩虹糖被投影到scratch舞台
  2. 一个粉色箭头在屏幕中间,从左向右滑动
  3. 当粉色箭头碰到不同颜色的彩虹糖时,演奏不同旋律的音符

动起手来,首先取出三种颜色的彩虹糖,在桌子上摆开,使用摄像头对着它们,我原先准备使用乐高积木搭建一个摄像头支架,由于心急想快些看到效果,于是我给了我同事一颗彩虹糖,让他帮我拿着USB摄像头

摆好彩虹糖和摄像头后,就可以开始在scratch里开始编写程序了

接下来需要在scratch的角色库里选择一个粉色箭头精灵,只所以把他们称为精灵,是因为游戏里的角色在传统上都被称为精灵。

聪明的你可能要打破沙锅,问为何它们在传统上会被称为精灵呢?我想,可能是因为这些角色和童话里的精灵一样,它们会运动,会生气,会砰地一声消失不见。你通过编程来操控这些精灵,就这点来说,编程和魔法是很相似的,这是个很好的隐喻。你写出一串咒语,然后故事里的精灵就动了起来、远处的灯亮了、而手中的飞行器嗖地飞上了天,这是今天利用程序能做到的事,在很久很久以前的这种开头的故事里,这种事情往往是魔法师的专属权力。我相信今天程序做到的事情,会让历史上每一位伟大的巫师/魔法师大为震惊,这些魔法师不只是大卫·科波菲尔,也包括哈利.波特

选择好精灵之后,我们就开始来为精灵编程了,在开始编写程序之前,我们先想想我们希望精灵做什么事呢

  1. 一个粉色箭头在屏幕中间,从左向右滑动,读取由彩虹糖组成的“程序”。

我们希望粉色箭头在屏幕中间从左向右滑动,目标明确之后,我们就开始动手写程序

上边这段程序表达的意思是:箭头不断往右边移动,如果到了舞台边缘就回到初始位置。怎么知道哪儿是舞台边缘呢?这就是程序里看起来奇怪的数字212出现的原因。212是坐标值,如果你不知道坐标的概念也没关系,知道212表示舞台上右边缘的位置就行。写出有趣的程序和数学好不好并没什么太大关系,别听信大家恐吓你数学不好就学不好编程。如果你喜欢编程,你的数学很可能会得到提高,但你目前的数学不好却不意味着你不适合编程,它可能更多意味着你的数学老师上课太无聊。数学课大多情况下总是那么无聊,这也是我们喜欢在编程中学习的原因

运行程序,我们就看到箭头完成了我们期望它做的事情:不断从左往右滑动

下边来实现最后一步

  1. 当粉色箭头碰到不同颜色的彩虹糖时演奏不同旋律的音符

为了实现这一步,我们需要先启用摄像头,让糖果投影到屏幕上, 首先选择scratch扩展里的视频侦测插件

接着编写碰到不同颜色时演奏不同旋律的代码

  • 黄色对应"Do"
  • 橙色对应"Re"
  • 褐色对应"Mi"

现在就可以开始Do Re Mi的演奏啦:

欢乐颂

我们来演奏贝多芬《欢乐颂》的开头: 33455432

挑一首你自己喜欢的乐曲,试着用彩虹糖演奏它

想象空间

程序是一种指令序列,上边的教程里,我们已经学会了将彩虹糖映射为一个指令(演奏旋律),我们当然也可以将彩虹糖映射为其他指令,诸如

  • 映射为画笔移动
  • 映射为机器人的移动
  • 映射为智能家居的设备行为

如此一来我们就可以在桌子上摆放彩虹糖,去探索绘画、音乐和改造你的家庭

我们甚至可以用彩虹糖去制作了一门新的编程语言: Candy Language

参考