Go Down

Topic: Help me please! [Solved] (Read 361 times) previous topic - next topic

aldo1958

Aug 28, 2013, 05:52 pm Last Edit: Sep 03, 2013, 10:52 am by aldo1958 Reason: 1
Hello to everyone
I need help, please.
I am a beginner with Arduino's programming so please forgive me for any mistakes I can say or do.
I made a small project with Arduino and the TLC5940 with the purpose of illuminating two different spaces at different times. The first is the garage with the relative path to get there, I used for this place 8 led spots,  the second is the shed and its path and I used 6 led spots, in both cases the switching on and off of the single LEDs are progressive.

For lighting I used 2 pir sensors for each 1, 1 sensor LDR to exclude the switch daytime lights. I also added a switch that allows in case of need the cancellation of the sensor LDR and then get the lights with a continuous cycle. I made this project, and it works fairly well, the delays are not definitive and I thought 5 minutes of lighting before renewable turning off, maybe from another sensors, the delay of the sensor LDR too I do not know whether to give 5 or 10 minutes just to avoid the flickering of the operation.

As I said, some issues founded, such as when you turn on the 'LDR or pressing the switch to exclude it, sometimes part of a power cycle, also the setting of the' LDR seems to me not to respond adequately, also the whole system seems to me a bit 'slow.
I'll post the code and any suggestions to fix the anomalies are more than welcome.
Thanks in advance for any tips and help.


Code: [Select]
[code]#include "Tlc5940.h"
#define sensor_1   7         // sensore box
#define sensor_2   8         // sensore shed
#define button 5             // interruttore always
#define led  6                   // led always on
#define led_LDR  2           // il pin 2 led ldr
const int sensorValue = 150;    // setting  LDR sensor
int x = 0;              // sensor variable status
int always = 0;         // switch variable status

void setup()
{
 pinMode(led_LDR,OUTPUT);
 pinMode(led,OUTPUT);
 pinMode(sensor_1, INPUT);      
 pinMode(sensor_2, INPUT);
 pinMode(button, INPUT);
 Tlc.init();
}

void box()
 {
for (int channel =5; channel >=0; channel --)
 {
 Tlc.set(channel, 4095);
 Tlc.update();
delay(500);
}
delay(1000); // da modificare  con 300000 = 5 minuti
for (int channel =5; channel >=0; channel --)
{
Tlc.set(channel, 0);
 Tlc.update();
delay(500);
 }
}    
// ======= fine box ========

void shed()
{
for (int channel =0; channel <=7; channel ++)
 {
 Tlc.set(channel, 4095);
 Tlc.update();
delay(500);
}
delay(1000);  // modifica  con 300000 = 5 minuti
for (int channel =0; channel <=7; channel ++)
{
Tlc.set(channel, 0);
 Tlc.update();
delay(500);
 }
}
//  ======= fine shed ===========

void luminoso()
{
digitalRead(sensor_1)&& digitalRead(sensor_2) == LOW;
}
 void buio()
{
 x = digitalRead(sensor_1);
if ( x == HIGH) {    
box();
}
x = digitalRead(sensor_2);
if ( x == HIGH) {    
shed();
}
}

void loop(){
 
 always = digitalRead(button);
if ( always == HIGH) {    
digitalWrite(led, HIGH);
digitalWrite(led_LDR,LOW);
buio();
}
 else  {
digitalWrite(led, LOW);
int sensor = analogRead(A0);    
if (sensor < sensorValue)
{    
luminoso();
digitalWrite(led_LDR,LOW);
delay(2000);          // attende 5 secondi
}
else {
buio();
digitalWrite(led_LDR,HIGH);
delay(2000);          // attende 5 secondi
 }
}  
}
[/code]

el_supremo

You need to read *all* of How to use this forum
and pay particular attention to How to post code properly

Pete


tylernt

Any time a project is "slow" I recommend getting rid of all delay() statements.

See: http://arduino.cc/en/Tutorial/BlinkWithoutDelay for how to schedule things to run for certain lengths of time without the delay() statement.

Also, you should debounce your button (http://arduino.cc/en/Tutorial/Debounce) if it is not already debounced in hardware (such as with a capacitor).


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy