• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Diagnoza płytki Arduino

Object Storage Arubacloud
0 głosów
291 wizyt
pytanie zadane 19 października 2020 w Mikrokontrolery przez xdmik23 Gaduła (3,000 p.)

Witam,

po długim czasie przerwy postanowiłem zrobić kolejny projekt na Arduino. Zauważyłem, że układ zachowuje się inaczej niż program. Dla potwierdzenia załączam prosty kod do sterowania diodą LED z przycisku

int led = 13;
int tactSwitch = 2;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(tactSwitch, INPUT);
}

void loop() {
  if(digitalRead(tactSwitch) == HIGH)
  digitalWrite(led,HIGH);
  else
  digitalWrite(led,LOW);
}

Po wciśnięciu przycisku dioda się włącza, ale gdy przycisk jest w stanie niskim dioda nadal świeci. Zapewniam, że wszystko dobrze podłączyłem - zresztą to jest tylko program testowy, podstawy elektroniki mam solidne. Podłączyłem rezystor ściągający do masy, więc nie tu jest problem. Płytka to Arduino UNO, spróbowałem jeszcze na drugiej ARDUINO MEGA i dalej występuje ten sam problem.

Czy problem może dotyczyć kompilatora? Długo nie używałem Arduino, odinstalowałem Arduino IDE i zainstalowałem je ponownie kilka dni temu. 

Z góry dziękuję za pomoc!

 

 

komentarz 19 października 2020 przez tkz Nałogowiec (42,000 p.)
Jak to nie ma nic do rzeczy? Program wykonuje się zapewne ileś milionów razy na sekundę, nie jest w stanie dobrze odczytać wartości. Dobrze w kontekście zamierzonego rezultatu.
komentarz 19 października 2020 przez Oscar Nałogowiec (29,290 p.)
Program implementuje zwykłą funkcję logiczną - kopiowanie stanu jednego pinu na drugi. Nie ma żadnego znaczenia ile razy wartość wejściowa się zmieni. Nie ma automatu, którego stan zależałby od liczby odczytanych zmian stanu. Obciążeniem jest LED, a jemu kilkukrotne szybkie zamiganie nie zaszkodzi, to nie przekaźnik.
komentarz 19 października 2020 przez tkz Nałogowiec (42,000 p.)
Nie napisałem, że zaszkodzi. Kwestią problematyczną jest to, że wartość pinu może zmienić się X razy w ciągu jednej sekundy, co dla 328p daje 20 mln operacji na sekundę.
komentarz 19 października 2020 przez Oscar Nałogowiec (29,290 p.)
Ale w tym kodzie wartość pinu i tak jest ustawiana za każdym obrotem pętli. Drgania styków są zjawiskiem, które rzeczywiście występuje i w większości wypadków trzeba się tym zająć, ale akurat ten kod może je spokojnie olać.

Duża liczba zmian pinu może trochę zwiększyć pobór prądu (przeładowanie pojemności), ale w katalogu chyba nie ma dopuszczalnej częstotliwość przełączania pinu. Procek wytrzyma, LED wytrzyma, to jest tylko program do sprawdzenia procka, nie będzie wykonywał tego programu latami.
komentarz 19 października 2020 przez tkz Nałogowiec (42,000 p.)
Chyba się nie rozumiemy za bardzo. Miałem na myśli, że przełączanie pinu występuje tak szybko i tak często, że nie dostrzegamy tego. Dlatego też zaproponowałem by to trochę opóźnić.

1 odpowiedź

0 głosów
odpowiedź 19 października 2020 przez DawidK Nałogowiec (37,910 p.)

Podłączanie button potrafi być dosyć upierdliwe. Ja korzystam z prostrzego rozwiązania przy użyciu INPUT_PULLUP i po prostu podłączam przycisk bez niczego po przekątnej - w twoim przypadku jedna nóżka do pinu 2 i druga po przekątnej do GND.

int led = 13;
int tactSwitch = 2;
 
void setup() {
  pinMode(led, OUTPUT);
  pinMode(tactSwitch, INPUT_PULLUP);
}
 
void loop() {
  if(digitalRead(tactSwitch) == LOW)
  digitalWrite(led,HIGH);
  else
  digitalWrite(led,LOW);
}

 

Podobne pytania

0 głosów
0 odpowiedzi 110 wizyt
0 głosów
1 odpowiedź 392 wizyt
pytanie zadane 13 lutego 2020 w Mikrokontrolery przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 12 lutego 2020 w Mikrokontrolery przez Marak123 Stary wyjadacz (11,190 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...