Станок для расчета количества резисторов.

yakish
Offline
Зарегистрирован: 17.11.2013

На днях решил зделать для своей работы необычный станок, чтоб считать сколько в пачке резисторов.  Вот такие резисторы. Хочу как зделать мотор крутит ленту и она проходит через стоящие снизу фотодиод, а сверху светодиод, получаеться в то время как появляеться отверстие возле резистора, открываеться фотодиод. Проблема в том что не могу зделать чтоб он именно считал сколько раз фоторезистор открылся сколько закрылся. А так фотодиод подключал к ардуино Mega 2560 фотодиод на аналоговом входе всё работает отлично. Прошу кто может помоч скажите в чём у меня проблема?

int sensePin = 3;
int ledPin = 10;
int niki;
int hi;
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); 
analogRead(3);
niki=0;
}
void loop()
{
int val = analogRead(sensePin);
val = constrain(val, 10, 65); // тут как я понимаю либо открыт 10, либо закрыт 65
if (val==65)
{
  hi=10;
}  
if (val==10&&hi==10)
{
  niki++; //ники это и есть счётчик
  hi=9;
}  
}

 

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

 Не ясно какой первоначальный уровень сигнала val при открытом и закрытом фотодиоде? Вообще зачем там constrain? Вот простой счётчик.

#define maxlow 200 //уровень максимального 0 (в попугаях)
#define minhigh 500 //уровень минимальной 1 (в попугаях) 
unsigned int counter, val;
boolean logiclevel,prevlevel;
void setup() {
Serial.begin(9600);
  }

void loop() {
  val=analogRead(A5);
 if (val <  maxlow)  logiclevel=0;
 if (val >  minhigh)  logiclevel=1; 
 if (prevlevel != logiclevel) {
 counter++; 
 prevlevel = logiclevel;
 Serial.println(counter);
 }
}

 

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

та готовую щелевую оптопару возьмите, там уже все включено. :)

yakish
Offline
Зарегистрирован: 17.11.2013

Michal, а если я куплю щелевую оптопару, какой код к ней использовать?