цифровая электроника
вычислительная техника
встраиваемые системы

 

Делаем следящий за светом цветок на основе Arduino

Автор: Mike(admin) от 4-04-2017, 08:35

Данный проект для Arduino позволит создать «биомиметический» или вдохновленный биологией цветок, который следует за источником света. Вы, наверное, замечали такое поведение у своих комнатных растений. Растения требуют солнечного света для своего роста, а «гелиотропные» или светоотслеживающие цветы обращаются к солнцу в течение дня, чтобы они поглощали как можно больше света. Этот процесс вдохновил многих разработчиков биомиметических технологий. В некоторых солнечных панелях используется подобная система, поэтому панели всегда находятся под прямыми солнечными лучами в течение дня.


Arduino и цветок

Устройство проекта сравнивает значения двух светочувствительных датчиков, чтобы определить, где находится свет, а затем поворачивает серводвигатель, чтобы вращать цветок. Для проекта понадобятся плата Arduino, серводвигатель, два фоторезистора, два резистора 1 КОм, конденсатор, 100 мкФ, батарейка 9 В, провода, сосуд для самодельного цветка, бумага, ножницы, клей и немного фантазии для создания внешнего вида цветка. Для своего вдохновения можно, например, купить букет на http://bazacvetov72.ru/katalog/bukety-svadebnye.html с круглосуточной доставкой на дом, работу, ресторан. Это букеты с оригинальным авторским оформлением и эксклюзивные дизайнерские композиции.


Для того, чтобы устройство функционировало, нужно собрать схему, приведенную ниже. Основные моменты необходимо протестировать на макетной плате, затем собирать само изделие.


Arduino и цветок схема

Два фоторезистора разместите подальше друг от друга, чтобы цветок смог однозначно определить присутствие света в том или ином месте. Ниже приведен код (скетч) для Arduino.



#include <Servo.h>

Servo myServo;

int const sensorPinLeft = A1;	// аналоговый вход A0
int const sensorPinRight = A0;	// аналоговый вход A1
int sensorValLeft; // переменная для хранения значений левого фоторезистора
int sensorValRight; // переменная для хранения значений правого фоторезистора
int sensorDiff;
int angle = 0; // переменная для хранения значений положения сервомотора

void setup() {
  myServo.attach(9);	        
  Serial.begin(9600);	
}

void loop() {
  sensorValLeft = analogRead(sensorPinLeft);
  sensorValRight = analogRead(sensorPinRight);
  
  sensorDiff = sensorValRight - sensorValLeft; 
  
  angle = map(sensorDiff, -500, 500, 0, 179);	//угол представляет собой значение датчика, смасштабированное в промежуток 0-179
  myServo.write(angle);
  
  Serial.print("sensorDiff: ");
  Serial.println(sensorDiff);
  Serial.print("angle: ");
  Serial.println(angle);
 
  delay(15);
}



Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий