Digitális ki és bemenet használata

Ez a kis programocska beállítja az Arduino Uno R3 4-es kivezetését (chip 6-os kivezetése, d port 4. bitje) bemenetnek, valamint az Arduino Uno R3 13-as kivezetését (chip 19-es láb, b port 5. bitje) kimenetnek. H a bemeneten magas szintet talál, akkor a kimenetet is magas szintre állítja be, ha a bemenet alacsony szintet talál, akkor a kimenetet is alacsony szintre állítja.

Természetesen a program kipróbálásához ki kell alakítanunk a hardver környezetet, vagyis rá kell kötnünk egy nyomógombot a bemenetre, és egy ledet a kimenetre. Praktikusan úgy szokták a nyomógombot bekötni, hogy lenyomásakor a bemenetet a földre húzza le, ha nincs benyomva, akkor pedig a chip-be beépített felhúzó ellenállás a bemenetet felhúzza +5V-ra (magas szintre). A kimenetre egy soros kb. 200ohm ellenállással közvetlenül ráköthetjük a led-et. Az alábbi ábrát a Tavir 60 napos tanfolyamából vettem kölcsön. Ezen külső felhúzó ellenállás is szerepel, ami nem kell, ha bekapcsoljuk a chip-be épített felhúzó ellenállást.

Természetesen ilyen bekötéssel a kapcsolás pont fordítva működik, a led folyamatosan világít és a nyomógomb lenyomásakor elalszik!

A példa programban az egyes sorokat kommentekkel láttam el. Remélem ez elegendő a működés megértéséhez.

Arduino C példaprogram:

void setup() 
{
  pinMode(7, OUTPUT);       	//7-es kivezetés kimenet
  pinMode(6, INPUT);        	//6-os kivezetés bemenet
  digitalWrite(6,HIGH);     	//belső felhúzó ellenállás bekapcsol
  digitalWrite(7,LOW);      	//7-es kivezetés alacsony szint (led nem világít)
}

void loop() 
{
  if (digitalRead(6)==HIGH) 	//ha a bemenet 1
    {digitalWrite(7,HIGH);} 	//akkor led világít 
  else                     		//egyébként (bemenet 0)
    {digitalWrite(7,LOW);}  	//led nem világít
}

BASCOM példaprogram:

  $regfile = "m328pdef.dat"
  $crystal = 16000000
  Config Portd.7 = Output         'portb.7 kimenet
  Config Portd.6 = Input          'portd.6 bemenet
  Portd.6 = 1                     'felhúzó ellenállás bekapcsolva a portd.7 kimeneten
  Portd.7 = 0                     'portb.7 kikapcsolva (led nem világít)
  Do
   If Pind.6 = 1 Then             'ha a bemenet 1, akkor
      Portd.7 = 1                 'kimenet is 1
   Else                           'egyébként (bemenet 0)
      Portd.7 = 0                 'kimenet is 0
   End If
  Loop
  End

A BASCOM programhoz még annyi magyarázatot fűznék hozzá, hogy az első két sor el is hagyható, ha fejlesztő környezetben beállítjuk a chip típusát és a kristályfrekvenciát (lásd az első LED villogtató program leírását). Viszont ezeket a paramétereket a programba is beleírhatjuk, így a fordító innen is tudhatja, hogy milyen chip-et fogunk használni. Így a program is hordozhatóvá válik, nem kell egy másik gépen mindent  újra beállítani, ezért érdemes ezt megtenni.

Ha nem untad meg, akkor kattints ide, hogy a megtudhasd, hogyan kell a PWM kimeneteket használni!

Mennyire volt hasznos amit olvastál? Értékelés után szövegesen is leírhatod megjegyzéseidet és véleményedet!

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet! Ha kérdésed van, ne felejtsd el megadni az email címedet!