Liczba postów: 6
Liczba wątków: 2
Dołączył: Nov 2021
Reputacja:
0
Witam
Proszę o pomoc w kodzie. W momencie włączania arduino dwa pierwsze przyciski 8 ni 9 rozpoczynaja pracę od stanu 1 a potrzebowal bym by zaczynały od stanu 0, z góry dziękuję za pomoc
void setup() {
pinMode( 8, INPUT);
pinMode( 9, INPUT);
pinMode( 10, INPUT);
pinMode( 11, INPUT);
pinMode( 2, OUTPUT);
pinMode( 3, OUTPUT);
pinMode( 4, OUTPUT);
pinMode( 5, OUTPUT);
}
void loop() {
if(digitalRead(8)==HIGH){
delay(20);
digitalWrite(2, !digitalRead(2));
while(digitalRead(8) == HIGH) ;
delay (20);
}
if(digitalRead(9)==HIGH){
delay(20);
digitalWrite(3, !digitalRead(3));
while(digitalRead(9) == HIGH) ;
delay (20);
}
if(digitalRead(10)==HIGH){
delay(20);
digitalWrite(4,LOW);
}else{
digitalWrite(4, HIGH);
delay (20);
}
if(digitalRead(11)==HIGH){
delay(20);
digitalWrite(5,LOW);
}else{
digitalWrite(5, HIGH);
delay (20);
}
}
Liczba postów: 2,368
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Nie wiem czy kod ma sens gdy nie pokazujesz schematu. Przyciski podciągasz do GND rezystorem zewnętrznym? Bo wewnętrznym możesz ustawić podciąganie do VCC, a wtedy przycisk ma zwierać do GND, a wciśnięty gdy ==0.
pinMode( 8, INPUT_PULLUP);
Niektóre płytki mają również do GND, ale tego też nie napisałeś.
Liczba postów: 654
Liczba wątków: 3
Dołączył: Apr 2017
Reputacja:
51
A jak masz podłączone rezystory podciągające?
Pokażesz schemat, czy mamy się domyślać?
Piny Arduino są domyślnie skonfigurowane jako wejścia, więc gdy używasz ich jako wejść, nie muszą być jawnie deklarowane jako wejścia za pomocą pinMode(). Jeśli nie masz podłączonych rezystorów podciągających, piny zgłaszają pozornie przypadkowe zmiany stanu, zbierając szum z otoczenia lub sprzęgając stan z innych pinów.
Rezystory podciągające sterują pinem wejściowym do znanego stanu, jeśli nie ma sygnału wejściowego. Można to zrobić, dając rezystor podciągający do +5V, lub do masy.
Możesz też wykorzystać wbudowane rezystory podciągające.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.
Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
21-04-2022, 19:41
(Ten post był ostatnio modyfikowany: 21-04-2022, 19:42 przez mateuszmilke97@gmail.com.)
Wartość rezystorow podciągających to 10k ohm czasami 4.7k ale na ogół stosuje się 10k wartość 10k stanowi ze wejście ma stabilna wartość a w przypadku zwarcia do masy/zasilania (poprzez np włącznik) w zależności czy podciągamy do zasilania czy GND prąd jest na tyle mały że nie obciąża mikrokontrolera
Liczba postów: 880
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
42
A dlaczego ma obciążać mikrokontroler? jak on jest w stanie odczytu.
Rezystor dobiera się do specyfikacji przycisku.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
Testowałem mierzyłem na atmegach pobór prądu kilka razy i wzrasta pobór o kilka mA przy aktywacji przycisku, dlaczego ma obciążać? A no dlatego ze choćby INPUT_PULLUP czyli na wyjściu procesor podaje 5v a Ty go zawierasz do masy więc jakiś prąd musi płynąć, lecz to dokładnie wiesz, w przypadku wewnętrznego rezystor nie interesuje nas to lecz jak sami robimy zewnętrzny trzeba o tym pamiętać. Pamiętam nawet że przy większej ilości takich przycisków nawet stabilizator robił sie znacznie cieplejszy ale to normalna sprawa przy zwiększonym poborze prądu
Liczba postów: 880
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
42
21-04-2022, 22:40
(Ten post był ostatnio modyfikowany: 21-04-2022, 22:48 przez Jarewa0606.)
No nie przesadzaj, wewnętrzy rezystor ma 10KOhm co przy zwarciu da obciążenie 500uA moc wydzielana 2.5mW
Nawet jak da rezystor 250 Ohm to będzie zaledwie 20mA moc wydzielana 100mW a standardowy rezystor spokojnie wytrzymuje 250mW i tak jest spory zapas by się nic nie grzało.....
Co innego 20mA, bo przyciski przeważnie są 2-5mA mają też prąd minimalny dla stabilnego działania. Wiec większego ani mniejszego prądu nie możesz dać bo skraca ich żywotność lub działanie niestabilne dlatego pisałem że się dobiera do specyfikacji przycisku.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
21-04-2022, 23:18
(Ten post był ostatnio modyfikowany: 21-04-2022, 23:19 przez mateuszmilke97@gmail.com.)
Tak racja 500uA by wychodził prąd zwarciowy. To bardzo mało lecz napisałem "aby nie obciążać ukaldu" tak dla jego świadomości ponieważ wszędzie przyjmuje sie nominalną wartość 10Kohm dla rezystorow podciągających. Bynajmniej z bazy wiedzy która zaciągnąłem czyli forbot/google/YouTube
Hm to teraz dałeś mi zagadkę dlaczego mój projekt pobierał kilka mA na jeden włącznik i przy kilu włącznikach było znacząco odczuć różnice temperatury z racji tego zmuszony byłem dać radiator do stabilizatora. Gdzie chociaż 5 wlacznikow powinno dać prąd 2500uA czyli 0,0025A to 8 razy mniej niż zwykła czerwona dioda potrzbuje...