Алматы, Казахстан

Pin-Up освещенности ARDUINO

В Pin-Up статье мы расскажем одатчике освещенности ARDUINO, где разберем еговиды, методы подключения и программирования. Но начать все-таки стоит с Pin-Up для чего он может пригодиться. В первую очередь, эти комплектующиеиспользуются в сигнализации. Такой тип сенсоровчувствует изменения внешнего фонана основе различныхфизических эффектов. Сразу сообщим, что их можно разделить надва Pin-Up датчик присутствия и датчик движения. Первый вариант очень чувствительный и способен различать даже мелкие перемещения в своей рабочей зоне (движения пальцев, взмах головы и т.д.). Второй же более грубый, реагирует на более серьезные изменения в пространстве. Данные различия очень полезны, когда требуется решить разные задачи, например, при созданииумного дома или smart device. Подобные устройства довольно сильно распространены (хоть и дороговаты) и входят в комплект Pin-Up домашней сигнализационной системы, но в их основе лежит именно то, о чем мы будем говорить далее.

Рассматриваемую электронику можно разбить на2 подвидапо способу ее Pin-Up а именно наИК сенсор и фоторезистор. Во втором случае используетсясветочувствительный элемент, которыйменяетсвоесопротивлениеприизмененииинтенсивностисветового фона.

Первый - основан натепловом излученииобъектов, что подразумеваетфункционирование даже в темноте. Это делает их крайневостребованными. Принцип работы ИК Pin-Up освещенности основан напирочувствительном элементе. Не будем подробно расписывать этот физический Pin-Up скажем лишь то, что при попадании на него инфракрасного излучения создается разность потенциалов, которую можно использовать в качестве информации.

Методикаподключения датчиков освещенности к ARDUINOPin-Up для всех типов. Они производятся с 4 ножками:ул. Сатпаева, 44- питание,А0- аналоговый выход,D0- Pin-Up По двум последним как раз и передается нужная для нас информация.A0дает возможность оценить интенсивность света в Pin-Upот 0 до Pin-Up а D0 - 0 или 1, то есть может показать только наличие Pin-Up фона. Естественно, мы покажем, как работать именно с1 вариантом, так как онболее информативен.

Pin-Up что аналогичное приспособление с фоторезистором тоже имеет 4 пина и механизм сборки электрической цепи и программирование будет таким же. Бывает, что у обоих видов сенсоров только3 контакта- это означаетотсутствие Pin-Up из A0 или D0, поэтому Pin-Up внимательны при заказе.

За образец возьмемИК Light Sensor TCRT5000и Pin-Up его к плате управления.

Отметим, что мы взялиактивный прибор: оно имеетизлучатель и приемник. Сначала изучим простую Pin-Up где научимся управлять сенсором иизвлекать из него данные. Сборка скетча вRobotON Studio:

