【processing与arduino互动编程】第七章 控制彩色LED灯(转载)

Processeing代码

复制代码
1 import processing.serial.*;
2 Serial port = new Serial(this, “COM3”, 9600);
3 int redDisplay, greenDisplay, blueDisplay;
4 int red, green, blue;
5 String strRed, strGreen, strBlue;
6 String message;
7
8 void setup() {
9 size(700, 500);
10 }
11
12 void draw() {
13 background(204);
14 frame();
15 RGBDisplay();
16 sendMessage();
17 }
18
19 void frame() {
20 rectMode(CORNER);
21 noFill();
22 stroke(255, 0, 0);
23 strokeWeight(2);
24 rect(50, 100, 500, 50);
25 stroke(0, 255, 0);
26 rect(50, 200, 500, 50);
27 stroke(0, 0, 255);
28 rect(50, 300, 500, 50);
29 }
30
31 void RGBDisplay() {
32 rectMode(CORNER);
33 noStroke();
34 fill(red, 0, 0);
35 rect(50, 100, redDisplay, 50);
36 fill(0, green, 0);
37 rect(50, 200, greenDisplay, 50);
38 fill(0, 0, blue);
39 rect(50, 300, blueDisplay, 50);
40 fill(red, green, blue);
41 rect(300, 400, 50, 50);
42 fill(0);
43 rect(400, 400, 50, 50);
44 }
45
46 void mouseClicked() {
47 if (mouseX <= 550 && mouseX >= 50) {
48 if (mouseY <= 150 && mouseY >= 100) {
49 red = (int) map(mouseX, 50, 550, 0, 255);
50 redDisplay = mouseX - 50;
51 }
52 else if (mouseY <= 250 && mouseY >= 200) {
53 green = (int)map(mouseX, 50, 550, 0, 255);
54 greenDisplay = mouseX - 50;
55 }
56 else if (mouseY <= 350 && mouseY >= 300) {
57 blue = (int) map(mouseX, 50, 550, 0, 255);
58 blueDisplay = mouseX - 50;
59 }
60 else if (mouseX <= 450 && mouseX >= 400)
61 shut();
62 }
63 }
64
65 void sendMessage() {
66 strRed = red + “”;
67 if (red < 100)
68 strRed = “0” + red;
69 if (red < 10)
70 strRed = “00” + red;
71
72 strGreen = green + “”;
73 if (green < 100)
74 strGreen = “0” + green;
75 if (green < 10)
76 strGreen = “00” + green;
77
78 strBlue = blue + “”;
79 if (blue < 100)
80 strBlue = “0” + blue;
81 if (blue < 10)
82 strBlue = “00” + blue;
83
84 message = “a” + strRed + strGreen + strBlue + “s”;
85 port.write(message);
86 }
87
88 void shut() {
89 redDisplay = 0;
90 greenDisplay = 0;
91 blueDisplay = 0;
92 red = 0;
93 green = 0;
94 blue = 0;
95 }
复制代码
Arduino代码

复制代码
1 int redpin = 11;
2 int bluepin = 10;
3 int greenpin = 9;
4
5 void setup() {
6 pinMode(redpin, OUTPUT);
7 pinMode(bluepin, OUTPUT);
8 pinMode(greenpin, OUTPUT);
9 Serial.begin(9600);
10 }
11
12 char charbuf[20];
13 int color[3];
14
15 void loop() {
16 while (Serial.available() > 0) {
17 Serial.readBytesUntil(‘s’, charbuf, 20);
18 if (charbuf[0] == ‘a’) {
19 color[0] = 100 * (charbuf[1] - ‘0’) + 10 *( charbuf[2] -‘0’) + charbuf[3] -‘0’;
20 color[1] = 100 * (charbuf[4] - ‘0’) + 10 *( charbuf[5] -‘0’) + charbuf[6] -‘0’;
21 color[2] = 100 * (charbuf[7] - ‘0’) + 10 *( charbuf[8] -‘0’) + charbuf[9] -‘0’;
22 }
23 analogWrite(redpin, color[0]);
24 analogWrite(greenpin, color[1]);
25 analogWrite(bluepin, color[2]);
26 }
27 }
复制代码
鼠标点击的时候,有点问题,有时候会不动, 有时候会清零。将46-61行部分if语句改成else if即可。

