tre nastri trasporatatri

un salutto a tutti
come ho detto che mi sto riprendendo di nuovo la programmazzione i micro
non chiedo di farmi papa pronta ma di dare le dritte come fare e se esiste
un sketch dove posso vedere routine i studiare funzionamento.

di cosa si trata

ho usato rpm sketch e lo ampliato con altri ingressi
1, voglio fare che in assenza segnale mi scatta un allarme che
e collegato per tutti e tre ingressi ad es. se non ce segnale
scata allarme e mi fa lampeggi sull lcd alla stringa dedicata per quell ingresso
2, quando tutto funziona e io voglio fermare che si interompe funzionamento ,che
non scatta allarme fin che e fermo, quando interrutore ON continui a funzionare
3, quando ce allarme lo vedo come lampeggio lcd sulla sringa sistemo problema e faccio
reset e riprendo funzionamento

sono tre nastri che portano semi in secchettini e se non ci sono semi su uno dei nastri
che mi scatti un allarme

vi posto il code e fotto della scheda che per adesso e in sospeso e la devo ancora
modificare per discorso soprascritto
grazi in anticipo

const int frqPin = 2;                    //in Pin sensore sens1
const int frqPin1 = 3;                   //in Pin sensore sens2
const int frqPin2 = 4;                   //in Pin sensore sens3

const int oneSecond = 500;               //  Vreme 0,5 seconde tempo 0,5 sec

int frqPinState = LOW;
int frq = 0;
int prevFrqPinState = LOW;
int frqPinState1 = LOW;
int frq1 = 0;
int prevFrqPinState1 = LOW;
int frqPinState2 = LOW;
int frq2 = 0;
int prevFrqPinState2 = LOW;


unsigned long timer = 0;
unsigned long timer1 = 0;
unsigned long timer2 = 0;

#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27,16,2);
void setup(){
  //--------------------------------Start------------------------------------------
  lcd.init();
  lcd.backlight();
  lcd.begin(16, 2);
   delay(1000);                                    // Pauza 1 secund
  lcd.clear();
  Serial.begin(2400);
  pinMode(frqPin, INPUT_PULLUP);                  //Declared Pin 2 as Input
  pinMode(frqPin1, INPUT_PULLUP);                 //Declared Pin 3 as Input
  pinMode(frqPin2, INPUT_PULLUP);                 //Declared Pin 4 as Input
 
}

void loop()
{

    //=============================Sens1===========================================
  frqPinState = digitalRead(frqPin);                 //Reads State of Input Pin
  if (frqPinState == LOW) prevFrqPinState = LOW;     //Creates a previos state
  if (frqPinState == HIGH && prevFrqPinState == LOW) //Pulses Counter
    {
    prevFrqPinState = frqPinState;
    frq++;
    
  }
  if (millis() - timer > oneSecond)                  //Time Counter
  {
    timer = millis(); //Resets Time
    Serial.println(frq = frq * 1);                   //stampa  Frequency
    lcd.setCursor(0, 0); 
    lcd.print("1:");
    lcd.print(frq);
    lcd.print("    ");
    frq = 0;                                         //Resets Frequency
    //==============================Sens2============================================
  }
  frqPinState1 = digitalRead(frqPin1);                 //Reads State of Input Pin
  if (frqPinState1 == LOW) prevFrqPinState1 = LOW;     //Creates a previos state
  if (frqPinState1 == HIGH && prevFrqPinState1 == LOW) //Pulses Counter
  {
  prevFrqPinState1 = frqPinState1;
    frq1++;
}
  if (millis() - timer1 > oneSecond)                   //Time Counter
  {
    timer1 = millis();                                 //Resets Time
    Serial.println(frq1 = frq1 * 1);                   //stampa  Frequency
    lcd.setCursor(5, 0);  
    lcd.print("2:");
    lcd.print(frq1);
    lcd.print("    ");
     frq1 = 0;                                         //Resets Frequency
     //===============================Sens3=============================================
  }
  frqPinState2 = digitalRead(frqPin2);                   //Reads State of Input Pin
  if (frqPinState2 == LOW) prevFrqPinState2 = LOW;       //Creates a previos state
  if (frqPinState2 == HIGH && prevFrqPinState2 == LOW)   //Pulses Counter
  {
  prevFrqPinState2 = frqPinState2;
    frq2++;
}
  if (millis() - timer2 > oneSecond)                     //Time Counter
  {
    timer2 = millis();                                   //Resets Time
    Serial.println(frq2 = frq2 * 1);                     //stampa  Frequency
    lcd.setCursor(10, 0); 
    lcd.print("3:");
    lcd.print(frq2);
    lcd.print("    ");
     frq2 = 0;                                           //Resets Frequency
     
  }
}

Il tutto credo sia fattibile, mi chiedo solo come intende verificare la presenza di semi sul nastro

Che integrati usi?
Mancano sul controller i componenti essenziali per farlo funzionare in modo affidabile: I condensatori 0,1µF antidisturbo sul alimentazione e su AREF e la resistenza e il diodo su reset.

