Stap 4: Code
(Code gehackt uit een RGB LED cross-fade, bijvoorbeeld door Clay Shirky < clay.shirkyN.B. De PCB led controller gaat de LED's branden wanneer laag, niet hoog.
=============================================
/*
- Intelligente zonne-aangedreven Garden Light versie 0.02 zzpza < bij > truenames.co < dot > uk
- Originele codevoorbeeld door Clay Shirky < clay.shirky nyu < dot > edu < op > >
*/
int ledPin = 3; LED, aangesloten op digital pin 3
int ledVal = 0; waarde te sturen naar pin
int wachten = 20; 20ms (.02 seconde) vertraging; verkorten voor sneller verdwijnt
int solarPin = 0; analoge pin zonnepaneel is aangesloten op
int solarVal; waarde van de solarpanel leest
int PIRPin = 1; analoge pin PIR is aangesloten op
int PIRval; waarde van de PIR leest
int ledState = 1; status van LED
int counter = 0; timer voor LED
VOID Setup
{
Serial.begin(9600);
pinMode (ledPin, OUTPUT);
digitalWrite (ledPin, hoge); leds uitschakelen
ledState = 0;
delay(500);
}
VOID fadeDownLed()
{
digitalWrite (ledPin, laag);
Serial.println("fadeDownLed");
for (int i = 0; ik < = 255; i ++)
{
analogWrite(ledPin, i);
Serial.Print ("fadeDownLed");
Serial.println(i);
vertraging(20);
}
digitalWrite (ledPin, hoge);
ledState = 0;
Counter = 0;
}
VOID fadeUpLed()
{
digitalWrite (ledPin, hoge);
Serial.println("fadeUpLed");
for (int i = 255; ik > = 0; i--)
{
analogWrite(ledPin, i);
Serial.Print ("fadeUpLed");
Serial.println(i);
vertraging(20);
}
digitalWrite (ledPin, laag);
ledState = 1;
}
VOID turnOffLed()
{
digitalWrite (ledPin, laag);
ledState = 1;
}
VOID turnOnLed()
{
digitalWrite (ledPin, hoge);
ledState = 0;
}
VOID readSolarPanel()
{
solarVal = analogRead(solarPin);
Serial.Print ("zonne-energie:");
Serial.println(solarVal);
}
VOID readPIR()
{
PIRval = analogRead(PIRPin);
Serial.Print ("PIR:");
Serial.println(PIRval);
}
void loop
{
readSolarPanel();
readPIR();
Als (solarVal < 100 & & ledState == 0 & & PIRval < 5)
{
fadeUpLed();
}
Als (solarVal > 120 & & ledState == 1 & & PIRval > 5)
{
fadeDownLed();
}
Als (counter > 5000) / / hoe lang LED's moeten op voor
{
fadeDownLed();
}
Als (ledState == 1)
{
Serial.println(Counter);
teller ++;
}
}