Arduino 项目:太阳能跟踪器

news2024/11/9 0:08:23

        在本文中,您将逐步学习如何使用 光敏电阻和舵机制作双轴太阳能跟踪器 Arduino 项目。在这个项目中,我们将使用一些光敏传感器来跟踪阳光,并将利用舵机将太阳能电池板引导到可提高其效率的区域。

此项目所需的组件

序号部件名称描述数量备注
1Arduino UNOArduino UNO R31
2舵机微型舵机 - SG902
3        光敏电阻LDR(光敏电阻)传感器4
4电阻10k欧姆电阻4
5面包板迷你面包板1

光敏电阻的工作原理

        光敏电阻。实际上,它是一种光敏设备。当光线照射到它上面时,电阻会减小。在这个项目中,我们使用 4 个光敏电阻来检测阳光。

        根据上方两个光敏电阻和下方两个光敏电阻的读数差额,调整垂直方向的舵机角度,根据左边两个光敏电阻和右面两个光敏电阻的读数差额调整水平方向的舵机角度,从而更好地放置太阳能电池板,以最大限度地提高其效率。

接线图

注意

1.光敏电阻之间要使用隔断将各个光敏电阻之间分隔开来。

2.在实施项目时应该注意调试光敏电阻之间的距离。

代码

#include <Servo.h>


Servo horizontal; //水平方向电机
int servoh = 180;
int servohLimitHigh = 175;
int servohLimitLow = 5;
// 65 degrees MAX

Servo vertical; //垂直方向电机
int servov = 45;
int servovLimitHigh = 60;
int servovLimitLow = 1;

// LDR pin connections
// name = analogpin;
int ldrlt = A0; //LDR top left 
int ldrrt = A2; //LDR top rigt 
int ldrld = A1; //LDR down left 
int ldrrd = A3; //ldr down rigt 

