2024.11.27.
18:07

Írta: harsanyireka

I2C LCD kijelző

lcd.jpg

Ezek az LCD-k ideálisak kizárólag karakterek megjelenítésére. Egy 16×2 karakteres LCD például 32 ASCII karaktert képes megjeleníteni két sorban.

Az adapter középpontjában egy 8 bites I/O bővítő chip - PCF8574 - áll. Ez a chip alakítja át az Arduino I2C-adatokat az LCD-kijelzőhöz szükséges párhuzamos adatokká. A board tartalmaz egy apró trimpotot is, amellyel pontosan beállítható a kijelző kontrasztja. A boardon található egy jumper, amely a háttérvilágítás áramellátását biztosítja. A háttérvilágítás intenzitásának szabályozásához eltávolíthatja a jumper-t, és külső feszültséget kapcsolhat a „LED” feliratú pin-re.

Az I2C LCD kijelzőnek csak négy tűje van. A következő a pinout:

i2c-lcd-display-pinout.webp

A GND egy földelt pin.

A VCC a tápellátás pinje. Csatlakoztasd az Arduino 5V-os kimenetéhez.

Az SDA az I2C adattüske.

Az SCL az I2C órajel pin.

 

BEKÖTÉS:

wiring-i2c-lcd-display-with-arduino.webp

 

KÖNYVTÁR TELEPÍTÉSE

Telepítsd a LiquidCrystal_I2C könyvtárat! Ez a könyvtár lehetővé teszi az I2C kijelzők vezérlését a LiquidCrystal könyvtárhoz nagyon hasonló funkciók segítségével.

A könyvtár telepítéséhez navigálj a Sketch > Include Library > Manage Libraries... Sketch > Include Library > Manage Libraries menüpontra... Várd meg, amíg a Library Manager letölti a könyvtárindexet és frissíti a telepített könyvtárak listáját.

manage-libraries.png

 

Szűrd a keresést a 'liquidcrystal' beírásával. Keresd meg a Marco Schwartz által készített LiquidCrystal I2C könyvtárat. Kattints rá erre a bejegyzésre, majd válaszd a Telepítés lehetőséget.

 

PÉLDAKÓD

Ezt a példát a Fájl > Példák > Vezeték > i2c_scanner menüpontban találod

File > Examples > Wire > i2c_scanner.

 

#include <Wire.h>

void setup() {
  Wire.begin();

  Serial.begin(9600);
  while (!Serial); // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}

void loop() {
  int nDevices = 0;

  Serial.println("Scanning...");

  for (byte address = 1; address < 127; ++address) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println("  !");

      ++nDevices;
    } else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  } else {
    Serial.println("done\n");
  }
  delay(5000); // Wait 5 seconds for next scan
}

 

Miután feltöltötted a kódot, indítsd el a soros monitort 9600 baud-on. Látni fogod az I2C LCD kijelző I2C címét, ezt írd fel mert a kódban szükség lesz rá!

i2c-address-scanner-output.png

// enter the I2C address and the dimensions of your LCD here
LiquidCrystal_I2C lcd(0x3F, 16, 2);

 

forrás: https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/ 

 

Szólj hozzá!

2016.11.17.
09:58

Írta: harsanyireka

Random betű generátor, 7x5 dot matrixon

TC07-11EWA Dot Matrix LED Display, CC 7 x 5

f4516644-01.jpg

l0247314-10.gif

l0247315-10.gif

 

forrás: http://uk.rs-online.com/web/p/led-displays/4516644/

----------

 

ARDUINIO - RANDOM BETŰ GENERÁTOR

Bekötése:

fi5e37wh347ff6r_medium.jpg

(470 Ohm ellenállások minden egyes Arduino pinhez 0-6 és az adott LED matrix pinek között)

Arduino pin/LED matrix pin
0/6 (Sor 7)
1/5 (Sor 6)
2/4 (Sor 5)
3/9 (Sor4)
4/2 (Sor 3)
5/11 (Sor 2)
6/12 (Sor 1)

8/1 (Oszlop 1)
9/3 (Oszlop 2)
10/10 (Oszlop 3)
11/7 (Oszlop 4)
12/8 (Oszlop 5)

Nyomógomb az arduino 7 pinjébe van bekötve (10kOhm ellenállás kell hozzá).

 

KÓD letöltése.

forrás: http://www.instructables.com/id/Arduino-random-letter-generator/

----------

 

LED GRID
https://github.com/ericlathrop/LedGrid

https://www.youtube.com/watch?v=Z6Wv3CiSTfo

 

 

Szólj hozzá!

Címkék: LED panel

2016.11.03.
11:22

Írta: harsanyireka

rn42xvp bluetooth modul

rn42bt.jpg

_-2016-06-21-0_31_56-400x400_1.png

 

forrás: http://design-lab.tuqulore.com/arduion_with_bluetooth/
http://qiita.com/ono4ji/items/84061d29fe015e39b860

 

bekötése:

* 3.3V -> Vcc
* GND -> GND
* D10 -> RX(1KΩ, 510Ω)
* D11 -> TX

4a0449c8-8963-2101-4df9-a2c482c7bb04.png

 

 

Adatátviteli sebesség (baudrate) beállítása: 
https://github.com/ono4ji/handsignglove/blob/master/sketch_bluetoothBaudRateSetting/sketch_bluetoothBaudRateSetting.ino

Állítsd a soros portot 115200-ra (alapértelmezett) és írd be a parancsot! Ezzel átállítottad 9600bps-re az adatátviteli sebességet:

s[enter]
b[enter]
r[enter]

c6947210-b7a6-a86a-1ed0-d7eee6f06a3e.png

 

HID
https://github.com/ono4ji/handsignglove/blob/master/sketch_bluetoothHIDsetting/sketch_bluetoothHIDsetting.ino

9600 bps-sel írd be a következő parancsokat!

s[enter]
d[enter]
m[enter]
p[enter]
k[enter]
n[enter]
d[enter]
r[enter]

4bfeedcf-308d-15b3-1110-e3b640cb6cd6.png

 

Szólj hozzá!

Címkék: bluetooth

2016.11.03.
10:59

Írta: harsanyireka

7-szegmensű LED kijelző

forrás: http://www.exploreembedded.com/wiki/index.php?title=5_Display_numbers_on_Seven_Segment_Display 

bekötése: 220 Ohm ellenállásokkal

680px-arduino_display_numbers_on_seven_segment_display.JPG

 

 kód letöltés

 

 

Szólj hozzá!

Címkék: LED panel 7-szegmens

2014.06.22.
18:00

Írta: harsanyireka

14. /2) Könyvtárak hasznos eszközökhöz: motorok, programozó

Lektorált tananyag, ami a BKF Digitális és Kollaboratív Művészet (DIKOM) pályázatnak keretén belül valósult meg.

Szerző: Harsányi Réka, Társszerző: Juhász Márton András, Lektor: Fernezelyi Márton

 

Servo könyvtár

A szervomotorok olyan aktuátorok, melyek a visszacsatolás elvén működnek. A legegyszerűbb esetben a szervo tengelyét elfordító motor egy áttételen keresztül egy potmétert is elforgat, ami egy komparátor áramkör egyik bemenetéhez kapcsolódik. A komparátor egyszerű analóg integrált áramkör, amit legegyszerűbben úgy képzelhetünk el, mint egy mérleget. A szervo esetében a „mérleg” egyik oldalán a potméter – és így a tengely – állapota, a másik oldalán a szervo bemenetére adott feszültségszint a „súly”, a „mérleg nyelve” pedig a motor elfordulási irányát és erejét reprezentálja. Ily módon meghatározott feszültségszinteknek megfeleltethetők a motortengely állásának szögei. A Servo könyvtárral az Arduino PWM képes kimeneteit felhasználva, a csatlakoztatott szervomotorokat az elfordulás szögének megadásával irányíthatjuk. Miután a potméter nem képes a körbeforgásra, a megadható szögek 0 és 180 fok közé esnek és mindig egész számok.

14.4. †bra Szervomotor szerkezete.png

Szervomotor szerkezete 

(A bonyolultabb felépítésű szervomotorok komparátor helyett digitális jelfeldolgozást is végeznek. A potméter szerepét optikai vagy mágneses kódtárcsa váltja fel és a kommunikáció a motorral digitális buszon zajlik.) Hobbi és modellezési célra három méretben szabványosították a szervokat. Alaptípusaikat tekintve megkülönböztetünk nagy nyomatékú és nagy sebességű motorokat. Mindegyikre jellemző, hogy három vezeték tartozik hozzájuk: föld (barna/fekete), táp (piros) és vezérlés (narancs/fehér).

 

Amire szükség lesz:

-       Arduino,

-       hobbi szervomotor,

-       10 kiloohmos potméter.

 

Kapcsolás:

