This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
ultimatestarterkit [2019/04/26 09:27] tamas [22. Projekt, PCF8591 Potméter] |
ultimatestarterkit [2019/05/02 10:57] tamas [30. Projekt, Talaj nedvesség érzékelő] |
||
---|---|---|---|
Line 2390: | Line 2390: | ||
=====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 2419: | 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** | ||
+ | * | ||
+ | |||
+ | Végül futtassuk és nézzük meg milyen értéket ad a talaj nedvességére. | ||
+ | |||
+ | * **sudo ./talajnedvesseg** | ||
+ | |||
+ | {{ :rpistarterkit:p30_01.png |}} | ||
---- | ---- | ||