Arduino Polska Forum
"Szpilki"przy ustawianiu stanu niskiego/wysokiego... - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: "Szpilki"przy ustawianiu stanu niskiego/wysokiego... (/watek-szpilki-przy-ustawianiu-stanu-niskiego-wysokiego)



"Szpilki"przy ustawianiu stanu niskiego/wysokiego... - mutivita - 03-12-2017

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.


RE: "Szpilki"przy ustawianiu stanu niskiego/wysokiego... - kasilos - 03-12-2017

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;
}



RE: "Szpilki"przy ustawianiu stanu niskiego/wysokiego... - mutivita - 03-12-2017

(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.