Inoltre i giri che fa l'alimentazione sulla scheda é allarmante.

Ciao Uwe

salve ragazzi

Silente : posto qui parte meccanica in allegato poi vedere come sarebbe funzionamento.

uwefed : si e vero che mancano parti di elettronica per motivi lo ho sospeso , prima devo risolvere script e poi sistemare scheda .
si anche alimentazione , pero adesso sensori IR saranno separati da scheda so che c'e ancora tanto da sistemare . ho implementato pulsante per sospendere lettura e con le prove effettuate a mano funziona ,poi mi sono accorto che non mi va bene const int oneSecond = 500; che fa reset e il led lampeggia a presenza del segnale

#define zalarm 13                                     
#define alarm 11                                        
#define tast 10                                       
int vre = 0;                                            
int stara_vre = 0;                                      
int state = 0; 

const int frqPin = 2;                    
const int frqPin1 = 3;                   
const int frqPin2 = 4;                   

const int oneSecond = 500;               //  Vreme 0,5 seconde tempo 0,5 sec

int frqPinState = LOW;
int frq = 0;
int prevFrqPinState = LOW;
int frqPinState1 = LOW;
int frq1 = 0;
int prevFrqPinState1 = LOW;
int frqPinState2 = LOW;
int frq2 = 0;
int prevFrqPinState2 = LOW;


unsigned long timer = 0;
unsigned long timer1 = 0;
unsigned long timer2 = 0;

#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27,16,2);
void setup(){
  //--------------------------------Start------------------------------------------
  lcd.init();
  lcd.backlight();
  lcd.begin(16, 2);
   delay(1000);                                    // Pauza 1 secund
  lcd.clear();
  Serial.begin(2400);
  pinMode(frqPin, INPUT_PULLUP);                  //Declared Pin 2 as Input
  pinMode(frqPin1, INPUT_PULLUP);                 //Declared Pin 3 as Input
  pinMode(frqPin2, INPUT_PULLUP);                 //Declared Pin 4 as Input

  pinMode(zalarm, OUTPUT);
  pinMode(tast, INPUT);
  pinMode(alarm, OUTPUT);
}

void loop()
{    vre = digitalRead(taster);                              
  if ((vre == HIGH) && (stara_vre == LOW)) {
    state = 1 - state;
  }
  stara_vre = vre;
  if (state == 1) {
    digitalWrite(zalarm, HIGH);                         
    frq;
    frq1;
    frq2;
  
  }
  else {
    digitalWrite(zalarm, LOW);                          
    frq = 0;
    frq1 = 0;
    frq2 = 0;
    
  }

    //=============================Sens1===========================================
  frqPinState = digitalRead(frqPin);                 //Reads State of Input Pin
  if (frqPinState == LOW) prevFrqPinState = LOW;     //Creates a previos state
  if (frqPinState == HIGH && prevFrqPinState == LOW) //Pulses Counter
    {
    prevFrqPinState = frqPinState;
    frq++;
    
  }
  if (millis() - timer > oneSecond)                  //Time Counter
  {
    timer = millis(); //Resets Time
    Serial.println(frq = frq * 1);                   //stampa  Frequency
    lcd.setCursor(0, 0); 
    lcd.print("1:");
    lcd.print(frq);
    lcd.print("    ");
    frq = 0;                                         //Resets Frequency
    //==============================Sens2============================================
  }
  frqPinState1 = digitalRead(frqPin1);                 //Reads State of Input Pin
  if (frqPinState1 == LOW) prevFrqPinState1 = LOW;     //Creates a previos state
  if (frqPinState1 == HIGH && prevFrqPinState1 == LOW) //Pulses Counter
  {
  prevFrqPinState1 = frqPinState1;
    frq1++;
}
  if (millis() - timer1 > oneSecond)                   //Time Counter
  {
    timer1 = millis();                                 //Resets Time
    Serial.println(frq1 = frq1 * 1);                   //stampa  Frequency
    lcd.setCursor(5, 0);  
    lcd.print("2:");
    lcd.print(frq1);
    lcd.print("    ");
     frq1 = 0;                                         //Resets Frequency
     //===============================Sens3=============================================
  }
  frqPinState2 = digitalRead(frqPin2);                   //Reads State of Input Pin
  if (frqPinState2 == LOW) prevFrqPinState2 = LOW;       //Creates a previos state
  if (frqPinState2 == HIGH && prevFrqPinState2 == LOW)   //Pulses Counter
  {
  prevFrqPinState2 = frqPinState2;
    frq2++;
}
  if (millis() - timer2 > oneSecond)                     //Time Counter
  {
    timer2 = millis();                                   //Resets Time
    Serial.println(frq2 = frq2 * 1);                     //stampa  Frequency
    lcd.setCursor(10, 0); 
    lcd.print("3:");
    lcd.print(frq2);
    lcd.print("    ");
     frq2 = 0;                                           //Resets Frequency
     
  }
}

per integrati non ancora avevo pensato.
se avete qualche suggerimento o idea vi ringrazio molto