Arduino Polska Forum

Pełna wersja: "Szpilki"przy ustawianiu stanu niskiego/wysokiego...
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam,

Podłączyłem jedno z wyjść pod oscyloskop i zauważyłem, że przy załączaniu stanu wysokiego/niskiego, pojawiają się pojedyncze piki. Nie wiem czy to naturalne w tej wersji arduino którą posiadam (Leonardo), czy też nie, ale przeszkadza to np. w odczytywaniu wartości na wejściu analogowym, kiedy kręcę potencjometrem, bo chwilami odczytuje mi wartości z czapy - widocznie odczytuje wartość w chwili kiedy występuje taki pik. A te piki przekładają się na całą płytkę. Wystarczy, że załączę stan niski, czy wysoki i w kazdym miejscu tej płytki pojawia sie "szpilka" na oscyloskopie. 
Tak więc moje pytanie, czy to naturalne,  czy też może posiadam uszkodzoną płytkę. A jeśli to uszkodzenie płytki, to czy ktoś może orientuje się, jaki element na niej wymienić, żeby wróciło to do normy.
Spróbuj dać kondensator(szpilki powinny zostać zlikwidowane) albo jak chcesz możesz przerobić ten program(myślę że powinieneś dać radę) dzięki niemu szpilki będą ale arduino będzie je ignorować
Kod:
const int przycisk = 7;    // Definicja pinu do którego podłączony jest przycisk
const int dioda = 13;      // Definicja pinu do którego podłączona jest dioda

int stan_diody = HIGH;          
int stan_przycisku;              
int ostatni_stan_przycisku = LOW;

long lastDebounceTime = 0;
long czas_drgania = 50;  

void setup() {
 pinMode(przycisk, INPUT_PULLUP);        
 pinMode(dioda, OUTPUT);          
 digitalWrite(dioda, stan_diody);  
}

void loop() {
 int odczyt = digitalRead(przycisk);


 if (odczyt != ostatni_stan_przycisku) {
   lastDebounceTime = millis();
 }

 if ((millis() - lastDebounceTime) > czas_drgania) {

   if (odczyt != stan_przycisku) {
     stan_przycisku = odczyt;

     if (stan_przycisku == HIGH) {
       stan_diody = !stan_diody;
     }
   }
 }

digitalWrite(dioda, stan_diody);

 ostatni_stan_przycisku = odczyt;
}
(03-12-2017, 19:56)kasilos napisał(a): [ -> ]Spróbuj dać kondensator(szpilki powinny zostać zlikwidowane) albo jak chcesz możesz przerobić ten program(myślę że powinieneś dać radę) dzięki niemu szpilki będą ale arduino będzie je ignorować
Kod:
const int przycisk = 7;    // Definicja pinu do którego podłączony jest przycisk
const int dioda = 13;      // Definicja pinu do którego podłączona jest dioda

int stan_diody = HIGH;          
int stan_przycisku;              
int ostatni_stan_przycisku = LOW;

long lastDebounceTime = 0;
long czas_drgania = 50;  

void setup() {
 pinMode(przycisk, INPUT_PULLUP);        
 pinMode(dioda, OUTPUT);          
 digitalWrite(dioda, stan_diody);  
}

void loop() {
 int odczyt = digitalRead(przycisk);


 if (odczyt != ostatni_stan_przycisku) {
   lastDebounceTime = millis();
 }

 if ((millis() - lastDebounceTime) > czas_drgania) {

   if (odczyt != stan_przycisku) {
     stan_przycisku = odczyt;

     if (stan_przycisku == HIGH) {
       stan_diody = !stan_diody;
     }
   }
 }

digitalWrite(dioda, stan_diody);

 ostatni_stan_przycisku = odczyt;
}
Myślałem też nad tym, żeby robić kilka odczytów i jakąś średnią wyciągać, albo po prostu odrzucać odstające odczyty. W każdym razie frapuje mnie, czy to arduino jest jakieś trafione, czy też tak ma ten model?Kondensator dodawałem, ale w ogóle  nic to nie poprawiało; dalej przy każdej zmianie stanu na wysoki lub niski,
na całej płytce pojawia się ta szpilka.