Здесь мы присваиваем Pin-Up показания с устройства ивыводимихна экран каждую секунду. Приведем код, которыйсоставиланашаграфическая среда(здесь подключены лишние библиотеки, не обращайте Pin-Up

#define ARDUINO_NANO 1

#include <Servo.h>

#include <StepperMotor.h>

#include <DC_Motor.h>

#include <Ultrasonic.h>

int vvedite_imja;

void setup() {

Serial.begin(9600);

while(true) {

vvedite_imja = analogRead(0);

Serial.println(vvedite_imja);

delay(1*1000);

}

}

void loop () { }

С помощью нашего прибора даже можно различать Pin-Up Это демонстрируется в нашихуроках по робототехнике с Роборукой, которая должнахватать, например,только зеленый груз.


Пример скетчадля Pin-Up задания мы продемонстрируем ниже. Чтобы понять все досконально,советуемВампройтинашизанятия.

Сгенерированный код из RobotON Studio. Здесь создавались Pin-Up которые позволили сократить основную логику. В наших курсах по конструированию роботов Вы сможете найти все необходимое, чтобы разобраться в программе (видео, методические материалы).

#define ARDUINO_NANO 1

#include <Servo.h>

#include <StepperMotor.h>

#include <DC_Motor.h>

#include <Ultrasonic.h>

Servo baza;

int ugol_baza;

int ugol_kleshnja;

int ugol_kran;

int ugol_dopolnitelnij;

int napravlenie_dopolnitelnij;

int napravlenie_kran;

int napravlenie_baza;

int napravlenie_kleshnja;

Servo kleshnja;

Servo kran;

Servo dopolnitelnaja;

float visota;

float parametr_plavnosti;

float dopolnitelnij_ugol;

int osveshennost;

void setup() {

Nastrojki();

Serial.begin(9600);

while(true) {

Uvelichenie_ugla_bazi_do(90);

delay(1*1000);

osveshennost = analogRead(0);

Serial.println(osveshennost);

delay(0.1*1000);

Plavnoe_uvelichenie_visoti_pri_krane_90(8);

if(780 < osveshennost && osveshennost < Pin-Up {

Plavnoe_umenshenie_visoti_pri_krane_90(6);

delay(1*1000);

Plavnoe_uvelichenie_visoti_pri_krane_130(5);

delay(1*1000);

Umenshit_ugol_kleshni_do(40);

Plavnoe_uvelichenie_visoti_pri_krane_90(8);

delay(1*1000);

Umenshit_ugol_bazi_do(0);

delay(1*1000);

Uvelichit_ugol_kleshni_do(100);

delay(1*1000);

} else {

Umenshit_ugol_bazi_do(0);

delay(1*1000);

}

}

}

void Uvelichenie_ugla_bazi_do(int alfa) {

while(ugol_baza < alfa) {

ugol_baza = ugol_baza + napravlenie_baza;

baza.write(ugol_baza);

delay(0.01*1000);

}

}

void Nastrojki() {

parametr_plavnosti = 0.1;

ugol_baza = 0;

napravlenie_baza = 1;

ugol_kleshnja = 160;

napravlenie_kleshnja = 1;

ugol_kran = 90;

napravlenie_kran = 1;

ugol_dopolnitelnij = 90;

napravlenie_dopolnitelnij = 1;

osveshennost = 800;

visota = 0;

baza.attach(13);

kleshnja.attach(12);

kran.attach(10);

dopolnitelnaja.attach(11);

}

void Umenshit_ugol_kleshni_do(int alfa) {

while(alfa < ugol_kleshnja) {

ugol_kleshnja = ugol_kleshnja - napravlenie_kleshnja;

kleshnja.write(ugol_kleshnja);

delay(0.01*1000);

}

}

void Uvelichit_ugol_krana_do(int alfa) {

while(ugol_kran < alfa) {

ugol_kran = ugol_kran + napravlenie_kran;

kran.write(ugol_kran);

delay(0.01*1000);

}

}

void Uvelichit_ugol_dopolnitelnij_do(int alfa) {

while(ugol_dopolnitelnij < alfa) {

ugol_dopolnitelnij = ugol_dopolnitelnij + napravlenie_dopolnitelnij;

dopolnitelnaja.write(ugol_dopolnitelnij);

delay(0.01*1000);

}

}

void Umenshit_ugol_bazi_do(int alfa) {

while(ugol_baza > alfa) {

ugol_baza = ugol_baza - napravlenie_baza;

baza.write(ugol_baza);

delay(0.01*1000);

}

}

void Uvelichit_ugol_kleshni_do(int alfa) {

while(ugol_kleshnja < alfa) {

ugol_kleshnja = ugol_kleshnja + napravlenie_kleshnja;

kleshnja.write(ugol_kleshnja);

delay(0.01*1000);

}

}

void Umenshit_ugol_dopolnitelnij_do(int alfa) {

while(ugol_dopolnitelnij > alfa) {

ugol_dopolnitelnij = ugol_dopolnitelnij - napravlenie_dopolnitelnij;

dopolnitelnaja.write(ugol_dopolnitelnij);

delay(0.01*1000);

}

}

void Umenshit_ugol_kran_do(int alfa) {

while(ugol_kran > alfa) {

ugol_kran = ugol_kran - napravlenie_kran;

kran.write(ugol_kran);

delay(0.01*1000);

}

}

void Peremeshenie_po_visote_pri_krane_90(int santimetri) {

Pin-Up = (((30 * santimetri) + 210) / 4);

dopolnitelnaja.write(ugol_dopolnitelnij);

}

void Plavnoe_uvelichenie_visoti_pri_krane_90(float santimetri) {

Umenshit_ugol_kran_do(90);

while(visota < santimetri) {

visota = (visota + parametr_plavnosti);

dopolnitelnij_ugol = (((visota * 30) + Pin-Up / 4);

dopolnitelnaja.write(dopolnitelnij_ugol);

delay(0.01*1000);

}

}

void Plavnoe_umenshenie_visoti_pri_krane_90(float santimetri) {

Umenshit_ugol_kran_do(90);

while(visota > santimetri) {

visota = (visota + (-parametr_plavnosti));

dopolnitelnij_ugol = Pin-Up * 30) + 210) / 4);

dopolnitelnaja.write(dopolnitelnij_ugol);

delay(0.01*1000);

}

}

void Peremeshenie_po_visote_pri_krane_130(float santimetri) {

kran.write(130);

dopolnitelnij_ugol = (((20 * Pin-Up + 70)8);

dopolnitelnaja.write(dopolnitelnij_ugol);

}

void Plavnoe_uvelichenie_visoti_pri_krane_130(float santimetri) {

Uvelichit_ugol_krana_do(110);

while(visota < santimetri) {

visota = (visota + parametr_plavnosti);

dopolnitelnij_ugol = Pin-Up * 20) + 70)8);

dopolnitelnaja.write(dopolnitelnij_ugol);

delay(0.01*1000);

}

}

void Plavnoe_umenshenie_visoti_pri_krane_130(float santimetri) {

Uvelichit_ugol_krana_do(110);

while(visota > santimetri) {

visota = (visota + (-parametr_plavnosti));

dopolnitelnij_ugol = Pin-Up * 20) + 70)8);

dopolnitelnaja.write(dopolnitelnij_ugol);

delay(0.01*1000);

}

}

void loop () { }

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

Похожие статьи: