Stap 5: Arduino code
Initialisatie
Alleen de WDT (WatchDogTimer) en de RFM bibliotheken inbegrepen zijn. De WDT wordt gebruikt in het geval de Arduino hang ergens en met de WDT op beginstand vanzelf zetten zou. Echter met deze box, de Arduino verloor nooit zelf tot nu.
De code is gekoppeld en moet min of meer begrijpelijk. Er wordt verondersteld dat u weet dat spul ten minste tot halverwege het lezen. De Arduino code uitzien vertrouwd zoals het is gekopieerd uit verschillende bronnen, bewerkt en samen te stellen.
Snap het niet al te kieskeurig op de NodeID; Houd het 2 cijfers aangezien u waarschijnlijk niet meer dan 90 knooppunten in uw huis hoeft. Het aantal cijfers niet wijzigen, of u zult moeten veranderen vrijwel overal later.
Definieer de frequentieband zoals gegeven door de module die u hebt gekocht. De ChannelFreq moet mogelijk worden aangepast aan de normen waar u woont; het nummer is in Hertz.
// RFM69#define NODEID 21 //unique for each node on same network Floor&Room&Node#=X&XX&X #define NETWORKID 666 //the same on all nodes that talk to each other #define GATEWAYID 1#define FREQUENCY RF69_433MHZ#define ENCRYPTKEY "1234567890ABCDEF" //exactly the same 16 characters/bytes on all nodes! #define ChannelFreq 434520000
De berichtenstructuur heeft hetzelfde in het hele netwerk
typedef struct { // Radio packet format int nodeID; // node identifier int devID; // device identifier int cmd; // read or write long intVal; // integer payload float fltVal; // floating payload char payLoad[32]; // string payload } Message;
Een apparaat is gedefinieerd voor de LightSequence, de dim schakeloptie en de fadespeed
#define LEDDev 75#define LEDDimmDev 76#define LEDFadeDev 77
Ik denk dat het is makkelijker om opdrachten aan te sturen.
Setup
Niets bijzonders is te vermelden. De digitalwrite en de kleur licht aan het einde van de installatie is een gemakkelijke manier om te zien de Arduino correct opgestart. Het ook een snelle manier om te zien als alle verbindingen (met name met grond) ok werden gesoldeerd.
Loop
Er wordt gecontroleerd of bepaalde gegevens is ontvangen via FM (meer op dat hieronder).
Als de ontvangen gegevens zegt overstappen naar een vooraf gedefinieerde effen kleur, is dat ingesteld.
De single-blink-codes worden vooraf te gedefinieerd. Er zijn 7 enkele kleuren te gaan hoog en laag in herhaalde sets. Het wordt herhaald, pauzes tussen knippert en kleuren kunnen niet worden gewijzigd van openHAB. De LED licht op volle kracht.
Let erop bij het testen en verlichting met de LED's in je gezicht zal zeker leiden tot hoofdpijn!
Het dual-knipperen is zeer vergelijkbaar met de single-knipperen. Daarin gewoon een "als lus meer".
Beide single en dual-knippert zijn niet echt optimaal is voor de stemming, zoals je misschien gek. Dus beter gebruik ze als alarm lichten (rood voor brand, blauw voor water, rood-blauw voor PIR verrekening wanneer er niemand thuis, enz.), of interface openHAB met de FritzBox en hebben knipperen geel wanneer de telefoon ring, enzovoort.
De kleur Golf of ademhaling licht is ideaal voor de stemming. Echter alleen "zuivere kleuren" (R, G, B, en de 3 mixen + wit) zijn mooi te worden zwaaide. Anders heb je ernstige berekeningen uitvoeren op de Arduino en de kleuren zal nog steeds niet leuk. Voor ex. R255, G50, kunnen niet B100 worden gedimd mooi neer aan 0 omdat de nummers niet alle 0 of 255 zijn... Als u beginnen met het testen dat u zult weten wat ik bedoel.
De grote golf met ColorSet = 80 is een gewijzigde code van de vorige stap link. Het is gewijzigd om te worden uitgevoerd in een lus en "tegelijkertijd het" (tussen dim-stappen tussen de intervallen fade-snelheid) luisteren naar instructies van openHAB verzonden via FM.
Opdracht parseren
Afhankelijk van de waarden in het FM-gegevenspakket ontvangen, worden verschillende acties genomen.
Apparaat 80 is de AC-estafette. Eigenlijk ben ik niet zeker als het echt nodig want als de kleur 0.0.0* wordt verzonden, de LED donker blijft. Ik denk dat de voeding gebruikt nog steeds een beetje macht, en ik voel me meer opslaan weten dat de AC is uitgeschakeld.
Apparaat 77 wordt gedefinieerd als de FadeSpeed gebruikt in de golven van de kleur. Het werkt gewoon de variabele die vervolgens in de volgende cyclus van de lus gebruikt wordt.
Apparaat 76 wordt gebruikt voor het dimmen. Het werkt ook gewoon de variabele die vervolgens in de volgende cyclus van de lus gebruikt wordt.
Apparaat 75 wordt gebruikt voor het instellen van de LightSequence. De reden voor het doen op die manier was dat de lichte reeks kan worden gekozen met een getal van 2 cijfers, terwijl het kiezen van een kleur via color-code zou heel ingewikkeld geworden wilt u vervolgens de kleur te vervagen. Effen kleuren en knippert moet niet zo moeilijk hoor.
Afhankelijk van de ColorSet, zijn de verschillende variabelen anders ingesteld.
Te doen in de volgende versie van de Arduino-code:
- Verwijder alle vertragingen en vervang ze met dezelfde logica voor de intervallen tussen de RFM verzenden.
- Verhoog de standaardinstelling FadeSpeed tot 200 of zo, die is een minder nerveus licht om naar te kijken...