I have a device power by arduino nano atmega328. The idea of this HW is to detects dropped seed (corn, oil bean etc.) and to count it.
I wrote initial code, but id does not work in an expected way. it increments one count "channel" (I have 8 pairs of IR diodes 3mm) automatically, and passing it does not detect.
Here is the code maybe, someone has some similar experience and maybe help me to refactor the code.
#include<wire.h>
#include<Adafruit_SSD1306.h>
int irPin1 = 1;
int irPin2 = 2;
int irPin3 = 3;
int irPin4 = 4;
int irPin5 = 5;
int irPin6 = 6;
int irPin7 = 7;
int irPin8 = 8;
int count1,count2,count3,count4,count5,count6,count7,count8, count = 0;
boolean state = true;
void setup(){
Serial.begin(9600);
}
void loop(){
if(!digitalRead(irPin1) && state)
{
count1++;
state = false;
Serial.print("count1: ");
Serial.println(count1);
delay(200);
}
if(digitalRead(irPin1))
{
state=true;
delay(100);
}
if(!digitalRead(irPin2) && state)
{
count2++;
state = false;
Serial.print("count2: ");
Serial.println(count2);
delay(200);
}
if(digitalRead(irPin2))
{
state=true;
delay(100);
}
if(!digitalRead(irPin3) && state)
{
count3++;
state = false;
Serial.print("count3: ");
Serial.println(count3);
delay(200);
}
if(digitalRead(irPin3))
{
state=true;
delay(100);
}
if(!digitalRead(irPin4) && state)
{
count4++;
state = false;
Serial.print("count4: ");
Serial.println(count4);
delay(200);
}
if(digitalRead(irPin4))
{
state=true;
delay(100);
}
if(!digitalRead(irPin5) && state)
{
count5++;
state = false;
Serial.print("count5: ");
Serial.println(count5);
delay(200);
}
if(digitalRead(irPin5))
{
state=true;
delay(100);
}
if(!digitalRead(irPin6) && state)
{
count6++;
state = false;
Serial.print("count6: ");
Serial.println(count6);
delay(200);
}
if(digitalRead(irPin6))
{
state=true;
delay(100);
}
if(!digitalRead(irPin7) && state)
{
count7++;
state = false;
Serial.print("count7: ");
Serial.println(count7);
delay(200);
}
if(digitalRead(irPin7))
{
state=true;
delay(100);
}
if(!digitalRead(irPin8) && state)
{
count8++;
state = false;
Serial.print("count8: ");
Serial.println(count8);
delay(200);
}
if(digitalRead(irPin8))
{
state=true;
delay(100);
}
count= count1+count2+count3+count4+count5+count6+count7+count8;
}
I work in platformIO.