2024. május 1., szerda

Gyorskeresés

Útvonal

Cikkek » Akármi rovat

Arduino konyhapult világítás

Egy Arduino Nano, egy MOSFET meghajtó, led szalagok, alu profilok, kábelcsatornák, 20m vezeték és egy hét szabadidő.

[ ÚJ TESZT ]

Bevezető a kódba

A következő oldalakon megpróbálom bemutatni a programomat és igyekszem közérthetővé tenni, mit csinálnak a fontosabb kód részletek (így egy év múlva nekem is jól jön majd ez az írás, hehe). Máshol viszont lehet kissé felületes lesz, hisz nem célom senkit megtanítani programozni. Kérlek, ne számítsatok Hello World szintű magyarázatokra! :) A teljesen kezdőknek több bevezető cikk is született már a Logout hasábjain is, melyek közül néhányat linkeltem is a cikk előzményeiben.

Bevezetésként áttekinteném a kód függőségeit:
#include <EEPROM.h>
#include <avr/wdt.h> //watchdog
#include <ADCTouch.h>

Első kettő beépített könyvtár, egyik az EEPROM használatához kell, a másik meg a watchdoghoz (egy hardveres időzítő, ami a processzor megakadása/lefagyása esetén újraindítja azt). Viszont a harmadik az Arduino Playground-ról való mely az érintés érzékelőhöz kell. Ha te inkább egy elektromechanikus kapcsolót vagy gombot használnál, akkor ez utóbbira nem lesz szükség.

Ezután definiáltam a debug kiíratásokat a Serial monitoron:
//#define DEBUG
#ifdef DEBUG
#define debug(x) Serial.print(x)
#define debugln(x) Serial.println(x)
#else
#define debug(x)
#define debugln(x)
#endif

Ez nem csinál mást, mint beszúr vagy kivesz a programból egy rakás Serial.print() parancsot. Kicsit lerövidíti a monoton kódolást.

A GPIO lábakat általában a program elején szoktam definiálni:
#define PS_ON 3 //PSU ON signal
#define PS_GOOD 2 //PSU good signal
#define ldr A1 //input of photoresistor with internal pullup
#define ldr_gnd 7 //GND of photoresistor
#define touch A0 //touch sensor
#define pir_in 4 //Signal of PIR sensor
#define pir_pwr 8 //Vcc of PIR sensor

Ez az ajánlott módszer, így nem kell egyesével átírni az összes előfordulást, ha változik a bekötés.

Szoktam definiálni konstans értékeket, konfigurációkat, ha tetszik. Így ezek is könnyen kikereshetők a program elején, ha finomhangolni kell a beállításokat:
#define max_light 255 //max felső fényerő
#define max_b_light 180 //max alsó fényerő
#define night_light 100 //éjszakai irányfény fényereje
#define dark 850 //fotoellenállás határértéke félhomályban

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.