• 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
Bardzo prosty kod proszę o pomoc
#1
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);
}
}
 
Odpowiedź
#2
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ś.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
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.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#4
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
 
Odpowiedź
#5
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ą. 
 
Odpowiedź
#6
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
 
Odpowiedź
#7
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ą. 
 
Odpowiedź
#8
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...
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości