Ардуино нано + APDS-9930
- Войдите на сайт для отправки комментариев
Сб, 14/07/2018 - 23:29
Задача:
проведение рукой на 10-15 см (значение 255-500 в настройках датчика)
один раз - включается один светодиод
два раза - включается второй светодиод
три раза - все выключается
Нужен скетч. Можно доработать тот, что с прерыванием в библиотеке.
Железо все есть и уже собрано на макетке. подводишь рукой и зажигается 13-й на секунду с небольшим.
код ниже из примеров в библиотеке
/**************************************************************** ProximityInterrupt.ino APDS-9930 Ambient light and proximity sensor Davide Depau December 11, 2015 https://github.com/Davideddu/APDS9930 Shawn Hymel @ SparkFun Electronics October 24, 2014 https://github.com/sparkfun/APDS-9930_RGB_and_Gesture_Sensor Tests the proximity interrupt abilities of the APDS-9930. Configures the APDS-9930 over I2C and waits for an external interrupt based on high or low proximity conditions. Move your hand near the sensor and watch the LED on pin 13. Hardware Connections: IMPORTANT: The APDS-9930 can only accept 3.3V! Arduino Pin APDS-9930 Board Function 3.3V VCC Power GND GND Ground A4 SDA I2C Data A5 SCL I2C Clock 2 INT Interrupt 13 - LED Resources: Include Wire.h and APDS9930.h Development environment specifics: Written in Arduino 1.6.5 Tested with Arduino Uno and Mega This code is beerware; if you see me (or any other SparkFun employee) at the local, and you've found our code helpful, please buy us a round! Distributed as-is; no warranty is given. ****************************************************************/ #define DUMP_REGS #include <Wire.h> #include <APDS9930.h> // Pins #define APDS9930_INT 2 // Needs to be an interrupt pin #define LED_PIN 13 // LED for showing interrupt // Constants #define PROX_INT_HIGH 600 // Proximity level for interrupt #define PROX_INT_LOW 0 // No far interrupt // Global variables APDS9930 apds = APDS9930(); uint16_t proximity_data = 0; volatile bool isr_flag = false; void setup() { // Set LED as output pinMode(LED_PIN, OUTPUT); pinMode(APDS9930_INT, INPUT); // Initialize Serial port Serial.begin(9600); Serial.println(); Serial.println(F("------------------------------")); Serial.println(F("APDS-9930 - ProximityInterrupt")); Serial.println(F("------------------------------")); // Initialize interrupt service routine attachInterrupt(0, interruptRoutine, FALLING); // Initialize APDS-9930 (configure I2C and initial values) if ( apds.init() ) { Serial.println(F("APDS-9930 initialization complete")); } else { Serial.println(F("Something went wrong during APDS-9930 init!")); } // Adjust the Proximity sensor gain if ( !apds.setProximityGain(PGAIN_2X) ) { Serial.println(F("Something went wrong trying to set PGAIN")); } // Set proximity interrupt thresholds if ( !apds.setProximityIntLowThreshold(PROX_INT_LOW) ) { Serial.println(F("Error writing low threshold")); } if ( !apds.setProximityIntHighThreshold(PROX_INT_HIGH) ) { Serial.println(F("Error writing high threshold")); } // Start running the APDS-9930 proximity sensor (interrupts) if ( apds.enableProximitySensor(true) ) { Serial.println(F("Proximity sensor is now running")); } else { Serial.println(F("Something went wrong during sensor init!")); } #ifdef DUMP_REGS /* Register dump */ uint8_t reg; uint8_t val; for(reg = 0x00; reg <= 0x19; reg++) { if( (reg != 0x10) && \ (reg != 0x11) ) { apds.wireReadDataByte(reg, val); Serial.print(reg, HEX); Serial.print(": 0x"); Serial.println(val, HEX); } } apds.wireReadDataByte(0x1E, val); Serial.print(0x1E, HEX); Serial.print(": 0x"); Serial.println(val, HEX); #endif } void loop() { // If interrupt occurs, print out the proximity level if ( isr_flag ) { // Read proximity level and print it out if ( !apds.readProximity(proximity_data) ) { Serial.println("Error reading proximity value"); } else { Serial.print("Proximity detected! Level: "); Serial.println(proximity_data); } // Turn on LED for a half a second digitalWrite(LED_PIN, HIGH); delay(500); digitalWrite(LED_PIN, LOW); // Reset flag and clear APDS-9930 interrupt (IMPORTANT!) isr_flag = false; if ( !apds.clearProximityInt() ) { Serial.println("Error clearing interrupt"); } } } void interruptRoutine() { isr_flag = true; }
wrk.sadman@gmail.com
здравствуйте, проект интересный, пишите - обсудим , вот почта maslachenko767@mail.ru На руках есть множество компонентов для вашей задачи
Ну и что тут сложного? 500 рублей. skif7361@yandex.ru
Прошу простить, неверно изложил вечером требуемый алгоритм.
Проводишь один раз включается первый светодиод
проводишь второй раз первый светодиод выключается, но включается второй светодиод.
проводишь третий раз - все выключается.
Далее все повторяется.
(хотя также думал, что и колиество взмахов за сессию управления можно использовать, но представил, что как это смешно выглядеть будет.)
Бюджет в 500 рублей согласен, хоть и жабится, так как планировал сам разобраться. Но вот предлагаю так.Из бюджета beerware (по 100) двум участникам проекта. И 3 beerware (300) за лучший код. Предлагаю открытое или закрытое голосование. Поощрение строго на телефон без процентов.
P.S. просто дорисую проект, если интересно: выход на оптоизоляторы MOC3041 и симисторы BTA16? комутируемые 220 в. Питание логики 5 вольт с зарядного адаптера.
Вам веселые старты хочется за 500р посмотреть или получить решение?
В любом случае решение будет получено не тольковесело, но и интересно и благодарно. А я пока готовлю страницу проекта на гугл диске, которая будет доступна всем участникам.
Ну, такие заказчики тут уже были. Исчезнуть без оплаты для них - как конфету съесть.
Интересно даже, что если участников будет 10 - которым двум станете по 100р отстегивать?
Я описал условия и отправил каждому откликнувшемуся в личном письме. Бюджет 500 р. Предположительно (100+100+300). Вот как раз и выдалась возможность проверить мою порядочность. Если участников будет больше - добро пожаловать. Каждый получит интересный опыт и может что нового узнает. Каждому посодействовавшему будет выслана ссылка на дневник проекта. Основная премия будет выплачена за лучший код. Мало того я сам являюсь участником проекта. И шаг за шагом, по мере возможности выделять время, двигаюсь к выполнению задачи. Но с ардуино пока знаком всего несколько дней как получил модули. Потому мне интересен и знания и опыт и содействие других людей. И решив выставить тендер, я уважаю их увлечение, труд и время.
Не похоже, что труд и время как-то тут уважаются. А условия тендера с учетом того, что заказчик может объявить победителем себя, а или легко отозвать платеж на телефон, как ошибочный, выглядят как развод лохов со сбором телефонных номеров с неизвестной целью ))
Вобщем, давно бы уже свое решение получили, но, похоже что вам просто интересен процесс.
Чё за бомжелотерея невиданной щедрости? Тс, давай больше участников, будет еще веселее, на порядок. Всем по десятке, а победителю аж цельный полтинник. А я за 30 копеек тоже могу быть полезным для твоего проекта, размещу ссылки на него на сайтах таждикистана и узбекистана - отбоя от сеньоров девелоперов не будет. Ну что по рукам?
Все эти наши обсуждения оффтоп, за которые высказывают модераторы. Но в последнее свое замечание по данному обсуждению верю-неверю добавлю. Процесс это всегда интересно. Ну а если кто и обманыывает? Что из за этого лишать себя любимого занятия? Пару тройку дней я дал свой проект герба одной организации. Потратил 5 часов, создав красивый герб.А руководством был принят какой то фаллоимитаор из звездных войн. И что? Я просто стал ещё лучше делать модели. И уж тем более не брошу это все.
Вы уверены, что внимательно читали условия? И причем тут таджикистан и узбекистан? И распределение средств вполне корректно описаны.
Ну а как только у меня будет эффективный код. Я оплачу вознаграждение и закрою проект.
Ну да, ты оказался прав - из-за просадки курса рубля даже они умывают руки. К сожалению, вынужден констатировать что Таджикистан и Узбекистан уже вне игры. Но ванька-альтруист тру программист еще где-то отсыпается после вчерашнего пира на 90коп. Еще рано, погоди немного, щас он проснется, в макдаке из урн позавтракает и на халявном вайфае отзовется на твое щедрое предложение.
рабочий код от 100$
webserpantin gmail(com)
Упс, вас на с так много всяких
Да это не ТС, это наша коллега с Тайваня.
Благодарность пока не с чего отстегивать - сегодня в мусорках одни пустые бутылки. Сейчас вот закончу завтрак воробъем и в поход двину. Терять полдня на переписку о том, как следует бессмысленно проводить короткое северное лето, чтобы в конце увидеть картинку фаллоимититора, считаю излишне расточительным в наше нелегкое время.
Есть "гениальная" идея. Пока все спят, написать три скетча и ... ну а дальше вы поняли.
Вот и Силиконовая долина подключилась! Большой привет Дональду и Билу! (это я старбиту)
Светодиоды на д7 и д8, только что впаял. Написание в эту тему, наверняка больше времени требует и безрезультатно, чем сделать и отработать код. Но решение правильное написать код и забрать всю премию, пока другие спят, или выдумывают пОсты. Поститься хорошо, полезно для фигуры.
ТС, ты ошибаешься. Отписаться в эту тему - заработать хорошее настроение в солнечное летнее воскресное утро. А про написание кода - странно слышать когда о временных затратах на написание кода судит тот, кто этого сделать не может. А страрбит красава кешно.
Все будет хорошо. Все отлично получится. Над написанием кода я также работаю. В перерывах между косьбой травы, купанием в бассейне, пивом, зеленым горошком с дачной грядки. Ну чуть подольше поработаю. Мне оченьинтересно, хотя и не так быстро оказывается. Ничего страшного. Месяц модули ждал. Пережил же. Но кое какие исходники уже научился дополнять и перемонтировать. И мне кажется, что выполнение именно этой задачи, не столь грандиознойна самом деле, вполне по силам человеку имевшему дело, по крайней мере, с простым выключателем на простой кнопке на этом типе микроконтроллера за вполне разумный отрезок времени.
Весело тут :)
Не, ну если бы я гарантировано получил 100 рублей... А так есть шанс потратить время и не попасть в двойку избранных.
Есть "гениальная" идея. Пока все спят, написать три скетча и ... ну а дальше вы поняли.
За каждый аж по целых 100 рублей получить! Крутяк! Пиши!
Не понял о каких трёх вариантах может идти речь при реализации программного двоичного счетчика
Не понял о каких трёх вариантах может идти речь при реализации программного двоичного счетчика
Единица, ноль и высокоимпедансное состояние. Вы не знали?
Не понял о каких трёх вариантах может идти речь при реализации программного двоичного счетчика
Единица, ноль и высокоимпедансное состояние. Вы не знали?
Ааааа )))
Благодарю всех участников темы. Тема закрыта. Вопрос решен.
...и шарик попадает на сектор "зеро".
...и шарик попадает на сектор "зеро".
Тут все надо мной смеялись, что я скоро за программы доплачивать начну. Так вот, я предложил заказчику доплатить. Он и на доплату отказался
Мало давал, наверное, в следующий раз больше бюждет выделяй.
Сколько не выделяй.
выключатель на датчике APDS-9930.
Реализовано для одного канала самостоятельно . На данный момент устраивает.
https://youtu.be/65M-5aO8kRE
Ну если запустить пример из библиотеки - это называется реализовать самостоятельно - тогда вы многого достигли. Дня три сидели? Вы хоть поняли, почему оно работает?
Если мне понадобятся учителя я заведу тему Ищу учителя, и там я буду рассказывать, что я понял в коде, а что не понял.
Электронный модуль целевого устройства выполняет минимальные мои требования.
На данный момент этого достаточно
Остальное со временем, если будет нужно, дорешаю.
Для данного форума именно моя данная тема завершена.
Успехов!
Судя по мигалке при удержании руки над сенсором основная проблема не решена.
Если мне понадобятся учителя я заведу тему Ищу учителя, и там я буду рассказывать, что я понял в коде, а что не понял.
Электронный модуль целевого устройства выполняет минимальные мои требования.
На данный момент этого достаточно
Остальное со временем, если будет нужно, дорешаю.
Для данного форума именно моя данная тема завершена.
Успехов!
Ну если что - обращайтесь. Я в ваши 12 лет тоже был максималистом, думал, что всё сам знаю. Потом повзрослел. И начал учиться у других
Если мне понадобятся учителя я заведу тему Ищу учителя, и там я буду рассказывать, что я понял в коде, а что не понял.
Электронный модуль целевого устройства выполняет минимальные мои требования.
На данный момент этого достаточно
Остальное со временем, если будет нужно, дорешаю.
Для данного форума именно моя данная тема завершена.
Успехов!
Ну если что - обращайтесь. Я в ваши 12 лет тоже был максималистом, думал, что всё сам знаю. Потом повзрослел. И начал учиться у других
нет показать парню, как делать программные триггера )))
Та я пытался, предлагал помочь, научить, и тут и по почте, даже доплатить обещал. Он категорически отказывается. Говорит - сам научусь. Запустил кое как программку из библиотеки и рад - получилось. Говорю - давай пять строчек допишем и будет то что ты хотел. Отвечает - меня пока и так устраивает. Ну что я ещё могу сделать?
Та я пытался, предлагал помочь, научить, и тут и по почте, даже доплатить обещал. Он категорически отказывается. Говорит - сам научусь. Запустил кое как программку из библиотеки и рад - получилось. Говорю - давай пять строчек допишем и будет то что ты хотел. Отвечает - меня пока и так устраивает. Ну что я ещё могу сделать?
"Бить нельзя их, а не вникнут - ОБЪЯСНЯТЬ!" В.Высоцкий
ЗЫ каюсь, преследовал свой шкурный интерес, посмотреть как это делают профессионалы )))
Бьют детей?