跟随环境光变化的太阳

公众号: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交互-光敏传感器相关推荐

  1. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  2. arduino控制光敏传感器

    一.实物连接 二.代码实现 const int photocellPin = A0; //photoresistor module attach to A0 const int ledPin = 13 ...

  3. Arduino 光敏传感器 LCD1602A

    arduino 实现光控灯,光控开关 涉及模块:光敏传感器,LCD1602A 接线图 实验代码: #include <LiquidCrystal.h> LiquidCrystal lcd( ...

  4. Arduino光敏传感器控制LED灯亮度

    Arduino光敏传感器控制LED灯亮度 目标一: 通过光敏传感器,使得LED亮度根据环境亮度自动调节,环境亮度低则LED灯更亮些 光敏传感器: 光敏传感器共有四个端口: AO:模拟信号输出 DO:T ...

  5. 【Arduino】双主板串口通信并将光敏传感器信息上传到阿里云

    [Arduino]双主板串口通信并将光敏传感器信息上传到阿里云 文章目录 [Arduino]双主板串口通信并将光敏传感器信息上传到阿里云 前言 一.所需材料 二.掌控板部分 1.引入库 2.配置WiF ...

  6. Arduino+光敏传感器

    光敏传感器 编写光敏传感器程序,实时读取环境光照度信息并显示 于 PC 串行端口监控窗口.并由监控窗口输入亮度值,要求当光照度过低时,系统自动点亮面包板上的发光二极管. 原理图 接线图 流程图加粗样式 ...

  7. 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计

    目录 1 项目概述 1.1 项目介绍 1.2 项目开发环境 1.3 小组人员及分工 2 需求分析 2.1 系统需求分析 2.2 可行性分析 2.3 项目实施安排 3 系统硬件设计 3.1 系统整体硬件 ...

  8. arduino与风向传感器的接线_小白如何开始学习Arduino?

    大家平时在作品集里会看到很多用Arduino实现的装置,可能是交互装置,可能是艺术装置.很多同学会对Arduino这个部分感兴趣,也喜欢做相关项目,觉得做起来很有意思.今天马克笔设计留学的程老师来讲一 ...

  9. 光照传感器哪个好_传感器2—光敏传感器

    记忆关键:光敏传感器是负相关,光越强,电阻越小. 记忆技巧(只是技巧,不是原理,不要深究):把光敏传感器看做太阳能发电模块,太阳越强电压(电流越大),那根据欧姆定律,电阻不变,电压变大:电压不变,电阻 ...

最新文章

  1. 项目3:(4)点到直线的距离以及夹角
  2. layerconfirm确认框的使用
  3. cygwin中写c语言程序,在windows下怎么利用Cygwin进行编程
  4. 从源码分析DEARGUI之add_label_text
  5. 大数据学习之路(七)——学习小结
  6. LayoutInflater中调用系统服务
  7. wordpress 介绍
  8. cas返回mysql数据_单点登录 CAS 5.* - 从数据库获取用户信息 - 4
  9. 一个透明的shader
  10. 后通用芯片时代: 专用芯片兴起背后的经济学
  11. sql语句中【模糊查询like的使用】
  12. 表达式求值详解(C++)
  13. Java Web实战篇-轻松提高千万级数据库查询效率
  14. linux怎么重载mysql配置命令_【Linux命令】数据库mysql配置命令
  15. 彼得林奇:全球理财师中的NO.1
  16. 用matlab四边形中心,matlab4
  17. html 出现脚本错误,当前页面脚本发生错误,教您当前页面脚本发生错误的解决方法...
  18. 手把手教你用Python高仿一个任务管理器
  19. 防止用户将表单重复提交的方法汇总
  20. visio 画图记录

热门文章

  1. 这两个工具能批量PDF转图片,建议收藏使用
  2. C语言 -- #deifne 和 typedef 的使用
  3. Java编程思想第四版学习总结
  4. 软件工程 期末考试与总结 测试题(下)
  5. Java 聚合支付 实战 XorPay
  6. Silicon Lab推出新一代EFM8系列:功能强大的嵌入式开发平台
  7. 文本自动生成研究进展与趋势之数据到文本的生成
  8. python多继承 实例化_python 多重继承
  9. HTTP 协议系列 专题 【001】
  10. TwinCAT 3 PLC 读写SDO