• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
"Szpilki"przy ustawianiu stanu niskiego/wysokiego...
#1
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.
 
Odpowiedź
#2
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;
}
 
Odpowiedź
#3
(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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości