Zähler Programm Frage

int TILT=7;
int NEIGUNG=0;
int buzzer = 9; //buzzer to arduino pin 9

volatile unsigned int pulse = 0;
volatile unsigned int pulses = 0;
volatile unsigned long timerCounts;
unsigned int timer5CounterValue;

void startCounting (){

  TCCR5A = 0;             
  TCCR5B = 0; 
  TCNT5 = 0;
  timer5CounterValue = 0;


  GTCCR = bit (PSRASY);        // reset prescaler now
  // External clock source on T4 pin (D47). Clock on rising edge.
  TCCR5B =  bit (CS50) | bit (CS51) | bit (CS52);
    
} // end of startCounting

void stopCounting (){
 TCCR5A = 0;             
 TCCR5B = 0; 

}

void readCounter (){
   timer5CounterValue=TCNT5;
}


void setup(){
  pinMode(buzzer, OUTPUT);
  pinMode(TILT, INPUT);
  Serial.begin(9600);
}

void loop()
{
NEIGUNG=digitalRead(TILT);

if (NEIGUNG == HIGH)
{
  tone(buzzer, 1000);
  stopCounting();
  readCounter();
  delay(1000); 
  Serial.println(timer5CounterValue);
}
else
{
  startCounting();
  noTone(buzzer);
  delay(1000);
}

Hallo dieses Programm hatte ich mir zusammen kopiert. Ich wollte es eventuell auch statt dem Neigungssensor mit einem Laser und einem Photoresistor als Lichtschranke verwenden.

Was ich nicht ganz verstehe ist wo wird etwas in TCNT5 reingeschrieben. Und was ist mit pluse und pulses?

Kennt jemand eine andere Version von einem Zähler?

Was ich eigentlich auch noch in dem Programm gerne hätte wäre ein Protokoll, welches die verschiedenen Zählungen festhält? Gibt es sowas?

TCNT5 ist das Zählerregister eines Hardware-Timers. Steht für Timer/Counter

Das du dir das zusammen kopiert hast, ist ja toll. Nur hilft uns das nicht, da wir nicht wissen, was dein Sketch machen soll. Es fehlt jegliche Dokumentation, die solltest einfügen, damit wir wissen was da passieren soll.

Also bitte eine Beschreibung was du mit dem Sketch erreichen möchtest.

Das Programm soll zählen bis der Neigung High ist. Dann :

stopCounting(); readCounter(); delay(1000); Serial.println(timer5CounterValue);

Ist es Möglich die Zählung irgendwo zu dokumentieren? Serial.println(timer5CounterValue); Und diese später zu lesen?

Solange (NEIGUNG != HIGH) wird jede Sekunde der Counter neu gestartet.

else
{
  startCounting();
  noTone(buzzer);
  delay(1000);
}

Was willst du mit dem initialisierten Wert ?

Das Programm soll zählen bis der Neigung High ist. Dann :

was soll es zählen? Sekunden?

Hi

Sehr verworren Das ist - Viel verstehen ich nicht.

Erkläre uns, was Du wirklich vorhast - nicht, wo Du gerade ein Problem siehst, Das Du gerne von uns gelöst haben willst. Ich sehe noch nicht wirklich, daß ein Timer hier benötigt wird - alleine schon, weil Du mit delay(1000); mindestens eine Sekunde lang Nichts machst, außer den Timer (ohne Unterbrechungsmöglichkeit) zählen zu lassen - oder eben nicht.

Bisher reime ich mir zusammen, daß Du irgend etwas balancieren willst und der Arduino Dir sagen soll, wie lang's denn nun gedauert hat - kann aber auch sein, daß meine Glaskugel bereits im nächsten Thread ist - kann man Alles nicht so wissen.

MfG