Я что-то не очень понял, о чем вы тут разговариваете. У меня есть датчик щелевой/п-образный или как там его... чтобы ничего нигде не покупать - решил использовать его. Как я понял - принцип работы: Лампочка и приемник излучения. У меня механизм: Вращается шестеренка, датчик считает зубья, которые проходят между его излучателем и приемником. Как отсчитал нужное количество - сработало реле/сигнализация/хоть что-то, сбрасывается счетчик, отсчет идет по новой. Подключал на 5В, в инструкции прочитал, что он на 5...12 вольт.
Т.е. у меня скачат значения 0-400, я использую if и сравниваю текущий сигнал с нулем: 0 - нет сигнала, все что больше 1 - есть сигнал? Или все сигналы более 1 математически превращать в единицу?
Что значит больше 1? Цифровой он либо 0 либо 1. Считать надо перепады от 0 к 1 или наоборот, это и есть один зуб. Для этого следует либо постоянно и быстро опрашивать датчик либо привязать его к аппаратному прерыванию и считать через него. Но еще надо иметь ввиду, что не слишком ровные края зуба могут давать "дребезг", я такое наблюдал я несколькими обтюраторами, приходилось давать программно.
Сначала покажите как вы подключили свой датчик. Чуйка мне подсказывает, что там фототранзистор, который нужно через резистор в несколько кОм подтянуть к плюсу питания. И с этого резистора снимать сигнал, который по уровням должен четко вам выдавать 0 и 1 в цифре (digitalRead). Если не так, то поверните сначала шестеренку так, чтобы перекрыть световой поток. Опросите свой датчик через analogRead и запишите какие значения выдаются. Затем уберите преграду и опять запишите что выдал датчик. Допустим, перекрытый выдал 30 а открытый выдал 400. Значит в скетче после аналогового чтения ставите проверку: если получили 30 и меньше, значит принимаем это как 0, если 400 и больше - принимаем как 1. По правильному, надо еще вводить гистерезис, то есть зону неопределенности, допустим 20 Тогда сравниваем с 30+20 и 400-20. Но вам для подсчета зубьев и так должно работать. Еще нервы может попортить дребезг сигнала во время перехода с темного в светлое и наоборот. Борятся разными методами - почитайте о дребезге кнопки.
Почему я не удивлен? Это риторический вопрос. Два состояния датчика. Падает свет и не падает свет. Привести эти параметры к логическим уровням и считать переходы аппаратным прерыванием. Уважаемый ostrov, 0 -400 у ТС - это... Наверно яблоки. И если яблок больше одного, то это килограмм
Нет, бывают еще недояблоки. Например, датчик выдаст 20, но это еще не яблоко. Так, готовимся стать яблоком когда датчик выдаст 100. Но мысль правильная - перевести показания в единицах датчика в логическое значение, основываясь на физическом эксперименте.
Причем здесь эксперимент? Достаточно просто взять характеристики датчика, характеристики привода (шестеренок) и скорость вращения, и нормально сформулировать задачу.
Вот даташит датчика. Предлагаю прервать дискуссию Мне нужно недельку на ознакомление с этими нюансами программирования
Скорость вращения переменная, характеристики привода думаю ни при чем. По конвейеру движется изделие, цепляет шестеренку и она вращается. Когда запускал тему у меня не было ни датчика, ничего. Сейчас, конечно, можно четче сформулировать задачу.
ТС уже показывал какие результаты выдает analogRead. И там совсем не 0 и 1023. Тем более, когда световой поток перекрывается частично.
М-да... Лихо... Причем здесь программирование (нюансы программирования схемы подключения на целую неделю аж), если нужно сначала понять как подключить транзисторный выход датчика? Может быть даже понять чем n-p-n отличается от p-n-p транзистора.
Мне кажется, что ТС просто воткнул выходной каскад датчика в пин. Одним концом на GND, другим к пину. Просто и легко.
К сожалению нет возможности заниматься изучением каждый день, да и схемотехника тоже важна. Я в теории понимаю, о чем тут речь идет, а как на практике это реализовать, знаний не хватает. Могу только шаблонами программ стандартными пользоваться, что-нибудь свое изобразить - пока непосильный труд, а нажного шаблона copy-past в сети не нашел.
И не найдете. Если за два с половиной года... Я в теории знаю как удалить аппендицит, но практику все же отдам врачу