描述
当您想要对闪烁 LED 之外的光行为进行原型设计时,事情开始变得棘手。您当然可以使用一些 for 循环、数组或一系列指令对行为进行“硬编码”;但这是一个棘手的过程,当你想探索时很难;有时你真的不知道什么看起来不错,或者可以理解。
如果您可以将鼠标悬停在一种或多种颜色上,您会看到它在您的原型或项目中的外观。此外,通过更快或更慢地移动,您可以看到变化和颜色过渡的外观。现在您还可以使用更多基于视觉的软件,例如 Photoshop、After Effects、Figma 或 Sketch。
该项目包含两段代码;一个捕获光标的当前位置并找出它指向的颜色(在处理中)。还有一个连接到 Arduino,从屏幕上获取 RGB 颜色并将其发送到 NeoPixel(s)(当然需要进行一些调整;伺服系统和其他设备也可以通过这种方式进行控制)。
尤其是当您想将声音体验与灯光体验或屏幕动画同步时,这些示例可以提供帮助;在于默奥设计学院的声音设计课程中,此代码已用于进行视频原型制作或制作体验原型(用于用户测试或演示);声音可以是 After Effects 项目的一部分,而您也可以影响灯光行为(通过操纵屏幕上的视觉效果)。
运动不仅仅是从 A 到 B 的最短路径
使用示例:
这是Iris Ritsma 、Ivan Kunjasic、Ricardo Verheul和我 (Geert Roumen)对Ove的光导探索示例, 用于探索光导行为并查看哪种强度和颜色效果最佳。在这种情况下,最终体验是根据探索和工作的体验进行硬编码的。
一侧显示 After Effect 界面的图片,另一侧显示 Terra 的最终原型。
以下是Manuel Hess、Patrick Krassnitzer和Ferdinand Aichriedler在terra项目中如何使用代码同步和控制地震警报的灯光和声音体验的示例。在这种情况下,最终体验是使用笔记本电脑循环播放 After Effects 视频,声音可通过外部扬声器听到;处理草图将其发送到包含 NeoPixel LED 的原型以展示体验。
使其工作的步骤
获取上述硬件(如果您没有 NeoPixels,您可以轻松更改代码以淡化单个 LED、RGB LED 或其他东西,但 NeoPixels 非常闪亮,非常适合这类项目)。
得到一个 Arduino,任何 Arduino 都可以,只要它使用串行连接连接到计算机。并下载Arduino (pro) IDE (或使用网络编辑器)
下载Processing IDE (如果你还没有的话),代码应该可以在 Mac OSx 和 Windows 上运行,它自 2013 年以来一直在运行(AWT 机器人),所以它希望在未来继续运行。它可能被视为间谍软件(将来);因为它确实会查看屏幕上发生的情况,但它不会将其发送到 Arduino 以外的任何地方。
下载或复制并粘贴代码并将代码上传到 Arduino。
运行处理草图,你应该准备好探索光......
Arduino代码解释
Arduino 代码可能是最有趣的部分。因此从处理草图中接收到三个值。r ,g和b这些可以以任何方式用于控制任何东西;例如,您可以使用analogWrite(10,r);将红色值写入引脚 10。您还可以控制电机的速度、伺服器的角度或在特定时刻触发螺线管;天空才是极限。如果您更喜欢闪烁的 LED 和突然的电机运动,您现在也可以使用digitalWrite(13,r);连接到引脚 13 的 LED 将亮起,除非您将鼠标悬停在黑色上;或非红色像素...只要记住将引脚 13 设置为输出pinMode(13,OUTPUT);
协议是首先接收一个 S,然后读取 RG 和 B 的字节。由于颜色值 83 也被 Arduino 视为“S”,因此这种方式并不完全防水,但这应该问题不大...
if(Serial.available()) { if(Serial.read() == 'S') { //When it finds an 'S' char, it will wait untill it finds 3 other bytes while(!Serial.available()){} r = Serial.read(); while(!Serial.available()){} g = Serial.read(); while(!Serial.available()){} b = Serial.read(); } delay(10); // some recovery time, not sure if nessecary for(int i=0;i
处理代码解释
在处理过程中,它会在光标位置对当前像素进行一点截图;它看不到光标本身。当然,您也可以将其更改为固定位置;如果您希望仍能使用光标。
处理采用它可以找到的第一个串行端口;有时这是正确的,有时您需要更改它以选择正确的串行端口。这可以通过将 更改Serial.list()[0];为类似Serial.list()[1];或Serial.list()[2];在处理草图下方的监视器中来完成,您可以看到操作系统可以找到的不同串行端口。在 Arduino 中,您可以在窗口的右下角看到当前端口的正确名称。
代码扩展
有时您不想只发送一种颜色,而是想要更多的动画。这可以通过同时发送更多像素来实现。两个草图都需要一些调整......
一个由两个伺服系统组成的小机器人,向你挥手告别,也是由 After Effects、Processing、Arduino 流程制作的。
双向原型设计
有时您不想将屏幕上的值发送到 Arduino,但也希望使用 Arduino 影响屏幕上发生的事情。我做了几个例子可以帮助你。
使用 ESP32 作为键盘来影响计算机或智能手机上的内容。用于制作混合界面的原型,例如包含显示器的消费产品。
使用网络串行从运行 Google Chrome 的笔记本电脑上的 p5 与 Arduino 来回通信。强大的原型连接或控制硬件的桌面应用程序。
使用 ble-serial 从 p5 与 Android 设备上的 Arduino 来回通信。非常适合制作物联网应用程序的原型。
使用 ble 将 micro-bit 从运行 Google Chrome 的笔记本电脑连接到 p5 。非常适合代码量较少的重度用户,同时仍然具有 ble 的所有功能。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !