Introduction: Light Detection + Data Logging White Arduino
I can not write English, this is all from the Netherlands to the English translated by google translator
what did you make
I'm so finicking that the brightest light point with 1 search ldr.
in the future for me to serve a solar panel toward the sun to set.
Therefore it must be the brightest light point and can not follow
how did you make
I saw that an old student in school for his thesis a solar panel that has made them turned to the sun.
so I thought that I could make, I've been looking on youtube and instructables for similar projects. but there was not how I imagined me.
it was all with 2 or more ldr, 1left 1 right 1TOP 1 downstairs.
and which are moved all the time to to adjust.
and so I came up with the idea to do it with 1 ldr
whare did you make it
I made it home
what did you learn
I've learned to work with array.
to the analog number to be stored
and on the SD card to store.
I put this on instructables for that I've learned a lot from the whole "Open Sorce" thing
and if you really want to make something you just have to try
Step 1: Component List
I can not write English, this is all from the Netherlands to the English translated by google translator
list
2 servo
1 ldr
1 10k resistance
1 SD card module
1 arduino
list
2 servo
1 ldr
1 10k resistance
1 SD card module
1 arduino
Step 2: Make Sero Tilt Pan
I can not write English, this is all from the Netherlands to the English translated by google translator
here is a link to how I did mine I put together
http://iprototype.be/docs/pan-tilt-montage-tutorial.pdf
here is a link to how I did mine I put together
http://iprototype.be/docs/pan-tilt-montage-tutorial.pdf
Step 3: Connecting to Arduino
servo 1 to pin 5
servo 2 to pin 6
ldr to analoge pin 0
SD card
MOSI = Pin 11
MISO = Pin 12
SCLK = PIN 13
CS_pin = 10;
servo 2 to pin 6
ldr to analoge pin 0
SD card
MOSI = Pin 11
MISO = Pin 12
SCLK = PIN 13
CS_pin = 10;
Step 4: Code
I can not write English, this is all from the Netherlands to the English translated by google translator
the servo 180 steps and run every 5 steps ldr analog read store in array
for (int pos0 = 0;pos0<=181;pos0++)
{
richtingservo.write(plaats[pos0]);
if ( pos0 % 5 == 0) // pos0 delen door 5 en als de rest 0 is dan is het op 0,5,10,15,...
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
licht[i]=val; // licht waarden stokeren in array
Serial.print("ldr "); Serial.print(i); Serial.print(" "); Serial.println(val);
i++;
}
the more light the lower the analog read is
find the lowest number in the array and go to the place where it is
for(int a=0;a<37;a++)
{
if (licht[a] <= j)
{
j = licht[a];
posplaats = a;
posplaats = posplaats *5;
Serial.println(posplaats);
}}
richtingservo.write(180);
for (int e=180;e>posplaats;e--)
{
richtingservo.write(plaats[e]);
delay(120);
}
Create a file on the SD card.
and the value of the analog read store the card
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile)
{
int data = analogRead(0);
dataFile.println(data);
dataFile.close();
Serial.println(data);
}
the servo 180 steps and run every 5 steps ldr analog read store in array
for (int pos0 = 0;pos0<=181;pos0++)
{
richtingservo.write(plaats[pos0]);
if ( pos0 % 5 == 0) // pos0 delen door 5 en als de rest 0 is dan is het op 0,5,10,15,...
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
licht[i]=val; // licht waarden stokeren in array
Serial.print("ldr "); Serial.print(i); Serial.print(" "); Serial.println(val);
i++;
}
the more light the lower the analog read is
find the lowest number in the array and go to the place where it is
for(int a=0;a<37;a++)
{
if (licht[a] <= j)
{
j = licht[a];
posplaats = a;
posplaats = posplaats *5;
Serial.println(posplaats);
}}
richtingservo.write(180);
for (int e=180;e>posplaats;e--)
{
richtingservo.write(plaats[e]);
delay(120);
}
Create a file on the SD card.
and the value of the analog read store the card
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile)
{
int data = analogRead(0);
dataFile.println(data);
dataFile.close();
Serial.println(data);
}
Step 5: Complete Code
#include <SD.h>
//Set by default for the SD Card Library
//MOSI = Pin 11
//MISO = Pin 12
//SCLK = PIN 13
//We always need to set the CS Pin
int CS_pin = 10;
#include <Servo.h>
Servo richtingservo; // servo 1
Servo hoekservo; // servo 2
int ldr = 0;// analogpin 0
int val;
int j;
int posplaats;
int hoek;
int licht[38];
int ldrhoek[19];
// een array van 181
int plaats[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,
36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,
54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,
90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,
106,107,108,109,110,111,112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,127,128,129,130,131,132,
133,134,135,136,137,138,139,140,141,142,143,144,145,
146,147,148,149,150,151,152,153,154,155,156,157,158,
159,160,161,162,163,164,165,166,167,168,169,170,171,
172,173,174,175,176,177,178,179,180};
int lichthoek[]={30,31,32,33,34,35,36,37,38,39,40,41,
42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,
76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,
94,95,96,97,98,99,100,101,102,103,104,105};
void setup ()
{
richtingservo.attach(5);
hoekservo.attach(6);
Serial.begin(9600);
richtingservo.write(0);
hoekservo.write(70);
//CS Pin is an output
pinMode(CS_pin, OUTPUT);
if (!SD.begin(CS_pin))
{
Serial.println("Card Failure");
return;
}
Serial.println("Card Ready");
}
void loop ()
{
if (posplaats!=0)
{
for (int t = posplaats;t>0;t--)
{
richtingservo.write(t);
Serial.print("posplaats "); Serial.println(t);
delay(120);
}
}
val = analogRead(ldr);
j = analogRead(ldr);
int i =0; // elke keer terug op nul voor licht array waarden
// servo posietie juist zetten en licht array vullen met de waarden
for (int pos0 = 0;pos0<=181;pos0++)
{
richtingservo.write(plaats[pos0]);
if ( pos0 % 5 == 0) // pos0 delen door 5 en als de rest 0 is dan is het op 0,5,10,15,...
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
licht[i]=val; // licht waarden stokeren in array
Serial.print("ldr "); Serial.print(i); Serial.print(" "); Serial.println(val);
i++;
}
if (richtingservo.read()==180)
{break;}
delay(170);
}
richtingservo.write(180);
val = analogRead(ldr);
j = analogRead(ldr);
// grootste licht waarden zoeken en in j plaatsen
for(int a=0;a<37;a++)
{
if (licht[a] <= j)
{
j = licht[a];
posplaats = a;
posplaats = posplaats *5;
Serial.println(posplaats);
}}
richtingservo.write(180);
for (int e=180;e>posplaats;e--)
{
richtingservo.write(plaats[e]);
delay(120);
}
//jmkhhhhhhhhhhhhhhhhhhhjkujkjfiejfknjdfq kmdsjf
val = analogRead(ldr);
j = analogRead(ldr);
int y = 0;
for(int pos1=0;pos1<75;pos1++)
{
hoekservo.write(lichthoek[pos1]); // servo zeten op de plaat voor licht waarden te meten
if (pos1 % 5 == 0)
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
ldrhoek[y]=val; // licht waarden stokeren in array
Serial.print("ldr hoek "); Serial.print(y); Serial.print(" "); Serial.println(val);
y++;
}
if (richtingservo.read()==105)
{break;}
delay(200);
}
for(int z=0;z<15;z++)
{
if (ldrhoek[z] <= j)
{
j = ldrhoek[z];
hoek = z;
hoek = hoek *5;
Serial.println(hoek);
}}
hoekservo.write(105);
hoekservo.write(lichthoek[hoek]);
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile)
{
int data = analogRead(0);
dataFile.println(data);
dataFile.close();
Serial.println(data);
}
else
{
Serial.println("Couldn't open log file");
}
delay(5000);
}
//Set by default for the SD Card Library
//MOSI = Pin 11
//MISO = Pin 12
//SCLK = PIN 13
//We always need to set the CS Pin
int CS_pin = 10;
#include <Servo.h>
Servo richtingservo; // servo 1
Servo hoekservo; // servo 2
int ldr = 0;// analogpin 0
int val;
int j;
int posplaats;
int hoek;
int licht[38];
int ldrhoek[19];
// een array van 181
int plaats[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,
36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,
54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,
90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,
106,107,108,109,110,111,112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,127,128,129,130,131,132,
133,134,135,136,137,138,139,140,141,142,143,144,145,
146,147,148,149,150,151,152,153,154,155,156,157,158,
159,160,161,162,163,164,165,166,167,168,169,170,171,
172,173,174,175,176,177,178,179,180};
int lichthoek[]={30,31,32,33,34,35,36,37,38,39,40,41,
42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,
76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,
94,95,96,97,98,99,100,101,102,103,104,105};
void setup ()
{
richtingservo.attach(5);
hoekservo.attach(6);
Serial.begin(9600);
richtingservo.write(0);
hoekservo.write(70);
//CS Pin is an output
pinMode(CS_pin, OUTPUT);
if (!SD.begin(CS_pin))
{
Serial.println("Card Failure");
return;
}
Serial.println("Card Ready");
}
void loop ()
{
if (posplaats!=0)
{
for (int t = posplaats;t>0;t--)
{
richtingservo.write(t);
Serial.print("posplaats "); Serial.println(t);
delay(120);
}
}
val = analogRead(ldr);
j = analogRead(ldr);
int i =0; // elke keer terug op nul voor licht array waarden
// servo posietie juist zetten en licht array vullen met de waarden
for (int pos0 = 0;pos0<=181;pos0++)
{
richtingservo.write(plaats[pos0]);
if ( pos0 % 5 == 0) // pos0 delen door 5 en als de rest 0 is dan is het op 0,5,10,15,...
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
licht[i]=val; // licht waarden stokeren in array
Serial.print("ldr "); Serial.print(i); Serial.print(" "); Serial.println(val);
i++;
}
if (richtingservo.read()==180)
{break;}
delay(170);
}
richtingservo.write(180);
val = analogRead(ldr);
j = analogRead(ldr);
// grootste licht waarden zoeken en in j plaatsen
for(int a=0;a<37;a++)
{
if (licht[a] <= j)
{
j = licht[a];
posplaats = a;
posplaats = posplaats *5;
Serial.println(posplaats);
}}
richtingservo.write(180);
for (int e=180;e>posplaats;e--)
{
richtingservo.write(plaats[e]);
delay(120);
}
//jmkhhhhhhhhhhhhhhhhhhhjkujkjfiejfknjdfq kmdsjf
val = analogRead(ldr);
j = analogRead(ldr);
int y = 0;
for(int pos1=0;pos1<75;pos1++)
{
hoekservo.write(lichthoek[pos1]); // servo zeten op de plaat voor licht waarden te meten
if (pos1 % 5 == 0)
{
delay(300);
val = analogRead(ldr); // meten van de licht waarden
ldrhoek[y]=val; // licht waarden stokeren in array
Serial.print("ldr hoek "); Serial.print(y); Serial.print(" "); Serial.println(val);
y++;
}
if (richtingservo.read()==105)
{break;}
delay(200);
}
for(int z=0;z<15;z++)
{
if (ldrhoek[z] <= j)
{
j = ldrhoek[z];
hoek = z;
hoek = hoek *5;
Serial.println(hoek);
}}
hoekservo.write(105);
hoekservo.write(lichthoek[hoek]);
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile)
{
int data = analogRead(0);
dataFile.println(data);
dataFile.close();
Serial.println(data);
}
else
{
Serial.println("Couldn't open log file");
}
delay(5000);
}