Kössük be a potméterünket feszültségosztóként, a közepét pedig az A0 analóg bemenetre. A szervomotor tápkábeleit az Arduino 5 V-os tápvezetékeihez, vezérlőkábelét a 9-es PWM kimenethez csatlakoztassuk.

 14.5. †bra Szervomotor Çs potmÇter bekîtÇse.png

Szervomotor és potméter bekötése

 

Arduino kód: 75szervo

 

attach()

Szervo objektumhoz fizikai csatlakozó címét köti.

Szintaxisa:

Servo.attach(pin),

Servo.attach(pin, min, max).

Paraméterei:

Servo: Servo típusú változó,

pin: a PWM képes kimenet, amire a motor vezérlését kötöttük,

min: a vezérlőimpulzus szélességének minimuma mikroszekundumokban kifejezve, alapállapotban 544 és ez feleltethető meg a motoron a 0 foknak. Opcionális finomhangolásra ad lehetőséget.

max: a vezérlőimpulzus szélességének maximuma, alapállapotban 2400 mikroszekundum.

 

write()

A megadott pozícióba mozgatja a szervomotort. Szabvány szervo esetén a megadott szögnek megfelelően mozdul el a motor tengelye. (Ha szétszedjük a szervomotort és a potméter helyére két egyforma értékű ellenállást teszünk, mintha a potméter mindig középen állna, akkor folyamatosan forgó mozgást végző motort fogunk kapni, aminek ez a parancs a sebességét fogja állítani. 180 esetén az egyik irányba forog teljes sebességgel, 0 esetén a másikba és 90-nél megáll.)

Szintaxisa:

Servo.write(val).

Paramétere:

Servo: Servo típusú változó,

val: a szög, ahová a motort fordítani szeretnénk.

 

writeMicroseconds()

Abban az esetben, ha precízebb mozgatásra van szükségünk, célszerű nem szögértékben megadni az elfordulás mértékét, hanem a vezérlő impulzus szélességét közvetlenül mikroszekundumokban. Ideális esetben 1000 körül az óramutató járásának megfelelő irányú végállapotot, 2000 körül az ellenkező végállapotot és 1500 körül a középső állapotot kellene jelentenie. Ez a gyakorlatban nem jellemző, valahol 700 és 2300 körüli értékek az irányadók. 

Szintaxisa:

Servo.writeMicroseconds(val). 

Paramétere:

Servo: Servo típusú változó,

val: impulzus szélessége mikroszekundumokban.

 

read()

Visszaadja a write() utasításnak legutoljára megadott értéket. 

Szintaxisa:

Servo.read().

 

attached()

Megvizsgálja, hogy egy Servo objektumhoz kötöttünk-e fizikai csatlakozót. Bool típusú változót ad vissza.

Szintaxisa:

Servo.attached().

 

detach()

Megszünteti a Servo objektum fizikai címhez kötését.

Szintaxisa:

Servo.detach(pin).

Paraméterei:

Servo: Servo típusú változó,

pin: a PWM képes kimenet, amire a motor vezérlését kötöttük.

 

Stepper Motor könyvtár

A léptetőmotorok olyan egyenáramú motorok, amiknek az állórésze több elektromágnest tartalmaz. A tengelyen elhelyezett aktív mágnest (forgórész) az egymás után szekvenciálisan be-/kikapcsolt elektromágnesek kis lépésekben elfordítják. Jelentőségük az, hogy visszacsatolás nélkül nagy pontosságú és apró lépésekből álló forgómozgást lehet velük elérni. Két alaptípust különböztetünk meg az elektromágnesek tekercseinek kivezetései alapján. Az unipoláris motorok esetén minden tekercs egyik vége közös vezetékként hagyja el a motor burkolatát, míg a bipoláris motorok esetén a tekercsek kivezetései szabadon állnak.

14.6. †bra Unipol†ris lÇptetãmotor v†zlatrajza.png

Unipoláris léptetőmotor vázlatrajza 

A tekercseket meghatározott rendben kell működtetni, hogy a felépülő mágneses tér négy lépésben fordítson a tengelyen:

 

lépés 1 tekercs 2 tekercs 3 tekercs 4 tekercs
1 magas alacsony magas alacsony
2 alacsony magas magas alacsony
3 alacsony magas alacsony magas
4 magas alacsony magas alacsony


Logikai jelek a negyed lépésekhez
 

 

A léptetőmotorokat leíró legfontosabb adat, hogy egy lépés alatt hány fokot fordulnak el. Egy 1,8 fok/lépés precizitású motor 200 lépésben fordul teljesen körbe, tehát a 14.1 táblázatban látható lépéseket fordulatonként 200-szor kell megismételni.

 

