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

 

Делаем следящий за светом цветок на основе 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




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

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

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