【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即可。

转载于:https://www.cnblogs.com/zlqw/p/9049593.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文首发于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、付费专栏及课程。

余额充值