Unipoláris léptetőmotorok

A léptetőmotorok általában több áramot vesznek fel működésükhöz, mint amennyit az Arduino digitális csatornáin keresztül kezelni képes, és sok esetben a működésükhöz szükséges feszültség sem 5 V, hanem magasabb. Az alábbi kapcsolásban szereplő integrált áramkör az ULN2004 egy teljesítmény-tranzisztorokból álló úgynevezett Darlington sor. Univerzálisan felhasználhatjuk az Arduino kimeneteinek erősítésére, csatornánként 50 V-ig 500 mA-t képes kapcsolni. Minden bemenetre adott magas szintű jel a bemenethez tartozó kimenet és a föld közé kötött fogyasztót üzembe helyezi. A COM jelzésű lábon kell, legyen az a közös tápfeszültség, amit az IC-vel kapcsoltatni szeretnénk.

14.7. †bra ULN2804, mint lÇptetãmotor meghajt¢.jpeg ULN2804, mint léptetőmotor meghajtó

Az unipoláris motorok általában 5 vagy 6 kivezetéssel rendelkeznek. A vezetékek közül 4 a forgórészt körülfogó tekercsek egy-egy vége, az ötödik pedig az összes tekercs másik vége egy vezetéken. Amennyiben 6 vezetéket látunk, akkor a motorban két tekercs van, amik két-két vége az első négy kivezetés, az ötödik és hatodik elvezetések pedig a tekercsek közepére csatlakoznak. A tekercsek ellenállásának megmérésével – egy műszer segítségével – kikövetkeztethetjük, hogy melyik kivezetés hová tartozik. A közös elvezetés egyben azt is jelenti, hogy a tekercsek és a mágneses tér polaritása mindig ugyanaz lesz.

Arduino motor-shield Çs lÇptetã motor.jpg

Arduino motor-shield és léptető motor

 

Bipoláris léptetőmotorok

Bipoláris motorok esetén a tengely forgatásához az elektromágnesek polaritását is meg kell változtatni, ezért a két tekercs mindkét kivezetése szabadon áll. A polaritás megváltoztatásának legegyszerűbb módja H-híd kapcsolással valósítható meg, ami négy tranzisztorból álló áramkör. Képzeljük el úgy, mint négy kapcsolót, amik közül kettő a tápvezetékek pozitív, kettő pedig a negatív ágát tudja kapcsolni. Amikor (14.8. ábra) S1 és S4 megszakítja, S2 és S3 zárja az áramkört, az áram az M-mel jelölt motorban az egyik irányba folyik. Megfordítva a kapcsolók állását, az áram iránya is megfordul, csakúgy, mint a tekercs által keltett mágneses tér polaritása.

 14.8. †bra H-h°d kapcsol†s funkcion†lis rajza.jpeg

H-híd kapcsolás funkcionális rajza 

 

A gyakorlatban használhatunk integrált H-híd áramkört (pl. L293D) két egyenáramú motorok forgásirányának váltására vagy egy bipoláris léptetőmotor meghajtására. 

 14.9. †bra L293D integr†lt H-h°d bekîtÇse bipol†ris lÇptetãmotorral.gif

L293D integrált H-híd bekötése bipoláris léptetőmotorral

 

Amennyiben nem szeretnénk az áramkörök megépítésével fáradozni, különféle motorok meghajtására a legkézenfekvőbb az Adafruit által gyártott MotorShield. A kiegészítő modul tartalmaz két darab L293D-t és a vezérlésüket leegyszerűsítő logikai áramkört. Alkalmazásával egyidejűleg meg tudunk hajtani 4 db egyenáramú motort, vagy két léptetőmotort és mindezektől függetlenül két szervomotort is.

 14.10. †bra Adafruit MotorShield.jpeg

Adafruit MotorShield

 

A stepper motor könyvtár használata

Amire szükség lesz:

-       Arduino,

-       unipoláris vagy bipoláris léptetőmotor,

-       ULN2804 vagy L293D vagy Adafruit MotorShield,

-       10 kiloohmos potméter.

 

Kapcsolások:

 14.1.4._uj01_bipolar_stepper_two_pins2.png

2 pines bipoláris stepper motor L293D H-híddal

 14.1.4._uj02_bipolar_stepper_four_pins.jpg

4 pines bipoláris stepper motor L293D H-híddal

 

A fentieknek megfelelően csatlakoztassunk egy léptetőmotort, és jegyezzük meg, melyik tekercs melyik Arduino kivezetéssel hozható működésbe. A potmétert feszültségosztóként a középső kivezetésével az A0 analóg bemenetre kössük.

 

