Pushbutton: kung paano gamitin ang simpleng sangkap na ito sa Arduino

pindutan

Un ang pindutan ng push ay isang pindutan na nagbibigay-daan sa iyo upang makagambala o magpadala ng isang elektronikong signal. Gamit ang simpleng sangkap na ito na sinamahan ng iba pang mga elemento maaari kang lumikha ng mga proyekto para sa maraming mga application. Ang paggamit ng ganitong uri ng mga pushbuttons ay napaka-pangkaraniwan pagdating sa mga proyekto kasama ng Arduino. At sa pamamagitan ng pagsasama-sama ng ilan sa mga pindutan na ito maaari kang lumikha ng isang medyo mas kumplikadong keyboard, kahit na mayroon nang mai-program na mga keyboard para sa mga gamit na ito ...

Sa pamamagitan ng paraan, hindi mo dapat lituhin ang pushbutton gamit ang isang switch. Ang mga ito ay ganap na magkakaibang mga bagay. Ang kaibahan ay ang switch o switch ay pinapagana o na-deactivate sa bawat pagpindot na ginawa dito. Sapagkat ang push button ay mananatili lamang sa isang estado habang ang presyon ay ipinataw dito. Nagkomento ako na maaari itong magpadala o makagambala, iyon ay dahil mayroong dalawang pangunahing mga uri ng mga pindutan.

simbolo ng push button

Mayroong HINDI o karaniwang bukas na mga pushbuttons at NC o karaniwang saradong mga pushbuttons. Ito ay tunog din sa iyo mula sa mga relay. At oo, eksaktong pareho ito ng operasyon. Kapag mayroon kang isang NC, hahayaan nito ang kasalukuyang dumaan sa mga terminal nito at nakakagambala lamang ito habang pinipindot mo ito. Sa kabilang banda, hindi pinapayagan ng NA na kasalukuyang lumipas kapag ang presyon ay hindi naipapataw dito at hahayaan lamang itong pumasa kapag pinindot mo ito.

Alam na, ay halos lahat ng kailangan mong malaman tungkol sa isang pindutan ng itulak upang simulan ang iyong koneksyon at programa gamit ang Arduino. Ang totoo ay ito ay isang simpleng elemento na wala nang masasabi tungkol sa ganitong uri ng mga pushbuttons.

Pagsasama ng Button ng Push sa Arduino

circuit kasama si Arduino

La pagkonekta ng isang pindutan upang gawin itong makipag-ugnay sa Arduino ay hindi maaaring maging mas simple. Ang isang halimbawa ay ang diagram na maaari mong makita sa mga linyang ito. Iyon lang ang kinakailangan upang simulan ang pag-eksperimento. Ngunit syempre, sa scheme na iyon magagawa mong kaunti. Kakailanganin para sa iyo na maglagay ng kaunting imahinasyon upang magpasya kung ano ang makokontrol ng pindutang iyon. Sa katunayan, kung madalas mong basahin ang hwlibre.es makikita mo na ang ilang mga artikulo kung saan ginamit namin ang mga push button ...

Mga paraan upang ikonekta ito

pull-up at pull-down

Ang isang bagay na dapat mong malaman ay ang isyu ng anti-bounce at kung paano ikonekta ang mga pushbutton na ito. Una naming pupunta sa paraan upang ikonekta ang mga ito, na alam mo na maaaring kasama ng mga pull-up at pull-down na resistor:

  • Hilahin mo- Sa setting ng risistor na ito, kapag pinindot ang pushbutton, makikita o mabasa ng microcontroller o Arduino ang isang zero sa pin na iyon. Iyon ay, binibigyang kahulugan nito bilang isang LOW signal.
  • Hatakin pababa: Sa kasong ito ito ay kabaligtaran, maaari mong basahin o makatanggap ng isang 1 o TAAS na signal sa pamamagitan ng konektadong pin.

Huwag lituhin ito sa NC o NA, na kung saan ay ibang iba tulad ng nakita natin dati. Ito ay malaya sa iba ...

Anti-Bounce

Ang mga pushbutton ay mayroong a epekto ng bounce kapag pinindot. Iyon ay, kapag ito ay pinindot o inilabas ay may isang pagbabagu-bago ng signal na dumaan sa mga contact nito at maaaring maging sanhi ito upang pumunta mula sa isang HIGT patungong LOW state o kabaligtaran nang hindi talaga gugustuhin na mangyari iyon. Maaari itong makagawa ng isang hindi ginustong epekto sa Arduino at gawin itong mga kakaibang bagay, tulad ng pag-aktibo ng isang elemento kung kailan talaga namin nais na patayin ito gamit ang pindutan ng push, atbp. Iyon ay dahil ang Arduino ay binibigyang kahulugan ang mga bouncing na parang pinindot nang higit sa isang beses ...

