Intelligent sol trädgård ljus - del 2 (4 / 4 steg)
Steg 4: kod
(Koden hacka från en RGB LED cross fade exempel av Clay Shirky < clay.shirkyOBS! Led controller PCB aktiverar lysdioderna när låg, inte hög.
=============================================
/*
- Intelligent Solar Powered trädgård Light version 0,02 zzpza < i > truenames.co < dot > Storbritannien
- Ursprungliga kodexempel av Clay Shirky < clay.shirky < i > nyu < dot > edu >
*/
int ledPin = 3; LED, ansluten till digital stift 3
int ledVal = 0; värde att skicka till stift
int vänta = 20; 20ms (02 sekund) försening. förkorta för snabbare bleknar
int solarPin = 0; analoga pin solpanel är ansluten till
int solarVal; värdet läsa från solpanel
int PIRPin = 1; analoga pin PIR är ansluten till
int PIRval; värdet läsa från PIR
int ledState = 1; status för LED
int counter = 0; timer för LED
void setup()
{
Serial.BEGIN(9600);
pinMode (ledPin, produktionen);
digitalWrite (ledPin, hög); Inaktivera lysdioder
ledState = 0;
Delay(500);
}
void fadeDownLed()
{
digitalWrite (ledPin, låg);
Serial.println("fadeDownLed");
för (int jag = 0; jag < = 255; i ++)
{
analogWrite(ledPin, i);
Serial.Print ("fadeDownLed");
Serial.println(i);
Delay(20);
}
digitalWrite (ledPin, hög);
ledState = 0;
räknare = 0;
}
void fadeUpLed()
{
digitalWrite (ledPin, hög);
Serial.println("fadeUpLed");
för (int jag = 255; jag > = 0; i--)
{
analogWrite(ledPin, i);
Serial.Print ("fadeUpLed");
Serial.println(i);
Delay(20);
}
digitalWrite (ledPin, låg);
ledState = 1;
}
void turnOffLed()
{
digitalWrite (ledPin, låg);
ledState = 1;
}
void turnOnLed()
{
digitalWrite (ledPin, hög);
ledState = 0;
}
void readSolarPanel()
{
solarVal = analogRead(solarPin);
Serial.Print ("sol:");
Serial.println(solarVal);
}
void readPIR()
{
PIRval = analogRead(PIRPin);
Serial.Print ("PIR:");
Serial.println(PIRval);
}
void loop()
{
readSolarPanel();
readPIR();
om (solarVal < 100 & & ledState == 0 & & PIRval < 5)
{
fadeUpLed();
}
om (solarVal > 120 & & ledState == 1 & & PIRval > 5)
{
fadeDownLed();
}
om (counter > 5000) / / hur lång lysdioder bör ligga på för
{
fadeDownLed();
}
om (ledState == 1)
{
Serial.println(Counter);
räknaren ++;
}
}