Лазеры
Если ваши синие бутылки с водой похожи на мои, они прозрачные.
Вот что я бы попробовал сначала:
Я взял бы дешевый лазер и светил светом через бутылку. Я бы направил лазер через короткий аккорд - не направленный прямо через середину бутылки; возможно 1/8 поворота налево от центра.
-------
L../.......\..........S1
/ \
| o | S2
\ /
\ /
-------
top-down view
Когда бутылка пуста, лазерный луч будет проходить прямо через бутылку - я бы поставил туда один фотодатчик S1.
Когда бутылка не совсем пустая, лазерный луч будет сгибаться ( преломляться ) - для избыточности я бы поставил туда другой фотодатчик S2.
Пока Arduino видит, что лазер поражает только S2, в бутылке все еще есть немного воды, по крайней мере, до уровня лазера - включите зеленый свет.
Что-нибудь еще - обнаружение света только на S1, или ничего не обнаруживается ни на одном датчике, либо обнаружение света на обоих датчиках (да, это может произойти) - что-то не так, лучше Arduino выключить зеленый свет и включить на красный свет.
Я бы начал с самой простой вещи, которая могла бы работать . Если мне повезет, это может сработать. Если нет, то есть много маленьких хитростей, чтобы получить свет, куда вы хотите, чтобы он шел. Есть также много хитростей для того, чтобы блокировать солнечный свет и т. Д. Идти туда, куда вы этого не хотите. Маленькие черные трубки, красные пластиковые фильтры, пульсирующий лазер на нескольких кГц, коллимирующие линзы, фиксированные усилители и т. Д.
Кажется, есть много уроков, которые описывают, как обнаружить лазер с помощью Arduino - см.
(Это, вероятно, будет работать так же хорошо со светодиодом средней мощности или «инфракрасным светодиодом» и некоторой тщательной оптической фокусировкой и выравниванием. Но - лазеры!)