24-01-2017, 15:58
Witam,
Jestem początkującym użytkownikiem Arduino Uno. Chciałem zbudować prosty układ, który mierzyłby czas staczającego się z równi pochyłej walca u jej podstawy. Zasada działania jest następująca: w odstępie 10mm zamontowane są dwa fototranzystory oświetlane diodami laserowymi; przejeżdżający walec przecina najpierw pierwszą wiązkę potem drugą. Na tej podstawie znając odległość pomiędzy fototranzystorami i czas na jaki wiązka została przecięta mogę policzyć prędkość (T1, T2 albo T = ? ).
Poniżej zamieściłem przykłady program, który zwraca wartość funkcji micros(), kiedy zostanie przekroczony poziom referencyjny dla pierwszego fototranzystora (950). Czy jest możliwość wystartowania funkcji micros() od zera, kiedy zostanie przekroczona wartość referencyjna? Czy może istnieje, jakaś inna funkcja pozwalająca na obliczenie czasu?
Z góry bardzo dziękuje,
Michał
int czujnik_1 = A1; //fototranzystor 1
int czujnik_2 = A2; //fototranzystor 2
unsigned long time; //czas microsekundy
void setup() {
Serial.begin(9600); //inicjalizacja monitora szeregowego
Serial.println("Pomiar predkośći");
}
void loop() {
int war_1 = analogRead(czujnik_1); //odczytanie wartości z A1
int war_2 = analogRead(czujnik_2); //odczytanie wartości z A2
if (war_1 < 950)
{
time = micros();
}
if (war_1 < 950)
{
Serial.println (time);
}
delayMicroseconds(1); //opóźnienie między kolejnymi odczytami
}
Jestem początkującym użytkownikiem Arduino Uno. Chciałem zbudować prosty układ, który mierzyłby czas staczającego się z równi pochyłej walca u jej podstawy. Zasada działania jest następująca: w odstępie 10mm zamontowane są dwa fototranzystory oświetlane diodami laserowymi; przejeżdżający walec przecina najpierw pierwszą wiązkę potem drugą. Na tej podstawie znając odległość pomiędzy fototranzystorami i czas na jaki wiązka została przecięta mogę policzyć prędkość (T1, T2 albo T = ? ).
Poniżej zamieściłem przykłady program, który zwraca wartość funkcji micros(), kiedy zostanie przekroczony poziom referencyjny dla pierwszego fototranzystora (950). Czy jest możliwość wystartowania funkcji micros() od zera, kiedy zostanie przekroczona wartość referencyjna? Czy może istnieje, jakaś inna funkcja pozwalająca na obliczenie czasu?
Z góry bardzo dziękuje,
Michał
int czujnik_1 = A1; //fototranzystor 1
int czujnik_2 = A2; //fototranzystor 2
unsigned long time; //czas microsekundy
void setup() {
Serial.begin(9600); //inicjalizacja monitora szeregowego
Serial.println("Pomiar predkośći");
}
void loop() {
int war_1 = analogRead(czujnik_1); //odczytanie wartości z A1
int war_2 = analogRead(czujnik_2); //odczytanie wartości z A2
if (war_1 < 950)
{
time = micros();
}
if (war_1 < 950)
{
Serial.println (time);
}
delayMicroseconds(1); //opóźnienie między kolejnymi odczytami
}