• 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
Zły odczyt stanu na porcie digital.
#1
Witam
Ogólnie dopiero zaczynam programowanie na arduino. I zrobiłem teraz diodę na guzik i jak widać ona powinna być zapalona gdy guzik jest nie wciśnięty a zgaszona gdy wciśnięty.
Po wciśnięciu wszystko działa bo dioda się gasi ale gdy guzik jest nie wciśnięty nie wiem dlaczego arduino odczytuję na zmianę stan wysoki i niski.(czasami dwa wysokie jeden niski a czasami trzy niskie jeden wysoki itp.)
Jeżeli ktoś mógłby mi pomóc byłbym wdzięczny.

Tutaj filmik z tego jak to wygląda:
http://sendvid.com/8qm1zxk8
 
Odpowiedź
#2
Podaj program i schemat układu lub dobrej jakości zdjęcie.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
Tu jest zrzut mojego układu jak wygląda:
https://scr.hu/PepXll

A tutaj jest kod programu:
void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT);
pinMode(11, INPUT);
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:

if(digitalRead(11) == HIGH){
Serial.println("Jest");
digitalWrite(7, HIGH);
}
else{
Serial.println("nie ma");
digitalWrite(7, LOW);
}
}
 
Odpowiedź
#4
Zamiast
Kod:
pinMode(11, INPUT);
daj
Kod:
pinMode(11, INPUT_PULLUP);
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#5
To nic nie zmieniło nadal tak samo mruga Sad.
Nie wiem też czemu ale jak taki sam układ tworzyłem 1 tydzień temu to wszystko działało.
 
Odpowiedź
#6
Upewnij się czy połączenia kabelków są odpowiednie, płytki stykowe mają to do siebie, że niekiedy nie przewodzą.
 
Odpowiedź
#7
(21-01-2017, 17:57)piotr2393 napisał(a): Upewnij się czy połączenia kabelków są odpowiednie, płytki stykowe mają to do siebie, że niekiedy nie przewodzą.

To już sprawdzone nawet zmieniałem na inne piny bo obstawialem że tu może coś jest nie tak ale nie za każdym razem to samo.
 
Odpowiedź
#8
jesli PULLUP nie pomoglo to mozesz sprobowac rezystorem podciagajacym na plytce stykowej, wtedy na pewno bedzie stan wysoki przy rozwartym przycisku i na pewno stan niski przy zwartym.
Dla arduino brak stanu niskiego nie koniecznie oznacza stan wysoki i odwrotnie, brak stanu wysokiego to nie koniecznie stan niski

Wysłane z mojego ALE-L21 przy użyciu Tapatalka
 
Odpowiedź
#9
Dodaj może w pętli głównej jakiegoś malego delay'a np. 10 lub 100 i zobacz jak się zachowa program...
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#10
Moim zdaniem problem wygląda bardzo prosto-masz połączonego microswitcha do GND. Oznacza to tyle że po jego naciśnięciu na 11 nie wchodzi stan wysoki. Wartości są po prostu losowe. Inna kwestia jest taka że powinieneś mieć to podłączone zupełnie inaczej. Teraz masz podłączenie 11 do GND przez microswitcha i odczyt stanu wysokiego.A wysoki stan to 5V lub coś koło tego. Jeśli stan nieustalony przekroczy jakąś wartość to na wyjściu masz "1".
Żeby zawsze było ok powinieneś dać podciągnięcie gnd przez rezystor i VCC na odpowiedni pin.Przy zwarciu przelaczaloby 0 na 1 i nie byloby stanów nieustalonych.Pomijam odczywiście drganie styków. W kodzie jest to zasem oznaczane jako debounce. Każdy microswitch ma drgania ktore nalezaloby wyeliminowac programowo-tj. przez delaya.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości