Processing与Arduino交互-光敏传感器
跟随环境光变化的太阳
公众号:STCode
1-光敏传感器简介
光敏传感器由光敏电阻构成。光敏电阻的阻值会根据光线强度发生变化。环境光线较弱时,阻值增大;环境光强烈时,阻值变小;当环境光线被完全遮时,阻值最大。简单构造一个电路,将阻值的变化用电压表示出来,即可用Arduino的模拟引脚读取。如图所示是一个光敏传感器模块。
2-Arduino读取光敏传感器
Arduino与光敏传感器模块连接,将光敏传感器A0端的电压读出,并使用串口输出到计算机上显示结果,Arduino与光敏传感器接线及代码如下所示,用Arduino的串口监视器可以读出数值。
接线示意:
Arduino端代码:
int sensorPin = 0;
int val = 0;
void setup()
{Serial.begin(9600);
}void loop()
{val = analogRead(sensorPin);Serial.println(val);delay(100);
}
说明:连接好线路并将上述代码下载进去Arduino控制器后,打开串口监视器,即可查看光敏传感器返回的数值。
3-Processing绘制太阳
根据以下代码绘制一个太阳。绘制太阳用了画多角形和曲线的知识,代码首先画了一个14角星形,再在里面画了一个圆,最后在圆上用贝塞尔曲线勾勒出笑脸,如图。绘制完毕后调用save()函数将绘制的图片存储为sunshine.jpg文件。
void setup() //主函数
{size(500,500); //背景尺寸sun(250,250,200,120,14); //绘制太阳函数save("sunshine.jpg"); //将图像储存为sunshine.jpg文件
}void sun(float x,float y,float r1,float r2,int n) //绘制太阳函数,n表示角数
{background(255); //背景颜色fill(250,180,141); //尖角填充颜色float radian = TWO_PI/(n*2); //三角函数参数float xtemp,ytemp; //定义定点横坐标、纵坐标beginShape(); //开始记录形状顶点for(int i = 0;i<n*2;i++) //循环{if(i%2 == 0){xtemp = x + cos(radian*i)*r1; //外圆顶点ytemp = y + sin(radian*i)*r1;}else{xtemp = x + cos(radian*i)*r2; //内圆顶点ytemp = y + sin(radian*i)*r2;}vertex(xtemp,ytemp); //绘制顶点}endShape(CLOSE); //停止记录strokeWeight(1); //设置线宽fill(250,218,141); //填充颜色ellipse(250,250,250,250); //绘制圆noFill(); //无颜色填充strokeWeight(6); //设置线宽bezier(140,210,170,170,190,170,220,210); //贝塞尔曲线,绘制眼睛bezier(280,210,310,170,330,170,360,210);strokeWeight(15); //设置线宽bezier(210,300,220,330,270,330,290,300); //贝塞尔曲线,绘制嘴巴
}
绘图效果:
将上述代码生成的sunshiner.jpg文件复制到以下代码的同一个文件夹中。以下代码展示了读取图片,演示了太阳从暗变亮,从亮变暗的过程。(此代码无需与Arduino交互)
PImage img;
int i = 0;
boolean max = false;
void setup()
{size(500,500);img = loadImage("sunshine.jpg");background(255);
}
void draw()
{if(max == false){if(i<=255)i++;else{i = 255;max = true;}}else{if(i>0)i--;else{i = 0;max = false;}}sunDisplay(i);
}
void sunDisplay(int j)
{tint(j);image(img,0,0);
}
4-Arduino与Processing交互
下面示例代码演示了如何从Arduino获取光敏传感器的数值,并用数值控制图中太阳的亮度,在黑暗的环境中,太阳图片变暗;在光亮的环境中,太阳图片变得明亮。
Processing端:
PImage img;
import processing.serial.*;
Serial myPort;void setup()
{myPort =new Serial(this,"COM10",9600);size(500,500);img =loadImage("sunshine.jpg");background(255);myPort.clear();
}
int data;void draw()
{if(myPort.available()>0){data=myPort.read();if(data>255){data =255;}data =255-data;println(data);}sun(data);// println("");
}void sun(int light)
{tint(light);image(img,0,0);
}
Arduino端:
int sensorPin = 0;
int val = 0;
void setup()
{Serial.begin(9600);
}void loop()
{val = analogRead(sensorPin);Serial.write(val);delay(30);
}
验证一下效果吧~
Processing与Arduino交互-光敏传感器相关推荐
- Arduino的光敏传感器和超声波测距传感器测试代码
光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...
- arduino控制光敏传感器
一.实物连接 二.代码实现 const int photocellPin = A0; //photoresistor module attach to A0 const int ledPin = 13 ...
- Arduino 光敏传感器 LCD1602A
arduino 实现光控灯,光控开关 涉及模块:光敏传感器,LCD1602A 接线图 实验代码: #include <LiquidCrystal.h> LiquidCrystal lcd( ...
- Arduino光敏传感器控制LED灯亮度
Arduino光敏传感器控制LED灯亮度 目标一: 通过光敏传感器,使得LED亮度根据环境亮度自动调节,环境亮度低则LED灯更亮些 光敏传感器: 光敏传感器共有四个端口: AO:模拟信号输出 DO:T ...
- 【Arduino】双主板串口通信并将光敏传感器信息上传到阿里云
[Arduino]双主板串口通信并将光敏传感器信息上传到阿里云 文章目录 [Arduino]双主板串口通信并将光敏传感器信息上传到阿里云 前言 一.所需材料 二.掌控板部分 1.引入库 2.配置WiF ...
- Arduino+光敏传感器
光敏传感器 编写光敏传感器程序,实时读取环境光照度信息并显示 于 PC 串行端口监控窗口.并由监控窗口输入亮度值,要求当光照度过低时,系统自动点亮面包板上的发光二极管. 原理图 接线图 流程图加粗样式 ...
- 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
目录 1 项目概述 1.1 项目介绍 1.2 项目开发环境 1.3 小组人员及分工 2 需求分析 2.1 系统需求分析 2.2 可行性分析 2.3 项目实施安排 3 系统硬件设计 3.1 系统整体硬件 ...
- arduino与风向传感器的接线_小白如何开始学习Arduino?
大家平时在作品集里会看到很多用Arduino实现的装置,可能是交互装置,可能是艺术装置.很多同学会对Arduino这个部分感兴趣,也喜欢做相关项目,觉得做起来很有意思.今天马克笔设计留学的程老师来讲一 ...
- 光照传感器哪个好_传感器2—光敏传感器
记忆关键:光敏传感器是负相关,光越强,电阻越小. 记忆技巧(只是技巧,不是原理,不要深究):把光敏传感器看做太阳能发电模块,太阳越强电压(电流越大),那根据欧姆定律,电阻不变,电压变大:电压不变,电阻 ...
最新文章
- 项目3:(4)点到直线的距离以及夹角
- layerconfirm确认框的使用
- cygwin中写c语言程序,在windows下怎么利用Cygwin进行编程
- 从源码分析DEARGUI之add_label_text
- 大数据学习之路(七)——学习小结
- LayoutInflater中调用系统服务
- wordpress 介绍
- cas返回mysql数据_单点登录 CAS 5.* - 从数据库获取用户信息 - 4
- 一个透明的shader
- 后通用芯片时代: 专用芯片兴起背后的经济学
- sql语句中【模糊查询like的使用】
- 表达式求值详解(C++)
- Java Web实战篇-轻松提高千万级数据库查询效率
- linux怎么重载mysql配置命令_【Linux命令】数据库mysql配置命令
- 彼得林奇:全球理财师中的NO.1
- 用matlab四边形中心,matlab4
- html 出现脚本错误,当前页面脚本发生错误,教您当前页面脚本发生错误的解决方法...
- 手把手教你用Python高仿一个任务管理器
- 防止用户将表单重复提交的方法汇总
- visio 画图记录