void setup() {
  horizontal.attach(9);//水平方向舵机接9号管脚
  vertical.attach(10);//垂直方向舵机接10号管脚
  horizontal.write(180);//初始化水平方向舵机为180度
  vertical.write(45);//初始化垂直方向舵机为45度
  delay(2500);
}
void loop() {
  int lt = analogRead(ldrlt); // 上左光敏电阻
  int rt = analogRead(ldrrt); // 上右光敏电阻
  int ld = analogRead(ldrld); // 下左光敏电阻
  int rd = analogRead(ldrrd); // 下右光敏电阻
  int dtime = 10; //检测时间
  int tol = 90; 
  int avt = (lt + rt) / 2; // 顶部两个光敏电阻读数平均值
  int avd = (ld + rd) / 2; // 下方两个光敏电阻读数平均值
  int avl = (lt + ld) / 2; // 左边两个光敏电阻读数平均值
  int avr = (rt + rd) / 2; // 右边两个光敏电阻读数平均值
  int dvert = avt - avd; // 检测上下两组光敏电阻读数差异,这个差异决定了垂直舵机的转向角度
  int dhoriz = avl - avr;// 检测左右两组光敏电阻读数差异,这个差异决定了水平舵机的转向角度

  if (-1 * tol > dvert || dvert > tol)
  {
    if (avt > avd)
    {
      servov = ++servov;//顶部传感器值大于底部值,舵机角度增加。
      if (servov > servovLimitHigh)
      {
        servov = servovLimitHigh;//转动角度大于最大值时角度设置为最大值。
      }
    }
    else if (avt < avd)
    { servov = --servov;//顶部传感器值小于底部值,舵机角度减小
      if (servov < servovLimitLow)
      {
        servov = servovLimitLow;//转动角小于最大值时设置为最小值。
      }
    }
    vertical.write(servov);//转动舵机。
  }
  if (-1 * tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
  {
    if (avl > avr)
    {
      servoh = --servoh;
      if (servoh < servohLimitLow)
      {
        servoh = servohLimitLow;
      }
    }
    else if (avl < avr)
    {
      servoh = ++servoh;
      if (servoh > servohLimitHigh)
      {
        servoh = servohLimitHigh;
      }
    }
    else if (avl = avr)
    {
      delay(5000);
    }
    horizontal.write(servoh);
  }

  delay(dtime);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1819056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

加码多肤色影像技术 这是传音找到的“出海利器“?

全球化时代&#xff0c;市场竞争愈演愈烈&#xff0c;产品差异化已然成为了企业脱颖而出的关键。在黄、白肤色长期占据人像摄影主赛道的背景下&#xff0c;传音就凭借独一无二的多肤色影像技术走出非洲&#xff0c;走向了更广阔的新兴市场。 聚焦深肤色人群拍照痛点&#xff0c…

2024酒店IPTV云桌面系统建设方案

Hello大家好&#xff0c;我是点量小芹&#xff0c;这一年多的时间一直在分享实时云渲染像素流相关的内容&#xff0c;今天和大家聊聊酒店IPTV云桌面电视系统解决方案&#xff0c;或者有的朋友也会称之为IPTV服务器。熟悉小芹的朋友知道&#xff0c;IPTV软件系统是我们一直在推的…

C++迈向精通:当我尝试修改虚函数表

尝试修改虚函数表 本期纯整活儿好吧&#xff01;&#xff01;&#xff01;&#xff01; 初衷 有一天我突然开始好奇虚函数表是否真的存在&#xff0c;于是我开始想是否能够从C中查看或者调用虚函数表中的内容。&#xff0c;于是有了下面的操作。 操作过程 起初我并没有思路…

gridview的模板按钮如何判断用户点击的是哪一行

在asp.net的 GridView 控件中&#xff0c;判断用户点击的是哪一行通常可以通过处理 GridView 的 RowCommand 事件来实现。RowCommand 事件会在 GridView 的每个按钮&#xff08;除非另有指定的CommandName&#xff09;被点击时触发&#xff0c;并且事件参数中包含了足够的信息来…

基于redis的分布式锁

一、redis分布式锁基本信息 1.详细讲解&#xff1a; Redis 分布式锁是一种用于控制分布式系统中多个进程对共享资源的并发访问的机制。通过 Redis 的原子操作和过期时间功能&#xff0c;可以实现一个简单而有效的分布式锁。接下来&#xff0c;我们将详细介绍其工作原理、基本…

杨氏矩阵和杨辉三角的空间复杂度较小的解题思路

文章目录 题目1 杨氏矩阵题目2 杨辉三角 题目1 杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 思路: 我们可以通过题目…

springboot SSM 宠物医院管理系统(源码+论文)

绪论 1.1 计算机管理信息系统的发展情况 1958 年美国首先提出了 “管理信息系统 ”&#xff08;即 MIS&#xff1a;Management Information Systems&#xff09;&#xff0c;从而也引出了另外一个概念 ——“管理信息系统 ”。综合其多种定义以及根据在实际中的应用&#xff…

C语言| 数组

直接定义一个数组&#xff0c;并给所有元素赋值。 数组的下标从0开始&#xff0c;下标又表示数组的长度。 【程序代码】 #include <stdio.h> int main(void) { int a[5] {1, 2, 3, 4, 5}; int i; for(i0; i<5; i) { printf("a[%d] %d\…

HSP_08章 断点调试

P100 断点调试 1. 基本介绍 一个实际场景 在开发中&#xff0c;新手程序员在查找错误时&#xff0c;这时有经验的程序员就会提示&#xff0c;可以用断点调试&#xff0c;一步一步的看源码执行的过程, 从而发现错误所在。 断点调试介绍 -基本介绍 2. 函数的调试

在不使用js在情况下只用css实现瀑布流效果

使用到的是grid 布局&#xff0c;需要注意的是grid-template-rows: masonry; 目前只有Firefox 浏览器支持这个效果&#xff0c;而且还是一个实验性属性需要在设置里面开发实验性选项才行。 实例 <!DOCTYPE html> <html> <head><title>Document</ti…

某国资集团数据治理落地,点燃高质量发展“数字引擎”

​某国有资产经营控股集团为快速提升集团的内控管理能力和业务经营能力&#xff0c;以数字化促进企业转型的信息化建设势在必行。集团携手亿信华辰开启数据治理项目&#xff0c;在数据方面成功解决“哪里来、怎么盘、怎么管、怎么用”的问题&#xff0c;不断推动企业数字化转型…

焦化行业排放平台简介

在当今社会&#xff0c;环保事业日益受到人们的关注。焦化行业作为重要的工业领域之一&#xff0c;其排放问题一直是环保工作的重点。为了有效控制焦化行业的排放&#xff0c;实施焦化行业排放平台成为了必不可少的措施。朗观视觉小编将详细探讨焦化行业排放平台的实施范围&…

vue技巧(十)全局配置使用(打包后可修改配置文件)

1、背景 vue打包目前主流用的有webpack和vite两种&#xff0c;默认用的webpack。&#xff08;二者的区别大家可以各自上网查&#xff0c;我没用过vite&#xff0c;所以不过多介绍&#xff09;vue通过webpack打包后&#xff0c;源码会被压缩&#xff0c;但一些关键配置可…

YOLOv10在RK3588上的测试(进行中...)

1.代码源 国内镜像站在gitcode。这个镜像站也基本上包含了github上常用项目的镜像。然后它的主发布源在这里&#xff1a; GitCode - 全球开发者的开源社区,开源代码托管平台 yolov10是清华主导做的... 然后&#xff0c;在维护列表里看到了这个&#xff1a; 2024年05月31日&am…

前端项目打包部署

打包 vue-cli脚手架的前端项目&#xff0c;点击npm脚本中的第二条编译命令&#xff0c;即可将项目编译&#xff0c;生成一个dist的文件夹&#xff0c;里面存放的就是编译好的前端项目文件&#xff0c;没有脚手架就在终端敲击npm run build命令编译前端项目 部署 Nginx 介绍:…

centos7 最简单方式安装xfce 4桌面环境

本快速指南将介绍如何在CentOS 7上安装Xfce桌面&#xff0c;该桌面将提供用于Linux系统的GUI。 Xfce是一个用于Unix之类的轻量级桌面环境&#xff0c;类似于操作系统&#xff0c;其目标是快速而又节省系统资源。 首先&#xff0c;我们需要配置EPEL存储库&#xff0c;因为这是…

Calibre版图验证工具调用_笔记

Siemens EDA Calibre版图验证工具调用 采用Cadence Virtuoso Layout Editor直接调用Siemens EDA Calibre工具需要进行文件设置&#xff0c; 在用户的根目录下&#xff0c;找到.cdsinit文件&#xff0c; 在文件的结尾处添加以下语句即可&#xff0c;其中&#xff0c;calibre.skl…

Kafka多维度调优

优化金字塔 应用程序层面 框架层面&#xff08;Broker层面&#xff09; JVM层面 操作系统层面 应用程序层面&#xff1a;应当优化业务代码合理使用kafka&#xff0c;合理规划主题&#xff0c;合理规划分区&#xff0c;合理设计数据结构&#xff1b; 框架层面&#xff1a;在不…

全面了解性格测试:探索你的内在世界

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 全面了解性格测试&#xff1a;探索你的内在世界 什么是性格测试&#xff1f; 定义和概念 &#x1f9e0; …

2006-2024年款别克君越维修手册和电路图资料更新

经过整理&#xff0c;2006-2024年款别克君越&#xff08;含君越混动版&#xff09;全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针…