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?

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet!