This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
ultimatestarterkit [2019/04/26 08:50] tamas [21. Projekt, LM35 Hőmérséklet érzékelő] |
ultimatestarterkit [2019/05/02 10:58] (current) tamas [30. Projekt, Talaj nedvesség érzékelő] |
||
|---|---|---|---|
| Line 2251: | Line 2251: | ||
| A képre kattintva nagyobb méretben is megtekinthető. | A képre kattintva nagyobb méretben is megtekinthető. | ||
| - | {{ :rpistarterkit:p22_01.png |}} | + | {{ :rpistarterkit:p21_01.png |}} |
| **Programozás** | **Programozás** | ||
| Line 2261: | Line 2261: | ||
| * **sudo nano homero.c** | * **sudo nano homero.c** | ||
| - | {{ :rpistarterkit:p22_02.png |}} | + | {{ :rpistarterkit:p21_02.png |}} |
| Ezután írjuk bele a következő kódot. | Ezután írjuk bele a következő kódot. | ||
| Line 2298: | Line 2298: | ||
| </html> | </html> | ||
| - | {{ :rpistarterkit:p22_03.png |}} | + | {{ :rpistarterkit:p21_03.png |}} |
| Mentsük el, majd tegyük futtathatóvá a fájlt a GCC paranccsal. | Mentsük el, majd tegyük futtathatóvá a fájlt a GCC paranccsal. | ||
| Line 2304: | Line 2304: | ||
| * **sudo gcc homero.c -o homero -lwiringPi** | * **sudo gcc homero.c -o homero -lwiringPi** | ||
| - | {{ :rpistarterkit:p22_04.png |}} | + | {{ :rpistarterkit:p21_04.png |}} |
| Végül futtassuk a programot, ha mindent jól kötöttünk, akkor a képernyőn megjelenik a mért hőmérséklet. | Végül futtassuk a programot, ha mindent jól kötöttünk, akkor a képernyőn megjelenik a mért hőmérséklet. | ||
| Line 2310: | Line 2310: | ||
| * **sudo ./homero** | * **sudo ./homero** | ||
| - | {{ :rpistarterkit:p22_05.png |}} | + | {{ :rpistarterkit:p21_05.png |}} |
| ---- | ---- | ||
| =====22. Projekt, PCF8591 Potméter===== | =====22. Projekt, PCF8591 Potméter===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | A Raspberry Pi alapvetően nem rendelkezik AD / DA (A : Analóg, D : Digitális) átalakító funkcióval, ezért ha analóg jelet akarunk érzékelni csatlakoztatni kell hozzá a Keyestudio RPI GPIO-PCF8591 kártyát. Ezután be kell kapcsolni az I2C interfészt, hogy tudjuk használni az analóg csatlakozót. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db Potenciométer | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva nagyobb méretben is megtekinthető. | ||
| + | |||
| + | {{ :rpistarterkit:p22_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Először kapcsoljuk be az I2C modult, ha még nem lenne bekapcsolva. Ennek részletes leírását a 20-as projektben találja. | ||
| + | |||
| + | Ha bekapcsoltuk, akkor hozzunk létre egy új fájlt **potmeter.c** néven. | ||
| + | |||
| + | * **sudo nano potmeter.c** | ||
| + | |||
| + | {{ :rpistarterkit:p22_02.png |}} | ||
| + | |||
| + | Írjuk a fájlba a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <pcf8591.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | #define Address 0x48 //pcf8591 Address | ||
| + | #define BASE 64 | ||
| + | #define A0 BASE+0 //input address of A0 | ||
| + | #define A1 BASE+1 //input address of A1 | ||
| + | #define A2 BASE+2 //input address of A2 | ||
| + | #define A3 BASE+3 //input address of A3 | ||
| + | int main(void) | ||
| + | { | ||
| + | unsigned char value; | ||
| + | wiringPiSetup(); | ||
| + | pcf8591Setup(BASE,Address); //configure pcf8591 | ||
| + | |||
| + | while(1) | ||
| + | { | ||
| + | value=analogRead(A0); // read the value of A0 port | ||
| + | printf("A0:%d\n",value); // print the value of A0 on the terminal | ||
| + | delay(100); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p22_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a Raspberry számára a GCC paranccsal. | ||
| + | |||
| + | * **sudo gcc potmeter.c -o potmeter -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p22_04.png |}} | ||
| + | |||
| + | Végül futtassuk a programot, ha jól csináltuk a potmétert tekergetve különböző értékeket kapunk majd. | ||
| + | |||
| + | * **sudo ./potmeter** | ||
| + | |||
| + | {{ :rpistarterkit:p22_05.png |}} | ||
| ---- | ---- | ||
| =====23. Projekt, PIR Mozgásérzékelő szenzor===== | =====23. Projekt, PIR Mozgásérzékelő szenzor===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektben egy PIR mozgásérzékelőt fogunk használni, annak érdekében, hogy megállapítsuk van-e valaki a helységben vagy sem. Ha mozgást észlel kiírja "Somebody is in this area!" ha nemNo one!". | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db PIR mozgásérzékelő | ||
| + | * 1 db Piros LED | ||
| + | * 1 db Ellenállás | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva megtekinthető nagyobb méretben is. | ||
| + | |||
| + | {{ :rpistarterkit:p23_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Először hozzunk létre egy új fájlt **mozgaserzekelo.c** néven. | ||
| + | |||
| + | * **sudo nano mozgaserzekelo.c** | ||
| + | |||
| + | {{ :rpistarterkit:p23_02.png |}} | ||
| + | |||
| + | Ebbe a fájlba írjuk bele a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | wiringPiSetup(); | ||
| + | char val; | ||
| + | { | ||
| + | pinMode(1,INPUT); | ||
| + | pinMode(2,OUTPUT); | ||
| + | } | ||
| + | | ||
| + | while(1) | ||
| + | { | ||
| + | val=digitalRead(1); | ||
| + | if(val==1) | ||
| + | { | ||
| + | printf("Somebody is in this area!\n"); | ||
| + | digitalWrite(2,HIGH); | ||
| + | delay(100); | ||
| + | } | ||
| + | |||
| + | else | ||
| + | { | ||
| + | printf("No one!\n"); | ||
| + | digitalWrite(2,LOW); | ||
| + | delay(100); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p23_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a GCC paranccsal. | ||
| + | |||
| + | * **sudo gcc mozgaserzekelo.c -o mozgaserzekelo -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p23_04.png |}} | ||
| + | |||
| + | Végül futtassuk a fájlt, a megszokott módon. | ||
| + | |||
| + | * **sudo ./mozgaserzekelo** | ||
| + | |||
| + | {{ :rpistarterkit:p23_05.png |}} | ||
| + | |||
| ---- | ---- | ||
| =====24. Projekt, MQ-2 Analóg Gáz érzékelő===== | =====24. Projekt, MQ-2 Analóg Gáz érzékelő===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektben egy analóg ház szenzort fogunk tesztelni. Megmérjük, hogy tartalmaz-e nagy mennyiségben a levegő, propán, hidrogén, vagy egyéb gázokat. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db Analóg gáz érzékelő | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva nagyobb méretben is megtekinthető. | ||
| + | |||
| + | {{ :rpistarterkit:p24_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Először is be kell kapcsolni az I2C modult, amennyiben még nincs bekapcsolva, vagy nem tudja hogyan kellene, menjen vissza a 20. Projekthez és ott megtalálja a bekapcsoláshoz szükséges lépéseket. | ||
| + | |||
| + | Bekapcsolás után hozzunk létre egy új fájlt **gazerzekelo.c** néven. | ||
| + | |||
| + | * **sudo nano gazerzekelo.c** | ||
| + | |||
| + | {{ :rpistarterkit:p24_02.png |}} | ||
| + | |||
| + | Ezután írjuk bele a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <pcf8591.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | #define Address 0x48 | ||
| + | #define BASE 64 | ||
| + | #define A0 BASE+0 | ||
| + | #define A1 BASE+1 | ||
| + | #define A2 BASE+2 | ||
| + | #define A3 BASE+3 | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | unsigned char value; | ||
| + | wiringPiSetup(); | ||
| + | pinMode(1,OUTPUT); | ||
| + | pcf8591Setup(BASE,Address); | ||
| + | | ||
| + | while(1) | ||
| + | { | ||
| + | value=analogRead(A0); | ||
| + | printf("A0:%d\n",value); | ||
| + | delay(100); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p24_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a fájlt a Raspberry számára a GCC paranccsal. | ||
| + | |||
| + | * **sudo gcc gazerzekelo.c -o gazerzekelo -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p24_04.png |}} | ||
| + | |||
| + | Végül futtassuk a fájlt és nézzük meg a végeredményt. | ||
| + | |||
| + | * **sudo ./gazerzekelo** | ||
| + | |||
| + | {{ :rpistarterkit:p24_05.png |}} | ||
| + | |||
| ---- | ---- | ||
| =====25. Projekt, ADXL345 Gyorsulás mérő ===== | =====25. Projekt, ADXL345 Gyorsulás mérő ===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektben, egy három tengelyes gyorsulás mérőt csatlakoztatunk a Raspberryhez, amivel képesek vagyunk mérni a legkisebb elmozdulást is. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db ADXL345 gyorsulás mérő | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva megtekinthető nagyobb méretben is. | ||
| + | |||
| + | {{ :rpistarterkit:p25_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Először is be kell kapcsolnunk az I2C modult, amennyiben még nincs bekapcsolva, vagy nem tudja hogyan kell, menjen vissza a 20. Projekthez ahol részletesen elmagyarázzuk, hogy is kell csinálni. | ||
| + | |||
| + | Ezután hozzunk létre egy új fájlt **gyorsulas.c** néven. | ||
| + | |||
| + | * **sudo nano gyorsulas.c** | ||
| + | |||
| + | {{ :rpistarterkit:p25_02.png |}} | ||
| + | |||
| + | Ezután írjuk a következő kódot a fájlba. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | #include <wiringPiI2C.h> | ||
| + | #include <stdio.h> | ||
| + | #include <stdlib.h> | ||
| + | #include <errno.h> | ||
| + | |||
| + | #define DevAddr 0x53 //device address | ||
| + | |||
| + | struct acc_dat{ | ||
| + | int x; | ||
| + | int y; | ||
| + | int z; | ||
| + | }; | ||
| + | |||
| + | void adxl345_init(int fd) | ||
| + | { | ||
| + | wiringPiI2CWriteReg8(fd, 0x31, 0x0b); | ||
| + | wiringPiI2CWriteReg8(fd, 0x2d, 0x08); | ||
| + | // wiringPiI2CWriteReg8(fd, 0x2e, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x1e, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x1f, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x20, 0x00); | ||
| + | |||
| + | wiringPiI2CWriteReg8(fd, 0x21, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x22, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x23, 0x00); | ||
| + | |||
| + | wiringPiI2CWriteReg8(fd, 0x24, 0x01); | ||
| + | wiringPiI2CWriteReg8(fd, 0x25, 0x0f); | ||
| + | wiringPiI2CWriteReg8(fd, 0x26, 0x2b); | ||
| + | wiringPiI2CWriteReg8(fd, 0x27, 0x00); | ||
| + | |||
| + | wiringPiI2CWriteReg8(fd, 0x28, 0x09); | ||
| + | wiringPiI2CWriteReg8(fd, 0x29, 0xff); | ||
| + | wiringPiI2CWriteReg8(fd, 0x2a, 0x80); | ||
| + | wiringPiI2CWriteReg8(fd, 0x2c, 0x0a); | ||
| + | wiringPiI2CWriteReg8(fd, 0x2f, 0x00); | ||
| + | wiringPiI2CWriteReg8(fd, 0x38, 0x9f); | ||
| + | } | ||
| + | |||
| + | struct acc_dat adxl345_read_xyz(int fd) | ||
| + | { | ||
| + | char x0, y0, z0, x1, y1, z1; | ||
| + | struct acc_dat acc_xyz; | ||
| + | |||
| + | x0 = 0xff - wiringPiI2CReadReg8(fd, 0x32); | ||
| + | x1 = 0xff - wiringPiI2CReadReg8(fd, 0x33); | ||
| + | y0 = 0xff - wiringPiI2CReadReg8(fd, 0x34); | ||
| + | y1 = 0xff - wiringPiI2CReadReg8(fd, 0x35); | ||
| + | z0 = 0xff - wiringPiI2CReadReg8(fd, 0x36); | ||
| + | z1 = 0xff - wiringPiI2CReadReg8(fd, 0x37); | ||
| + | |||
| + | acc_xyz.x = (int)(x1 << 8) + (int)x0; | ||
| + | acc_xyz.y = (int)(y1 << 8) + (int)y0; | ||
| + | acc_xyz.z = (int)(z1 << 8) + (int)z0; | ||
| + | |||
| + | return acc_xyz; | ||
| + | } | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | int fd; | ||
| + | struct acc_dat acc_xyz; | ||
| + | |||
| + | fd = wiringPiI2CSetup(DevAddr); | ||
| + | |||
| + | if(-1 == fd){ | ||
| + | perror("I2C device setup error"); | ||
| + | } | ||
| + | |||
| + | adxl345_init(fd); | ||
| + | |||
| + | while(1){ | ||
| + | acc_xyz = adxl345_read_xyz(fd); | ||
| + | printf("x: %05d y: %05d z: %05d\n", acc_xyz.x, acc_xyz.y, acc_xyz.z); | ||
| + | |||
| + | } | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p25_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a fájlt a GCC parancs segítségével. | ||
| + | |||
| + | * **sudo gcc gyorsulas.c -o gyorsulas -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p25_04.png |}} | ||
| + | |||
| + | Végül futtassuk a programot, ha mindent jól csináltunk, akkor ha mozgatjuk az eszközt akkor megkapjuk az elmozdulás mértékét. | ||
| + | |||
| + | * **sudo ./gyorsulas** | ||
| + | |||
| + | {{ :rpistarterkit:p25_05.png |}} | ||
| ---- | ---- | ||
| =====26. Projekt, Ultrahangos érzékelő ===== | =====26. Projekt, Ultrahangos érzékelő ===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektben egy ultrahangos érzékelővel fogjuk mérni, hogy az adott tárgy milyen messze van tőlünk adott távolságon belül. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db Ultrahangos érzékelő | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva megtekinthető nagyobb méretben is. | ||
| + | |||
| + | {{ :rpistarterkit:p26_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Hozzunk létre egy új fájlt **ultrahang.c** néven. | ||
| + | |||
| + | * **sudo nano ultrahang.c** | ||
| + | |||
| + | {{ :rpistarterkit:p26_02.png |}} | ||
| + | |||
| + | Ezután írjuk bele a következő C nyelvű kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <stdio.h> | ||
| + | #include <sys/time.h> | ||
| + | |||
| + | #define Trig 5 | ||
| + | #define Echo 4 | ||
| + | void ultraInit(void) | ||
| + | { | ||
| + | pinMode(Echo, INPUT); | ||
| + | pinMode(Trig, OUTPUT); | ||
| + | } | ||
| + | |||
| + | float disMeasure(void) | ||
| + | { | ||
| + | struct timeval tv1; | ||
| + | struct timeval tv2; | ||
| + | long start, stop; | ||
| + | float dis; | ||
| + | |||
| + | digitalWrite(Trig, LOW); | ||
| + | delayMicroseconds(2); | ||
| + | |||
| + | digitalWrite(Trig, HIGH); | ||
| + | delayMicroseconds(10); | ||
| + | digitalWrite(Trig, LOW); | ||
| + | |||
| + | while(!(digitalRead(Echo) == 1)); | ||
| + | gettimeofday(&tv1, NULL); | ||
| + | |||
| + | while(!(digitalRead(Echo) == 0)); | ||
| + | gettimeofday(&tv2, NULL); | ||
| + | |||
| + | start = tv1.tv_sec * 1000000 + tv1.tv_usec; | ||
| + | stop = tv2.tv_sec * 1000000 + tv2.tv_usec; | ||
| + | |||
| + | dis = (float)(stop - start) / 1000000 * 34000 / 2; | ||
| + | |||
| + | return dis; | ||
| + | } | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | float dis; | ||
| + | |||
| + | if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen | ||
| + | printf("setup wiringPi failed !"); | ||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | ultraInit(); | ||
| + | |||
| + | while(1){ | ||
| + | dis = disMeasure(); | ||
| + | printf("distance = %0.2f cm\n",dis); | ||
| + | delay(500); | ||
| + | } | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p26_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a GCC parancs segítségével. | ||
| + | |||
| + | * **sudo gcc ultrahang.c -o ultrahang -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p26_04.png |}} | ||
| + | |||
| + | Futtassuk a fájlt, ha mindent jól csináltunk akkor közel pontosan megkapjuk, hogy az adott tárgy milyen távolságra van a szenzortól. | ||
| + | |||
| + | * **sudo ./ultrahang** | ||
| + | |||
| + | {{ :rpistarterkit:p26_05.png |}} | ||
| ---- | ---- | ||
| =====27. Projekt, Joystick modul ===== | =====27. Projekt, Joystick modul ===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | A joystick modul 2 potenciométerből áll, amit megfeleltetünk X és Y tengelynek. Z tengelynek egy gombot használunk. A joystick jeleit analóg módon tudjuk érzékelni ezért szükségünk van a Keyestudio RPI GPIO... kártyájára, mivel a Raspberry önmagában nem rendelkezik ilyen ki/bemenettel. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db Joystick modul | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva megtekinthető nagyobb méretben is. | ||
| + | |||
| + | {{ :rpistarterkit:p27_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Mivel analóg modult használunk, először be kell kapcsolni az I2C modult. Amennyiben még nem tette meg vagy nem tudja hogy kell, menjen vissza a 20. Projekthez, ahol minden részletesen el van magyarázva. | ||
| + | |||
| + | Ezután hozzunk létre egy új fájlt **joystick.c** néven. | ||
| + | |||
| + | * **sudo nano joystick.c** | ||
| + | |||
| + | {{ :rpistarterkit:p27_02.png |}} | ||
| + | |||
| + | Majd írjuk bele a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <pcf8591.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | #define Address 0x48 | ||
| + | #define BASE 64 | ||
| + | #define A0 BASE+0 | ||
| + | #define A1 BASE+1 | ||
| + | #define A2 BASE+2 | ||
| + | #define A3 BASE+3 | ||
| + | char dat; | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | unsigned char value; | ||
| + | wiringPiSetup(); | ||
| + | pinMode(1,INPUT); | ||
| + | pcf8591Setup(BASE,Address); | ||
| + | while(1) | ||
| + | { | ||
| + | value=analogRead(A0); | ||
| + | printf("X:%d ",value); | ||
| + | value=analogRead(A1); | ||
| + | printf("Y:%d ",value); | ||
| + | dat=digitalRead(1); | ||
| + | if(dat==HIGH) | ||
| + | printf("DO:%d\n",dat); | ||
| + | if(dat==LOW) | ||
| + | printf("DO:%d\n",dat); | ||
| + | delay(100); | ||
| + | |||
| + | // analogWrite(BASE,value++); | ||
| + | // printf("AOUT:%d\n",value++); | ||
| + | // delay(50); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p27_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a GCC parancs segítségével. | ||
| + | |||
| + | * **sudo gcc joystick.c -o joystick -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p27_04.png |}} | ||
| + | |||
| + | Majd végül futtassuk a programot, ha mindent jól csináltunk, megkapjuk X,Y és Z értéket ahol Z gombként van jelen. | ||
| + | |||
| + | * **sudo ./joystick** | ||
| + | |||
| + | {{ :rpistarterkit:p27_05.png |}} | ||
| ---- | ---- | ||
| =====28. Projekt, 5V Relay ===== | =====28. Projekt, 5V Relay ===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektben, egy egyszerű 5V-os relét fogunk tesztelni. A relé attól függően kapcsol hogy magas vagy alacsony jelet kap. Ezzel a módszerrel fogunk egy LED-et villogtatni a következőkben. | ||
| + | |||
| + | **Eszközszökséglet** | ||
| + | |||
| + | * 1 db Relay modul | ||
| + | * 1 db Piros LED | ||
| + | * 1 db Ellenállás | ||
| + | * Keyestudio PRI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva megtekinthető nagyobb méretben is. | ||
| + | |||
| + | {{ :rpistarterkit:p28_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Első lépésként, hozzunk létre egy új fájlt **relay.c** néven. | ||
| + | |||
| + | * **sudo nano relay.c** | ||
| + | |||
| + | {{ :rpistarterkit:p28_02.png |}} | ||
| + | |||
| + | Ezután írjuk bele a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | int main() | ||
| + | { | ||
| + | wiringPiSetup(); | ||
| + | |||
| + | { | ||
| + | pinMode(1,OUTPUT); | ||
| + | } | ||
| + | | ||
| + | while(1) | ||
| + | { | ||
| + | digitalWrite(1,HIGH); | ||
| + | delay(500); | ||
| + | digitalWrite(1,LOW); | ||
| + | delay(500); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p28_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá a GCC paranccsal. | ||
| + | |||
| + | * **sudo gcc relay.c -o relay -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p28_04.png |}} | ||
| + | |||
| + | Végül futtassuk, ha mindent jól csináltunk, egy kattogó hang keretében a LED fel és le fog kapcsolni. A kattogó hang ahogy a relay kapcsolja a benne lévő mechanikus kapcsolót. | ||
| + | |||
| + | * **sudo ./relay** | ||
| + | |||
| + | {{ :rpistarterkit:p28_05.png |}} | ||
| ---- | ---- | ||
| =====29. Projekt, DHT11 Hőmérséklet és Páratartalom érzékelő ===== | =====29. Projekt, DHT11 Hőmérséklet és Páratartalom érzékelő ===== | ||
| + | |||
| + | **Bevezetés** | ||
| + | |||
| + | |||
| ---- | ---- | ||
| Line 2348: | Line 2957: | ||
| =====30. Projekt, Talaj nedvesség érzékelő ===== | =====30. Projekt, Talaj nedvesség érzékelő ===== | ||
| + | **Bevezetés** | ||
| + | |||
| + | Ebben a projektbe, a talaj nedvesség tartalmának vizsgálására alkalmas eszközt fogunk tesztelni. | ||
| + | |||
| + | **Eszközszükséglet** | ||
| + | |||
| + | * 1 db Talaj nedvesség érzékelő | ||
| + | * Keyestudio RPI GPIO-PCF8591 kártya | ||
| + | |||
| + | **Eszközök csatlakoztatása** | ||
| + | |||
| + | A képre kattintva nagyobb méretben is megtekinthető. | ||
| + | |||
| + | {{ :rpistarterkit:p30_01.png |}} | ||
| + | |||
| + | **Programozás** | ||
| + | |||
| + | Első lépésként kapcsoljuk be az I2C modult, amennyiben még nincs bekapcsolva, vagy nem tudja, hogyan kell, menjen vissza a 20. Projekthez ahol részletesen elmagyarázzuk, a bekapcsolás menetét. | ||
| + | |||
| + | Bekapcsolás után, hozzunk létre egy úgy fájlt **talajnedvesseg.c** néven. | ||
| + | |||
| + | * **sudo nano talajnedvesseg.c** | ||
| + | |||
| + | {{ :rpistarterkit:p30_02.png |}} | ||
| + | |||
| + | Majd írjuk bele a következő kódot. | ||
| + | |||
| + | <html> | ||
| + | <pre> | ||
| + | |||
| + | #include <wiringPi.h> | ||
| + | #include <pcf8591.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | #define Address 0x48 | ||
| + | #define BASE 64 | ||
| + | #define A0 BASE+0 | ||
| + | #define A1 BASE+1 | ||
| + | #define A2 BASE+2 | ||
| + | #define A3 BASE+3 | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | unsigned char value; | ||
| + | wiringPiSetup(); | ||
| + | pcf8591Setup(BASE,Address); | ||
| + | |||
| + | while(1) | ||
| + | { | ||
| + | value=analogRead(A0); | ||
| + | printf("S:%d\n",value); | ||
| + | delay(50); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | </html> | ||
| + | |||
| + | {{ :rpistarterkit:p30_03.png |}} | ||
| + | |||
| + | Mentsük el, majd tegyük futtathatóvá GCC paranccsal. | ||
| + | |||
| + | * **sudo gcc talajnedvesseg.c -o talajnedvesseg -lwiringPi** | ||
| + | |||
| + | {{ :rpistarterkit:p30_04.png |}} | ||
| + | |||
| + | Végül futtassuk és nézzük meg milyen értéket ad a talaj nedvességére. | ||
| + | |||
| + | * **sudo ./talajnedvesseg** | ||
| + | |||
| + | {{ :rpistarterkit:p30_05.png |}} | ||
| ---- | ---- | ||