Ang negatibong epekto may solusyon ito. Para sa mga ito, ang isang maliit na capacitor ay dapat na ipatupad sa anti-bounce circuit (paraan ng hardware) o software (pagbabago ng source code), kung ang isang pull-up o pull-down na pagsasaayos ay ginamit o kung ito ay NC o NO. Sa lahat ng mga kasong ito, dapat ipatupad ang solusyon upang maiwasan ang mga rebound na ito.

Halimbawa, ang mga pull-up at pull-down na circuit na may anti-bounce capacitor magiging ganito ang hitsura nila:

rebounder

Habang ang pamamaraan ng software Maaari itong makita sa code snippet na ito:

kung (digitalRead (button) == LOW) // Suriin kung pinindot ang pindutan
{
pinindot = 1; // Ang variable ay nagbabago ng halaga
}
kung (digitalRead (button) == TAAS && pinindot == 1)
{
// Gawin ang nais na aksyon
pinindot = 0; // Ang variable ay bumalik sa orihinal na halaga
}

Simpleng halimbawa ng proyekto

anti-bounce na may push button at Arduino

Kapag nalaman natin ang paksa ng mga paraan upang ikonekta ang aming pushbutton at ang anti-rebound circuit, makakakita kami ng isang praktikal na halimbawa sa kontrolin ang isang LED gamit ang pushbutton. Ang pamamaraan ay pantay na simple tulad ng nakikita mo.

Kapag nakakonekta nang tama, ang susunod na bagay ay ang pagsusulat ang code sa Arduino IDE upang mai-program ang iyong panel at simulang mag-eksperimento sa mga pindutan. Ang isang simpleng halimbawa ng code upang makontrol ang aming circuit ay ang sumusunod:

// Halimbawa ng sketch upang makontrol ang pindutan
int pin = 2;
int estado;
pulsating int = 0;
walang bisa ang pag-setup ()

{
pinMode (2, INPUT); // Upang mabasa ang pulso sa pamamagitan ng paggawa ng input na pin

pinMode (13, OUTPUT); // Para sa LED

Serial.begin (9600);
}
walang bisa loop ()

{
kung (digitalRead (2) == TAAS)

{

pin = 2;

antiBounce (); // Tumawag sa pagpapaandar na anti-bounce

}
}
// Pag-andar ng anti-bounce ng software
walang bisa ang anti-bounce ()

{
habang (digitalRead (pin) == LOW);
estado = digitalRead (13);
digitalWrite (13 ,! estado);
habang (digitalRead (pin) == TAAS);

}


5 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Larawan ng placeholder ni Marcelo Castillo dijo

    Malamig!!! Maraming salamat, bumubuo ako ng isang CNC at kabalintunaan ang mga pindutan ay ang pinakamahirap na bagay para sa akin upang ibagay.

  2.   Liliana dijo

    Hi! Kumunsulta ako bilang isang baguhan, na may kaugnayan sa GND ... .. Ang itim na kawad ay hindi dapat lumabas sa negatibong linya, na matatagpuan sa itaas ng ipinakita sa diagram 2?

  3.   John dijo

    Mahusay na paliwanag .. ilang taon na ang nakakaraan gumawa ako ng isang proyekto sa pag-aapoy ng kotse at ang totoo ay hindi ako makakagawa ng isang tamang keystroke. Para sa pag-aapoy .. Susubukan ko ang pamamaraang ito. Maraming salamat sa malaking tulong

  4.   omar romero rincon dijo

    Kumusta, gumagawa ako ng isang proyekto na may tatlong mga pindutan at 5 mga led na may sumusunod na pagkakasunud-sunod.
    Ang 1 push button ay nagpapadala ng signal sa 2 led, na tinawag kong 1 at 2.
    ang pangalawang pushbutton ay nagpapadala ng signal sa 3 led, na tinatawag na 2,3 at 4.
    ang aking pangatlong pushbutton ay nagpapadala ng signal sa isa pang 3 led, na tinatawag na 3,4 at 5.

    Nagawa kong gawin ang sequence na iyon, isa lang ang problema ko, kapag pinindot ko ang 2 buttons, nagpapadala ito ng maling signal sa led na dapat manatili, na nagiging sanhi ng paminsan-minsang kumurap, nakontrol ko ito sa pamamagitan ng pagtatakda ng pagkaantala (ng 2 segundo , which is kung ano ang kailangan ko para manatili ang leds at pagkatapos ay patayin. Kaya ang tanong ko ay paano ko mailalagay ang millis function sa aking program, hindi ko maintindihan kung paano gumagana ang millis, gusto kong malaman kung matutulungan mo ako sa pamamagitan ng paggawa ng isang halimbawa para sa 3 mga pindutan gamit ang millis sa bawat isa sa kanila, kailangan ko ng millis upang mapindot ang mga pindutan anumang oras nang hindi naantala ang arduino.

    1.    Isaac dijo

      Hello Omar,
      Inirerekomenda ko sa iyo na tingnan ang aming Arduino tutorial:
      https://www.hwlibre.com/programacion-en-arduino/
      At makikita mo rin ang aming artikulo sa millis():
      https://www.hwlibre.com/millis-arduino/
      Isang pagbati.