本文首发于DF创客社区,作者:晓庆 原文链接:http://mc.dfrobot.com.cn/thread-296806-1-1.html 1.简介 这是一款十分炫酷的可编程LED特效,例如人造火焰、雪花飘落等动态的效果。通过processing语言可以编程生成各种显示效果,提供丰富多样的交互方式,包括音乐,声音,传感器和其他东西在内的输入。可以应用于晚会,酒吧等场所,营造特殊光影效果。 硬件: 树莓派3B+开发版 x 1 Fadecandy 开发板 × 1 1米LED带 × 2 电源开关 × 1 软件: Processing 优势: 提供非常绚丽的LED显示颜色,显示效果可以编程。 提供非常酷炫的交互方式,比如声音反馈、 API 连接并获取喜欢的服务、IFTTT集成、语音识别,以及许多其他功能。 进度: 作品已完成,已上传 先看一段炫酷的视频吧(温馨提醒:视频中某些光线的变化模式或者闪光的方式,可能会引起极少数人出现癫痫症状。如有不适请立即停止观看)。 配合音乐享用效果更佳 2.原理说明 整个LED显示效果由部署在服务器(Windows/Mac/Raspberry/IOS/Android)processing语言生成,processing 的sketch实例能够通过采样点转换位图。树莓派作为服务器的角色,给fadecandy传输指令从而间接驱动条。采样点发送到fadecandy开发板,由fadecandy驱动8x15 的LED阵列,LED的光透过漫反射的PVC塑料管呈现出来。 Processing Processing是一种具有革命前瞻性的新兴计算机语言,它的概念是在电子艺术的环境下介绍程序语言,并将电子艺术的概念介绍给程序设计师。它是Java 语言的延伸,并支持许多现有的Java 语言架构,不过在语法(syntax) 上简易许多,并具有许多贴心及人性化的设计。Processing可以在Windows、MAC OS X 、Linux 等操作系统上使用。目前最新版本为Processing 3。以Processing 完成的作品可在个人本机端作用,或以Java Applets 的模式外输至网络上发布。 官方网站:https://processing.org 下载地址:https://processing.org/download/ 效果很明显。颜色非常好,有时亮度也很高。这是一种控制光源阵列的很棒的方法,这意味着就算你不必是专业程序员,只需通过在 Photoshop 中制作的内容就做到很酷的效果。 这里不得不提openprocessing.org 这个网站,它提供了丰富的草图并支持在线编辑工具。Processing还附带了一个很棒的工具用于浏览和安装所需要的库。 Fadecandy 采用了Micah Elizabeth Scott的Fadecandy开发板来。她一直在从事艺术和互动实验的光特效工作。正如她在网站(https://www.misc.name/fadecandy)上展示的那样,大多数普通的LED控制器在混合色调或显示正确的色彩时效果很差。于是,她制作了Fadecandy开发板来解决这些问题。 更好的是,它可以通过USB 连接到大小型计算机,还可以嵌入到计算机(像树莓派一样)进行控制。也可以直接Processing 进行接口,Processing 也可以在树莓派上使用,完全可以满足这种小规模的需求。 树莓派 Raspberry Pi是一款针对电脑业余爱好者、教师、小学生以及小型企业等用户的迷你电脑,预装Linux系统,体积仅信用卡大小,搭载ARM架构处理器,运算性能和智能手机相仿。 在接口方面,Raspberry Pi提供了可供键鼠使用的USB接口,此外还有快速以太网接口、SD卡扩展接口以及1个HDMI高清视频输出接口,可显示器或者TV相连。 Ws2812 LED带 这个可控制的多彩LED带,不过多介绍。 制作过程 软件准备 1. 在Mac/Windows和树莓派上下载并安装processing 3(https://processing.org/download/), 2. 下载并安装fadecandy软件到树莓派(https://github.com/scanlime/fadecandy/releases),调试过程中可以把fadecandy部署在Mac/Windows上。 3. 下载processing的sketch。 硬件准备 1. 树莓派3B 2. 淘宝海外代购fadecandy开发版 3. ws2812 60珠LED带2米。 4. 直径5cm,长度30cm的PVC管。 5. 直径10cm,长度30cm的漫反射PC管。 6. 5V 6A电源。 制作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值