Processing笔记06—Processing控制Arduino点灯

通过前面几篇学习笔记,我们已经对Processing有了一定的了解,可以绘制一些简单图形,以及响应鼠标键盘的输入。

笔者最初学习Processing的目的就是为了了解如何与Arduino进行交互,即通过Processing来控制Arduino,以及将Arduino的数据进行更加直观的可视化展示,一般这些是通过串口通讯来实现的。本篇我们来学习如何通过Processing下发命令,控制Arduino板载LED灯亮灭。

1. Arduino部分

这里使用Arduino Uno R3开发板,你也可以使用Arduino其他的开发板,一般都有板载LED灯。程序如下所示:

int ledPin = 13;
char val;

void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0) //串口接收到数据
  {
    val = Serial.read(); //获取串口接收到的数据
    if (val == 'H')
    {
      digitalWrite(ledPin, HIGH);
    } else if (val == 'L')
    {
      digitalWrite(ledPin, LOW);
    }
  }
}

程序部分非常简单,初始化串口,然后在loop()循环中不断的监听串口,当串口收到数据后,读取并根据自己定义的识别命令来判断开关LED灯。

选择对应开发板型号和端口号进行程序下载,这个端口号非常重要,后面的Processing中要设定相同的端口号才能通讯正常,这里的是COM18。

2. Processing部分

在Processing端,我们画了一个矩形,然后通过鼠标位置与矩形坐标及长宽的关系来判断当前鼠标是否位于矩形之上,然后对应通过串口发送不同的命令。程序如下所示:

import processing.serial.*;

Serial port;

void setup() {
  size(220, 160);
  background(244);
  noStroke();
  textSize(20);
  
  //printArray(Serial.list());//打印串口列表
  //String portName = Serial.list()[0];//修改数组下标得到串口列表中连接Arduino的

  String portName = "COM18";

  port = new Serial(this, portName, 9600);

  fill(0, 0, 255);
  rect(60, 50, 100, 60);
  text("Key", 90, 140);
}

void draw()
{
  if (mouseOverRect())
  {
    port.write('H');
  } else {
    port.write('L');
  }
}

//鼠标是否位于矩形之上
boolean mouseOverRect() {
  return ((mouseX>=60)&&(mouseX<=160)&&(mouseY>=50)&&(mouseY<=110));
}

其中在第一行,通过import导入Processing的串口库。要想与Arduino通过串口进行通讯,就需要设置相同的波特率以及端口号。

通常我们可以通过Serial.list()来获取当前电脑所有的串口设备端口号列表:

printArray(Serial.list());//打印串口列表
String portName = Serial.list()[0];//修改数组下标得到串口列表中连接Arduino的

一般情况下Serial.list()接收的第一个端口号就是与你Arduino连接的,但当有多个端口号时,要根据实际情况,修改数组下标得到串口端口号列表中连接Arduino的那一个。

当然,最简单的还是直接定义就好了:

String portName = "COM18";

3. 实验现象

当鼠标移动到矩形上时,Arduino板载LED灯点亮,当鼠标移到矩形之外后,LED灯熄灭。


关注公众号「TonyCode」,后台回复“snake”,获取贪吃蛇完整程序。
回复「1024」获取1000G学习资料。
个人博客
在这里插入图片描述

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值