contagiri motore

salve , volevo un'aiuto per realizare il programma di un contagiri utilizzando un fototransistor TCST2103. Per ora sono arrivato ad accendere un led quando il raggio infrarosso è interrotto e a stampare sul monitor seriale lo stato del fototransistor ( contatto chiuso ,contatto aperto). ecco il listato:

define SENSORE_PIN 2

define LED_PIN 13

//Tipo di sensore utilizzato? //#define INVERTED 1

define INVERTED 0

void setup() { pinMode(SENSORE_PIN, INPUT); pinMode(LED_PIN, OUTPUT); Serial.begin(9600); Serial.println("Inizio lettura sensore."); }

void loop() { if (digitalRead(SENSORE_PIN)) { if (INVERTED) { Serial.println("Aperto."); digitalWrite(LED_PIN, LOW); } else Serial.println("Chiuso"); digitalWrite(LED_PIN, HIGH); //Accensione led } else { if (INVERTED) { Serial.println("Chiuso"); digitalWrite(LED_PIN, HIGH); //Accensione led } else Serial.println("Aperto"); digitalWrite(LED_PIN, LOW); } delay(400); }

Prima di tutto, essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO

… poi, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More → Modify) il tuo post e racchiudi il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo

Visto che definisci il valore di INVERTED a tempo di compilazione puoi anche condizionare l'inclusione/esclusione del codice da compilare tramite le direttive #if(condizione) #else #endif.

#define SENSORE_PIN 2
#define LED_PIN 13

//Tipo di sensore utilizzato?
//#define INVERTED 1
#define INVERTED 0

void setup()
{
  pinMode(SENSORE_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT); 
  Serial.begin(9600);
  Serial.println("Inizio lettura sensore.");
}

void loop()
{
  
#if (INVERTED==0)

if (digitalRead(SENSORE_PIN))
{
      Serial.println("Aperto.");
      digitalWrite(LED_PIN, LOW);

}  else {

      Serial.println("Chiuso");
      digitalWrite(LED_PIN, HIGH); //Accensione led
}

#else

if (digitalRead(SENSORE_PIN))
{
      Serial.println("Chiuso");
      digitalWrite(LED_PIN, HIGH); //Accensione led

}  else {

       Serial.println("Aperto.");
      digitalWrite(LED_PIN, LOW);
      
}

#endif  

delay(400);