Arduino kód: 76sztepper

 

A stepper motor könyvtár függvényei

Stepper()

Létrehozza a Stepper osztály egy példányát a megadott lépésszámmal és tekercsekhez tartozó Arduino csatornákkal.

Szintaxisa:

Stepper(steps, pin1, pin2),

Stepper(steps, pin1, pin2, pin3, pin4).

Paraméterei:

steps: az egy körülforduláshoz szükséges lépések száma (motortól függ),

pin1, pin2: kétvezetékes meghajtás esetén (kiegészítő logikai áramkör szükséges) a meghajtó vezérléséhez használt csatornák száma,

pin1, pin2, pin3, pin4: négyvezetékes meghajtás esetén a tekercsekhez tartozó csatornák száma.

Példakód:

Stepper myStepper = Stepper(200,4,5,6,7);

 

setSpeed()

Beállítja a motor forgási sebességét a megadott fordulat/perc alapján.

Szintaxisa:

Stepper.setSpeed(rpm). 

Paraméterei:

Stepper: Stepper osztály példánya,

rpm: forgási sebesség fordulat/percben.

 

step()

Adott számú lépést hajtat végre a motorral. Ha a megadott érték pozitív, akkor egyik, ha negatív, akkor a másik irányba forgat. Ez a függvény megvárja, amíg a motor megteszi a lépéseket.

Szintaxisa:

Stepper.step(steps).

Paraméterei:

Stepper: Stepper osztály példánya,

steps: lépések száma, polaritása a forgás irányát határozza meg.

 

 

Arduino, mint ISP

Az Arduino legnagyobb előnye és egyszerű használatának kulcsa, hogy a fejlesztőkörnyezetből – minden egyéb eszköz nélkül – az USB porton keresztül feltölthetjük a megírt programot, ami ezt követően futtatásra kerül. Az állandó program, ami ezt lehetővé teszi, az Arduino firmware-e, az úgynevezett bootloader. (Az ICSP csatlakozó SPI kommunikációs funkciójának tárgyalásakor már említettük (14.1.5.), hogy a bootloader feltöltése miatt ez a felület az összes típusú lapkán megtalálható.) Az ISP (In System Programmer) egy olyan eszköz, amivel bootloader nélküli mikrokontrollerbe tölthetünk fel kódot. A környezet példakódjai között megtaláljuk az ArduinoISP firmware-t, ami AVR ISP eszközzé alakítja az Arduinot. Lehetséges alkalmazások közül az egyik leghasznosabb a tönkrement kontrollerű Arduinok javítása – elegendő kivenni a tokjából a rossz IC-t és a helyére került újba beégetni a bootloadert egy másik Arduino segítségével. Készíthetünk egyetlen kontrollerből is költséghatékony Arduinot ugyanezzel a módszerrel.

 

Instrukciók bootloader beégetéséhez:

  1. Töltsük fel a programozóként használni kívánt Arduinora az ArduinoISP kódot.
  2. Tegyünk egy 10 uF-os kondenzátort a programozó RESET lába és a föld közé.
  3. Kössük be a programozandó eszközt az alábbi példák egyike szerint.
  4. Válasszuk ki a Board menüből a programozandó eszköz típusát.
  5. Burn bootloader menüből válasszuk az Arduino és ISP parancsot.

 

Arduino programozása Arduinoval

14.11. †bra UNO, Duemilanove, Diecimila programoz†sa.png

UNO, Duemilanove, Diecimila programozása

 

ATmega mikrokontroller programozása Arduinoval

Abban az esetben, ha egy feladat ellátásához nincs szükség az Arduino USB csatlakozójára és már megírtunk egy jól működő programot, feltölthetjük egy szabadon álló mikrokontrollerre, ami ugyanúgy fogja végrehajtani azt, mint az Arduinonk.

14.12. †bra Atmega168 Çs Atmega328 l†bkioszt†sa Çs az Arduino megfelelã csatorn†i.png 

Atmega168 és Atmega328 lábkiosztása és az Arduino megfelelő csatornái

 

14.13. †bra Atmega programoz†sa.png

Atmega programozása

 

 

forrás: http://arduino.cc/en/Tutorial/HomePagehttp://arduino.cc/en/reference/stepperhttp://arduino.cc/en/reference/servohttp://arduino.cc/en/Tutorial/ArduinoISP

Szólj hozzá!

Címkék: motorok leckék könyvtárak stepper servo ISP lektorált

süti beállítások módosítása