Zon simulatie voor terrarium
4 berichten
• Pagina 1 van 1
- jordan.altena
- Berichten: 9
- Geregistreerd: 26 Jun 2013, 21:14
Zon simulatie voor terrarium
Goedendag allemaal,
Dit is mijn eerste "echte" programma wat ik heb gemaakt (stukken van internet samenvoegen en aanpassingen van mij).
Hiervoor ben ik eigenlijk z'n beetje begonnen met Arduino.
Het Arduino bord stuurt een RGB-led strip aan tussen 6 uur en 19 uur simuleert hij een opkomende zon hierna gaat hij over in de de volle zon hier blijft op tot 19 uur.
Na 19 uur simuleert hij een ondergaande zon en deze gaat over in een maanlicht.
Om 7 uur word er nog een relais geschakeld, deze is voor een warmtelamp en een UV-lamp.
Het programma zal denk ik wel verbeterd kunnen worden, maar voor nu werkt hij.
Graag hoor ik nog reacties en opmerkingen voor de toekomst.
Dit is mijn eerste "echte" programma wat ik heb gemaakt (stukken van internet samenvoegen en aanpassingen van mij).
Hiervoor ben ik eigenlijk z'n beetje begonnen met Arduino.
Het Arduino bord stuurt een RGB-led strip aan tussen 6 uur en 19 uur simuleert hij een opkomende zon hierna gaat hij over in de de volle zon hier blijft op tot 19 uur.
Na 19 uur simuleert hij een ondergaande zon en deze gaat over in een maanlicht.
Om 7 uur word er nog een relais geschakeld, deze is voor een warmtelamp en een UV-lamp.
Het programma zal denk ik wel verbeterd kunnen worden, maar voor nu werkt hij.
Graag hoor ik nog reacties en opmerkingen voor de toekomst.
- Code: Alles selecteren
/*
Fade RGB LED like the sun (sunrise, full sun, sunset, moonlight)
And control a relay teh heat and UV lamp
Connect an RGB LED with appropriate resistors and mosfet on each anode to your Arduino;
Red to pin 9, Green to pin 10, Blue to pin 11, Cathode to GND.
Connect the RTC SDA to pin A4 ans SCL to pin A5
Connect the relay to pin 12
Developed for Arduino Uno by Jordan Altena
With some help off the internet.
*/
#include <DS1307new.h> // RTC
#include <Wire.h> // For some strange reasons, Wire.h must be included here
// voor de RTC
uint16_t startAddr = 0x0000; // Start address to store in the NV-RAM
uint16_t lastAddr; // new address for storing in NV-RAM
uint16_t TimeIsSet = 0xaa55; // Helper that time must not set again
#define uur_aan 7 // Time for UV Heat and UV-lamp on (hour)
#define minuut_aan 00 // Time for UV Heat and UV-lamp on (minute)
#define uur_uit 19 // Time for UV Heat and UV-lamp off (hour)
#define minuut_uit 00 // Time for UV Heat and UV-lamp off (minute)
#define instellen_klok_datum 2013,9,4 // Set date year,month,day
#define instellen_klok_tijd 19,21,00 // set time hour,minute,seconds
// Assign LED Output PWM Pins
int Red = 9;
int Green = 10;
int Blue = 11;
// Relay pin 12
int relay01 = 12;
//Set Initial Values
int RedVal = 0;
int GreenVal = 0;
int BlueVal = 0;
int fade = 3530; // Delay Time approximately 15 minutes (15 => 900000milisec. 255 steps color. 90000000/255= 3529,41)
// int fade = 120; // Delay Time approximately 15 minutes (15 => 900000milisec. 255 steps color. 90000000/255= 3529,41)
// Sunrise
int RedVal1 = 212;
int GreenVal1 = 101;
int BlueVal1 = 36;
// Full sun
int RedVal2 = 255;
int GreenVal2 = 255;
int BlueVal2 = 255;
// Sunset
int RedVal3 = 255;
int GreenVal3 = 20;
int BlueVal3 = 120;
// Moonlight
int RedVal4 = 0;
int GreenVal4 = 0;
int BlueVal4 = 120;
//Set initial mode (Colour Value Mode)
int mode = 0;
void setup()
{
//----------------------- Assign outputs
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
pinMode(relay01, OUTPUT);
pinMode (17, OUTPUT); // +5v for DS1307 RTC on analog 4 (digital 17)
pinMode (16, OUTPUT); // Ground for DS1307 on analog 3 (digital 16)
//----------------------- Write Initial Values of 0 to outputs
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
digitalWrite (17, HIGH); // tell pin 17 to be +5v
digitalWrite (16, LOW); // tell pin 16 to be Ground
//------------------------ RTC
pinMode(2, INPUT); // Test of the SQW pin, D2 = INPUT
digitalWrite(2, HIGH); // Test of the SQW pin, D2 = Pullup on
Serial.begin(9600);
/*
PLEASE NOTICE: WE HAVE MADE AN ADDRESS SHIFT FOR THE NV-RAM!!!
NV-RAM ADDRESS 0x08 HAS TO ADDRESSED WITH ADDRESS 0x00=0
TO AVOID OVERWRITING THE CLOCK REGISTERS IN CASE OF
ERRORS IN YOUR CODE. SO THE LAST ADDRESS IS 0x38=56!
*/
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// Store startAddr in NV-RAM address 0x08
/*
Uncomment the next 2 lines if you want to SET the clock
Comment them out if the clock is set.
DON'T ASK ME WHY: YOU MUST UPLOAD THE CODE TWICE TO LET HIM WORK
AFTER SETTING THE CLOCK ONCE.
*/
// TimeIsSet = 0xffff;
// RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
/*
Control the clock.
Clock will only be set if NV-RAM Address does not contain 0xaa.
DS1307 should have a battery backup.
*/
RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
if (TimeIsSet != 0xaa55)
{
RTC.stopClock();
RTC.fillByYMD(instellen_klok_datum);
RTC.fillByHMS(instellen_klok_tijd);
RTC.setTime();
TimeIsSet = 0xaa55;
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
RTC.startClock();
}
else
{
RTC.getTime();
}
/*
Control Register for SQW pin which can be used as an interrupt.
*/
RTC.ctrl = 0x00; // 0x00=disable SQW pin, 0x10=1Hz,
// 0x11=4096Hz, 0x12=8192Hz, 0x13=32768Hz
RTC.setCTRL();
// Set initial mode (Colour Value Mode) (1 = sunrise, 3 = sunset)
if (RTC.hour >= 6 && RTC.hour < 19)
{
mode = 1;
}
else {
mode = 3;
}
}
void loop() // Begin Main Program Loop
{
RTC.getTime();
Serial.print(RTC.hour, DEC);
Serial.print(":");
Serial.print(RTC.minute, DEC);
Serial.println("");
//set heat and UV-lamp
if (RTC.hour >= uur_aan && RTC.hour < uur_uit){
digitalWrite(relay01, HIGH);
}
else {
digitalWrite(relay01, LOW);
}
// LCD sun simulation
RTC.getTime();
if (RTC.hour >= 6 && RTC.hour < 19 && mode == 1)
{
zonop(); // Sunrise
}
else if (RTC.hour >= 6 && RTC.hour < 19 && mode == 2){
vollezon(); //full sun
}
else if (RTC.hour <6 && mode == 3 || RTC.hour>= 19 && mode == 3){
schemering(); //sunset
}
else if (RTC.hour <6 && mode == 4 || RTC.hour >= 19 && mode == 4){
maanlicht(); //moonlight
}
}
// Sunrise
void zonop()
{
Serial.println("Zon op");
RTC.getTime();
mode = 1;
if(RedVal < RedVal1){ // If RedVal is less than desired RedVal1
RedVal ++; // increment RedVal
} else if(RedVal > RedVal1){ // If RedVal is more than desired RedVal1
RedVal --; // decrement RedVal
} else if(RedVal == RedVal1){ // If RedVal is equal to desired RedVal1
//Do Nothing
}
// Repeated as above for BlueVal
if(BlueVal < BlueVal1){
BlueVal ++;
} else if(BlueVal > BlueVal1){
BlueVal --;
} else if(BlueVal == BlueVal1){
//Do Nothing
}
// Repeated as above for GreenVal
if(GreenVal < GreenVal1){
GreenVal ++;
} else if (GreenVal > GreenVal1){
GreenVal --;
} else if (GreenVal == GreenVal1){
// Do Nothing
}
// Now we have a new set of values, we write them to the PWM Pins.
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal1 && GreenVal == GreenVal1 && BlueVal == BlueVal1){ // If RedVal & GreenVal & BlueVal are all at the desired values
delay(500); // Delay to hold this colour for a little while
mode = 2; // Change the mode to the next colour. Exiting this while loop and into the next one
}
}
// full sun
void vollezon()
{
Serial.println("Volle Zon");
RTC.getTime();
mode = 2;
if(RedVal < RedVal2){
RedVal ++;
} else if(RedVal > RedVal2){
RedVal --;
} else if(RedVal == RedVal2){
//Do Nothing
}
if(BlueVal < BlueVal2){
BlueVal ++;
} else if(BlueVal > BlueVal2){
BlueVal --;
} else if(BlueVal == BlueVal2){
//Do Nothing
}
if(GreenVal < GreenVal2){
GreenVal ++;
} else if (GreenVal > GreenVal2){
GreenVal --;
} else if (GreenVal == GreenVal2){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal2 && GreenVal == GreenVal2 && BlueVal == BlueVal2){
delay(500);
mode = 3;
}
}
// Sunset
void schemering()
{
Serial.println("Schemering");
RTC.getTime();
mode = 3;
if(RedVal < RedVal3){
RedVal ++;
} else if(RedVal > RedVal3){
RedVal --;
} else if(RedVal == RedVal3){
//Do Nothing
}
if(BlueVal < BlueVal3){
BlueVal ++;
} else if(BlueVal > BlueVal3){
BlueVal --;
} else if(BlueVal == BlueVal3){
//Do Nothing
}
if(GreenVal < GreenVal3){
GreenVal ++;
} else if (GreenVal > GreenVal3){
GreenVal --;
} else if (GreenVal == GreenVal3){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal3 && GreenVal == GreenVal3 && BlueVal == BlueVal3){
Serial.println("Schemering klaar");
delay(500);
mode = 4;
//break;
}
}
// Moonlight
void maanlicht()
{
Serial.println("Maanlicht");
RTC.getTime();
mode = 4;
if(RedVal < RedVal4){
RedVal ++;
} else if(RedVal > RedVal4){
RedVal --;
} else if(RedVal == RedVal4){
//Do Nothing
}
if(BlueVal < BlueVal4){
BlueVal ++;
} else if(BlueVal > BlueVal4){
BlueVal --;
} else if(BlueVal == BlueVal4){
//Do Nothing
}
if(GreenVal < GreenVal4){
GreenVal ++;
} else if (GreenVal > GreenVal4){
GreenVal --;
} else if (GreenVal == GreenVal4){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal4 && GreenVal == GreenVal4 && BlueVal == BlueVal4){
delay(500);
Serial.println("Maanlicht klaar");
mode = 1; // Set mode back to 1 to return to the original colour.
//break;
}
}
Advertisement
Re: Zon simulatie voor terrarium
Fijn dat het allemaal werkt. Doet de mens goed: dingen die het doen.
Ik wist niet dat er een RTCnew library was voor de DS1307 Real Time Clock -IC. Ga ik naar kijken.
Wat me wel opvalt in je sketch is dat je twee manieren van timen gebruikt.
1) De RTC-klok bepaalt wanneer het relais voor de UV schakelt en wanneer de vier verschillende episoden van licht ingaan (opkomende zon, volle zon, ondergaande zon en maanlicht).
2) De interne timer (via de delay-functie) regeld vervolgens de fade van de RGB-LED strip.
Dat komt wat onlogisch over. Maar aan de andere kant doe ikzelf niets anders dan "brokken" van andere combineren tot werkzame stukken. En als het dan werkt begint de eigenlijke fun pas: verbeteren om te begrijpen.
Wat je eerste aandacht hierin zou kunnen vormen is het volgende:
Je gebruikt nergens in je sketch de seconden van je DS1307 klok. Heb je deze wel, dan heb je mooi 1/86.400-ste van een dag.
Ik wist niet dat er een RTCnew library was voor de DS1307 Real Time Clock -IC. Ga ik naar kijken.
Wat me wel opvalt in je sketch is dat je twee manieren van timen gebruikt.
1) De RTC-klok bepaalt wanneer het relais voor de UV schakelt en wanneer de vier verschillende episoden van licht ingaan (opkomende zon, volle zon, ondergaande zon en maanlicht).
2) De interne timer (via de delay-functie) regeld vervolgens de fade van de RGB-LED strip.
Dat komt wat onlogisch over. Maar aan de andere kant doe ikzelf niets anders dan "brokken" van andere combineren tot werkzame stukken. En als het dan werkt begint de eigenlijke fun pas: verbeteren om te begrijpen.
Wat je eerste aandacht hierin zou kunnen vormen is het volgende:
Je gebruikt nergens in je sketch de seconden van je DS1307 klok. Heb je deze wel, dan heb je mooi 1/86.400-ste van een dag.
Re: Zon simulatie voor terrarium
jordan.altena schreef:Goedendag allemaal,
Dit is mijn eerste "echte" programma wat ik heb gemaakt (stukken van internet samenvoegen en aanpassingen van mij).
Hiervoor ben ik eigenlijk z'n beetje begonnen met Arduino.
Het Arduino bord stuurt een RGB-led strip aan tussen 6 uur en 19 uur simuleert hij een opkomende zon hierna gaat hij over in de de volle zon hier blijft op tot 19 uur.
Na 19 uur simuleert hij een ondergaande zon en deze gaat over in een maanlicht.
Om 7 uur word er nog een relais geschakeld, deze is voor een warmtelamp en een UV-lamp.
Het programma zal denk ik wel verbeterd kunnen worden, maar voor nu werkt hij.
Graag hoor ik nog reacties en opmerkingen voor de toekomst.
- Code: Alles selecteren
/*
Fade RGB LED like the sun (sunrise, full sun, sunset, moonlight)
And control a relay teh heat and UV lamp
Connect an RGB LED with appropriate resistors and mosfet on each anode to your Arduino;
Red to pin 9, Green to pin 10, Blue to pin 11, Cathode to GND.
Connect the RTC SDA to pin A4 ans SCL to pin A5
Connect the relay to pin 12
Developed for Arduino Uno by Jordan Altena
With some help off the internet.
*/
#include <DS1307new.h> // RTC
#include <Wire.h> // For some strange reasons, Wire.h must be included here
// voor de RTC
uint16_t startAddr = 0x0000; // Start address to store in the NV-RAM
uint16_t lastAddr; // new address for storing in NV-RAM
uint16_t TimeIsSet = 0xaa55; // Helper that time must not set again
#define uur_aan 7 // Time for UV Heat and UV-lamp on (hour)
#define minuut_aan 00 // Time for UV Heat and UV-lamp on (minute)
#define uur_uit 19 // Time for UV Heat and UV-lamp off (hour)
#define minuut_uit 00 // Time for UV Heat and UV-lamp off (minute)
#define instellen_klok_datum 2013,9,4 // Set date year,month,day
#define instellen_klok_tijd 19,21,00 // set time hour,minute,seconds
// Assign LED Output PWM Pins
int Red = 9;
int Green = 10;
int Blue = 11;
// Relay pin 12
int relay01 = 12;
//Set Initial Values
int RedVal = 0;
int GreenVal = 0;
int BlueVal = 0;
int fade = 3530; // Delay Time approximately 15 minutes (15 => 900000milisec. 255 steps color. 90000000/255= 3529,41)
// int fade = 120; // Delay Time approximately 15 minutes (15 => 900000milisec. 255 steps color. 90000000/255= 3529,41)
// Sunrise
int RedVal1 = 212;
int GreenVal1 = 101;
int BlueVal1 = 36;
// Full sun
int RedVal2 = 255;
int GreenVal2 = 255;
int BlueVal2 = 255;
// Sunset
int RedVal3 = 255;
int GreenVal3 = 20;
int BlueVal3 = 120;
// Moonlight
int RedVal4 = 0;
int GreenVal4 = 0;
int BlueVal4 = 120;
//Set initial mode (Colour Value Mode)
int mode = 0;
void setup()
{
//----------------------- Assign outputs
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
pinMode(relay01, OUTPUT);
pinMode (17, OUTPUT); // +5v for DS1307 RTC on analog 4 (digital 17)
pinMode (16, OUTPUT); // Ground for DS1307 on analog 3 (digital 16)
//----------------------- Write Initial Values of 0 to outputs
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
digitalWrite (17, HIGH); // tell pin 17 to be +5v
digitalWrite (16, LOW); // tell pin 16 to be Ground
//------------------------ RTC
pinMode(2, INPUT); // Test of the SQW pin, D2 = INPUT
digitalWrite(2, HIGH); // Test of the SQW pin, D2 = Pullup on
Serial.begin(9600);
/*
PLEASE NOTICE: WE HAVE MADE AN ADDRESS SHIFT FOR THE NV-RAM!!!
NV-RAM ADDRESS 0x08 HAS TO ADDRESSED WITH ADDRESS 0x00=0
TO AVOID OVERWRITING THE CLOCK REGISTERS IN CASE OF
ERRORS IN YOUR CODE. SO THE LAST ADDRESS IS 0x38=56!
*/
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// Store startAddr in NV-RAM address 0x08
/*
Uncomment the next 2 lines if you want to SET the clock
Comment them out if the clock is set.
DON'T ASK ME WHY: YOU MUST UPLOAD THE CODE TWICE TO LET HIM WORK
AFTER SETTING THE CLOCK ONCE.
*/
// TimeIsSet = 0xffff;
// RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
/*
Control the clock.
Clock will only be set if NV-RAM Address does not contain 0xaa.
DS1307 should have a battery backup.
*/
RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
if (TimeIsSet != 0xaa55)
{
RTC.stopClock();
RTC.fillByYMD(instellen_klok_datum);
RTC.fillByHMS(instellen_klok_tijd);
RTC.setTime();
TimeIsSet = 0xaa55;
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
RTC.startClock();
}
else
{
RTC.getTime();
}
/*
Control Register for SQW pin which can be used as an interrupt.
*/
RTC.ctrl = 0x00; // 0x00=disable SQW pin, 0x10=1Hz,
// 0x11=4096Hz, 0x12=8192Hz, 0x13=32768Hz
RTC.setCTRL();
// Set initial mode (Colour Value Mode) (1 = sunrise, 3 = sunset)
if (RTC.hour >= 6 && RTC.hour < 19)
{
mode = 1;
}
else {
mode = 3;
}
}
void loop() // Begin Main Program Loop
{
RTC.getTime();
Serial.print(RTC.hour, DEC);
Serial.print(":");
Serial.print(RTC.minute, DEC);
Serial.println("");
//set heat and UV-lamp
if (RTC.hour >= uur_aan && RTC.hour < uur_uit){
digitalWrite(relay01, HIGH);
}
else {
digitalWrite(relay01, LOW);
}
// LCD sun simulation
RTC.getTime();
if (RTC.hour >= 6 && RTC.hour < 19 && mode == 1)
{
zonop(); // Sunrise
}
else if (RTC.hour >= 6 && RTC.hour < 19 && mode == 2){
vollezon(); //full sun
}
else if (RTC.hour <6 && mode == 3 || RTC.hour>= 19 && mode == 3){
schemering(); //sunset
}
else if (RTC.hour <6 && mode == 4 || RTC.hour >= 19 && mode == 4){
maanlicht(); //moonlight
}
}
// Sunrise
void zonop()
{
Serial.println("Zon op");
RTC.getTime();
mode = 1;
if(RedVal < RedVal1){ // If RedVal is less than desired RedVal1
RedVal ++; // increment RedVal
} else if(RedVal > RedVal1){ // If RedVal is more than desired RedVal1
RedVal --; // decrement RedVal
} else if(RedVal == RedVal1){ // If RedVal is equal to desired RedVal1
//Do Nothing
}
// Repeated as above for BlueVal
if(BlueVal < BlueVal1){
BlueVal ++;
} else if(BlueVal > BlueVal1){
BlueVal --;
} else if(BlueVal == BlueVal1){
//Do Nothing
}
// Repeated as above for GreenVal
if(GreenVal < GreenVal1){
GreenVal ++;
} else if (GreenVal > GreenVal1){
GreenVal --;
} else if (GreenVal == GreenVal1){
// Do Nothing
}
// Now we have a new set of values, we write them to the PWM Pins.
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal1 && GreenVal == GreenVal1 && BlueVal == BlueVal1){ // If RedVal & GreenVal & BlueVal are all at the desired values
delay(500); // Delay to hold this colour for a little while
mode = 2; // Change the mode to the next colour. Exiting this while loop and into the next one
}
}
// full sun
void vollezon()
{
Serial.println("Volle Zon");
RTC.getTime();
mode = 2;
if(RedVal < RedVal2){
RedVal ++;
} else if(RedVal > RedVal2){
RedVal --;
} else if(RedVal == RedVal2){
//Do Nothing
}
if(BlueVal < BlueVal2){
BlueVal ++;
} else if(BlueVal > BlueVal2){
BlueVal --;
} else if(BlueVal == BlueVal2){
//Do Nothing
}
if(GreenVal < GreenVal2){
GreenVal ++;
} else if (GreenVal > GreenVal2){
GreenVal --;
} else if (GreenVal == GreenVal2){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal2 && GreenVal == GreenVal2 && BlueVal == BlueVal2){
delay(500);
mode = 3;
}
}
// Sunset
void schemering()
{
Serial.println("Schemering");
RTC.getTime();
mode = 3;
if(RedVal < RedVal3){
RedVal ++;
} else if(RedVal > RedVal3){
RedVal --;
} else if(RedVal == RedVal3){
//Do Nothing
}
if(BlueVal < BlueVal3){
BlueVal ++;
} else if(BlueVal > BlueVal3){
BlueVal --;
} else if(BlueVal == BlueVal3){
//Do Nothing
}
if(GreenVal < GreenVal3){
GreenVal ++;
} else if (GreenVal > GreenVal3){
GreenVal --;
} else if (GreenVal == GreenVal3){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal3 && GreenVal == GreenVal3 && BlueVal == BlueVal3){
Serial.println("Schemering klaar");
delay(500);
mode = 4;
//break;
}
}
// Moonlight
void maanlicht()
{
Serial.println("Maanlicht");
RTC.getTime();
mode = 4;
if(RedVal < RedVal4){
RedVal ++;
} else if(RedVal > RedVal4){
RedVal --;
} else if(RedVal == RedVal4){
//Do Nothing
}
if(BlueVal < BlueVal4){
BlueVal ++;
} else if(BlueVal > BlueVal4){
BlueVal --;
} else if(BlueVal == BlueVal4){
//Do Nothing
}
if(GreenVal < GreenVal4){
GreenVal ++;
} else if (GreenVal > GreenVal4){
GreenVal --;
} else if (GreenVal == GreenVal4){
// Do Nothing
}
analogWrite(Red, RedVal);
analogWrite(Green, GreenVal);
analogWrite(Blue, BlueVal);
delay(fade);
if(RedVal == RedVal4 && GreenVal == GreenVal4 && BlueVal == BlueVal4){
delay(500);
Serial.println("Maanlicht klaar");
mode = 1; // Set mode back to 1 to return to the original colour.
//break;
}
}
Re: Zon simulatie voor terrarium
Inderdaad ik zou die delays vervangen door timers en dan die functies telkens aanroepen tot de mode weer goed is, dat heeft het voordeel dat de loop sneller gaat, en je niet hoeft te wachten tot de mode verandert of de tijd.
paul deelen
shooter@home.nl
shooter@home.nl
4 berichten
• Pagina 1 van 1
Terug naar Afgeronde projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 18 gasten