Мазмуну:

Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу: 4 кадам
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу: 4 кадам

Video: Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу: 4 кадам

Video: Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу: 4 кадам
Video: Arduino Color Detection and LED Output 2024, Ноябрь
Anonim
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу
Зымсыз Arduino Light-Matching LED Lamp Photoresistor колдонуу

Бул үйрөткүч Arduino Unos жана фоторезисторду колдонуп, жөнөкөй зымсыз жарык сезүүчү LED чыракты куруу үчүн зарыл болгон кадамдарды майда-чүйдөсүнө чейин түшүндүрөт. Бул түзмөк үчүн мүмкүн болгон тиркеме реалдуу убакыт режиминде сырткы жарык шарттарына дал келген, жасалма күн нуру жок терезелери жок бөлмөнү жарыктандыруу болмок. Кел, баштайлы!

Берүүлөрдүн тизмеси:

Arduino Uno x2

NRF24L01 Wireless transceiver x2 (Милдеттүү эмес - NRF24L01 рюкзак x2)

TIP120 дарлингтон транзистору

Photoresistor

5мм диоддор x3

Pushbutton

100 Ом каршылыгы x3

10k Ом резистору x3

Ар кандай Jumper Wires

1 -кадам: NRF24L01 модулдарын жана микросхемасын зымдоо

NRF24L01 модулдарынын жана схемасынын зымдары
NRF24L01 модулдарынын жана схемасынын зымдары
NRF24L01 модулдарынын жана схемасынын зымдары
NRF24L01 модулдарынын жана схемасынын зымдары
NRF24L01 модулдарынын жана схемасынын зымдары
NRF24L01 модулдарынын жана схемасынын зымдары

Бул долбоордо бир Arduino баскыч басылганда фоторезистордон жарык деңгээлиндеги маалыматтарды жөнөтүүчү болуп иштейт. Башка Arduino алуучу катары кызмат кылат, бул маалыматты алып, аны LEDге сигналга айландырат. Биринчи сүрөттө өткөргүч диаграммасы, экинчисинде алуучу көрсөтүлгөн.

Эскертүү: менин долбоорумдун сүрөттөрүндө сиз NRF24L01 трансиверлери башка ПХБга тиркелгенин байкайсыз. Бул кубаттуулукту жөнгө салуучу функцияларды аткаруучу трансиверлер үчүн рюкзак модулу. Электр өткөргүчтөрүн жеңилдетүүдөн тышкары, бул рюкзактар NRF24L01 үчүн кубаттуулукту жөнгө салып, 5В электр булагын колдонууга мүмкүндүк берет. Мен түшүнүктүү болуш үчүн диаграммамда бул рюкзактардан баш тарттым.

(Эгерде сиз рюкзактарды колдонууну чечсеңиз, бул шилтемеден NRF24L01 акциясына шилтеме менен пин жерлеринин диаграммасын караңыз).

Төмөндө схеманын PDF көчүрмөсү, чоңойтуу/деталдуу көрүү үчүн.

2 -кадам: Бергичти коддоо

Акыркы кадам - коддоо. NRF24L01 модулдары менен колдонуу үчүн RadioHead китепканасын же ага барабар китепкананы орнотушуңуз керек.

Бул долбоор үчүн Arduinos өткөргүч жана кабыл алуучу ар биринде башка кодду колдонот. Бул жерде өткөргүчтүн коду:

Мен ошондой эле ыңгайлуулук үчүн.ino файлын (NRF_Send) тиркеп койдум.

#кошуу

#кошуу

RH_NRF24 nrf24; // nrf24 катары трансиверди баштоо

int баскычы = 5; // Кнопка жана фоторезистор үчүн пин маанилерин коюу

int pResistor = A0; int мааниси = 0; // Жарыктын мааниси 0-1023

жараксыз орнотуу ()

{Serial.begin (9600); pinMode (баскыч, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Модулдун инициализациясы Serial.println ("init ишке ашпай калды") ишке ашпай калса, колдонуучуну эскертет; // Демейки баштапкыдан кийин 2.402 ГГц (2 -канал), 2Мбит/ сек, 0дБм болсо (! Nrf24.setChannel (1)) Serial.println ("setChannel ишке ашпай калды"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ишке ашпай калды"); }

боштук цикл ()

{if (digitalRead (button)) {// Баскыч басылганда билдирүү жөнөтүү value = analogRead (pResistor); // Фоторезистордун маанисин окуу (0-1023) uint8_t маалыматтары = {мааниси}; // nrf24.send (data, sizeof (data)) жарык маанисин камтыган "data " деп аталган массивди коет; // Массивди nrf24.waitPacketSent () алуучуга жөнөтүү; // Пакет Serial.println ("Light Value:" +String (value)) жөнөтүлгөнчө күтө туруңуз; // Жарык маанисин сериялык мониторго басып чыгарыңыз}}

3 -кадам: Алуучуну коддоо

Кабыл алуучу үчүн код RadioHead китепканасын да колдонот.

#кошуу

#кошуу

RH_NRF24 nrf24;

int LEDPin = 3;

int мааниси = 0; // Жарыктын мааниси 0-1023

жараксыз орнотуу ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init ишке ашпай калды"); // Демейки баштапкыдан кийин 2.402 ГГц (2 -канал), 2Мбит/ сек, 0дБм болсо (! Nrf24.setChannel (1)) Serial.println ("setChannel ишке ашпай калды"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ишке ашпай калды"); }

боштук цикл ()

{// uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN] билдирүүсүн күтө туруңуз; // Алынган билдирүүнү "buf " uint8_t len = sizeof (buf) деп аталган массив катары сактаңыз; // buf өлчөмүн "len" катары сактоо (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Билдирүүнү 200 миллисекундка же бүт билдирүү алынганга чейин алат {value = buf [0]; // Маанини buF биринчи индексине коёт, бул int photorezistor analogWrite (LEDPin, map (value, 0, 1023, 0, 255)); // PWM пинди LED жарыктыгы үчүн 0-255 ортосундагы масштабдуу маанини чыгаруу үчүн орнотот Serial.println (String (маани)); } analogWrite (LEDPin, 0); }

4 -кадам: БОЛДУ

Ар кандай жарык деңгээлдери менен ойноп, LEDлердин аларга дал келишин көрүүдөн ырахат алыңыз! Фоторезистор кээде татаал болушу мүмкүн жана локализацияланган жарык булагы бар караңгы бөлмөдө эң жакшы иштейт (бирок сыртта күн менен да иштесе болот).

Сунушталууда: