27-03-2019, 06:47
(Ten post był ostatnio modyfikowany: 27-03-2019, 10:50 przez Jarewa0606.)
Znalazłem taki kod na nie przerywaniach:
Zastanawiam się czy był by lepszy od attachinterrupt Cos tam czytałem ze przerywania nie sa wskazane. Nie mam pojęcia co by było lepsze
Doczytałem że dl auno jest specjalny jeden pin do takich celów ale już nie doczytałem o co chodzi i jaki?
Mi chodzi o taki prosty miernik częstotliwości.
Tak sobie pomyślałem jak by to przerobić na pomiar tylko przez 100ms to da mi pomiar powyżej 10Hz dobrze liczę?? Pomiar co 1s to da 900ms na resztę kodu.
Kod:
const int we = A0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("Ilosc zliczonych impulsow: ");
Serial.println(licznik(1000)); // Czas zliczania - 1 sekunda
delay(2000);
}
// Funkcja zliczająca impulsy w czasie jednej sekundy
long licznik(unsigned int czas)
{
unsigned int A = 0;
unsigned int B = 0;
unsigned long interwal = millis();
unsigned long iloscImpulsow = 0;
bool zbocze = false;
while(millis() - interwal < czas - 10) // Zliczanie w czasie jednej sekundy
{
A = analogRead(we); // Pierwszy pomiar
delayMicroseconds(10); // Zaczekaj przed drugim pomiarem
B = analogRead(we); // Drugi pomiar
if(A < B) // Zbocze narastające
{
zbocze = true;
}
if((A > B) && zbocze) // Zbocze opadające po zboczu narastającym = dodatni impuls
{
zbocze = false; // Przestaw flagę zbocza narastającego
iloscImpulsow++; // Dodaj 1 do licznika impulsów
}
}
return iloscImpulsow; // Zwróc ilość impulsów
}
Zastanawiam się czy był by lepszy od attachinterrupt Cos tam czytałem ze przerywania nie sa wskazane. Nie mam pojęcia co by było lepsze
Doczytałem że dl auno jest specjalny jeden pin do takich celów ale już nie doczytałem o co chodzi i jaki?
Mi chodzi o taki prosty miernik częstotliwości.
Tak sobie pomyślałem jak by to przerobić na pomiar tylko przez 100ms to da mi pomiar powyżej 10Hz dobrze liczę?? Pomiar co 1s to da 900ms na resztę kodu.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.