21-03-2017, 19:15
Witam mam problem chciałby aby czujnik Sharp GP2Y0A21YK0F wykrywał obiekt do 50 cm poczym wystaw stan wysoki np. na pinie 13. Jak miałby wyglądać kod takiego programu? Czy jest to możliwe do zrobienia?
Ocena wątku:
Sharp GP2Y0A21YK0F jako czujnik ruchu POMOCY
|
int czujnik = A1; //pin analogowy A1 połączony z sygnałem z czujnika
int dystans = 100; //dystans przy jakim ma się pojawić stan wysoki.
//100 jest wartością domyślną i trzeba ją
//zmienić indywidualnie
void setup(){
Serial.begin(9600); //inicjalizacja monitora szeregowego
pinMode(13,OUTPUT); //ustawienie pinu 13 jako wyjście
}
void loop(){
int odl = analogRead(czujnik); //odczytanie wartości z czujnika
Serial.println(odl); //wyświetlenie jej na monitorze
if(odl >= dystans) //warunek jaki musi być spełniony
{digitalWrite(13,HIGH); //aby na pinie 13 pojawił się stan wysoki
}
delay(200); //opóźnienie między kolejnymi odczytami
}
(21-03-2017, 23:35)namok napisał(a): Prawie dobrze .
Wartość odczytaną z wejścia analogowego(0-1023) należy przeskalować na zakres czujnika(10-80) i dopiero na tej przeskalowanej wartości wygodnie jest pracować.
(21-03-2017, 23:43)ferdricco napisał(a):Witam ponowie, jestem początkującym użytkownikiem i nie za bardzo wiem jak dokonać tego przeskalowania. Wiec bardzo proszę o gotowy kod, będe bardzo wdzięczny. Czujnik ma wykrywac ruch w zakresie od 10cm-50 przy czym wystawic stan wysoki .(21-03-2017, 23:35)namok napisał(a): Prawie dobrze .
Wartość odczytaną z wejścia analogowego(0-1023) należy przeskalować na zakres czujnika(10-80) i dopiero na tej przeskalowanej wartości wygodnie jest pracować.
A no słusznie. W sumie napisałem ten algorytm z głowy. Ale tę modyfikację pozostawie dla pytającego co by sobie wyostrzył trochę szare komórki.