İçindekiler:
- Gereçler:
- Adım 1: Bileşen Listesi
- Adım 2: Sero Tilt Tavasını Yapın
- Adım 3: Arduino'ya Bağlanma
- 4. Adım: Kod
- 5. Adım: Kodu Tamamlayın
Ne yaptın
Öyle çok titizim ki 1 arama ldr ile en parlak ışık noktası.
Gelecekte benim için güneşe doğru bir güneş paneli hizmet etmem.
Bu nedenle en parlak ışık noktası olmalı ve takip edemez
nasıl yaptın
Okuldaki yaşlı bir öğrencinin tezini güneşe çeviren bir güneş paneli olduğunu gördüm.
bu yüzden yapabileceğimi düşündüm, benzer projeler için youtube'a ve talimatlara bakıyordum. ama beni hayal ettiğim gibi değildi.
hepsi 2 ya da daha fazla ldr, 1 kat 1 sağ 1TOP 1 alt kattaydı.
ve ayarlamak için her zaman hareket ettirilir.
ve ben de 1 ldr ile yapmayı düşündüm.
whare yaptın mı
Eve yaptım
ne öğrendin
Dizi ile çalışmayı öğrendim.
depolanacak analog numaraya
ve saklamak için SD kartta.
Bunu, "Açık Sorce" olayından çok şey öğrendiğim için öğretilebilir hale getirdim.
ve gerçekten bir şeyler yapmak istiyorsanız, sadece denemek zorundasınız
Gereçler:
Adım 1: Bileşen Listesi
İngilizce yazamıyorum, hepsi Hollanda'dan google tercümanı tarafından çevrilen İngilizceye kadar
liste
2 servo
1 ldr
1 10k direnç
1 SD kart modülü
1 arduino
Adım 2: Sero Tilt Tavasını Yapın
İngilizce yazamıyorum, hepsi Hollanda'dan google tercümanı tarafından çevrilen İngilizceye kadar
benim nasıl yaptığımı gösteren link
Adım 3: Arduino'ya Bağlanma
servo 1'den 5'e kadar
servo 2'den pin 6'ya
ldr'den PIN 0'a benzemek
hafıza kartı
MOSI = Pim 11
MISO = Pim 12
SCLK = PIN 13
CS_pin = 10;
4. Adım: Kod
İngilizce yazamıyorum, hepsi Hollanda'dan google tercümanı tarafından çevrilen İngilizceye kadar
servo 180 adımda çalışır ve her 5 adımda bir çalışır.
(int pos0 = 0; pos0 <= 181; pos0 ++) için
{
richtingservo.write (plaats pos0);
if (pos0% 5 == 0) // pos0 delen kapı 5 ve dinlen 0, ayrıca 0'dır, 0,5,10,15, …
{
gecikmesi (300);
val = analogRead (ldr); // meten van de licht waarden
Licht i = Val; // Licht Waarden Stokeren dizisinde
Serial.print ("ldr"); Serial.print (i) Seri baskı (""); Serial.println (val);
i ++;
}
ne kadar hafif olursa analog değer o kadar düşük olur
Dizideki en düşük sayıyı bulun ve bulunduğu yere gidin.
(int a = 0; a <37; a ++)
{
eğer (licht a <= j)
{
j = licht a;
posplaats = a;
posplaats = posplaats * 5;
Serial.println (posplaats);
}}
richtingservo.write (180);
(int e = 180; e> postaneler; e--)
{
richtingservo.write (plaats e);
gecikmesi (120);
}
SD kartta bir dosya oluşturun.
ve analog okunan değer, kartı saklar.
File dataFile = SD.open ("log.txt", FILE_WRITE);
eğer (dataFile)
{
int veri = analog Okuma (0);
dataFile.println (veri);
dataFile.close ();
Serial.println (veri);
}
5. Adım: Kodu Tamamlayın
#Dahil etmek
// SD Kart Kitaplığı için varsayılan olarak ayarlayın
// MOSI = Pim 11
// MISO = Pim 12
// SCLK = PIN 13
// Her zaman CS Pinini ayarlamamız gerekir.
int CS_pin = 10;
#Dahil etmek
Servo richtingservo; // servo 1
Servo hoekservo; // servo 2
int ldr = 0; // analogpin 0
int val;
int j;
int postaneler;
int hoek;
int licht 38;
int ldrhoek 19;
// een dizi 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};
geçersiz kurulum ()
{
richtingservo.attach (5);
hoekservo.attach (6);
Serial.begin (9600);
richtingservo.write (0);
hoekservo.write (70);
// CS Pin bir çıktıdır
pinMode (CS_pin, OUTPUT);
if (! SD.begin (CS_pin))
{
Serial.println ("Kart Hatası");
dönüş;
}
Serial.println ("Kart Hazır");
}
geçersiz döngü ()
{
eğer (posplaats! = 0)
{
(int t = posplaats; t> 0; t--) için
{
richtingservo.write (t);
Seri baskı ("posplaats"); Serial.println (t);
gecikmesi (120);
}
}
val = analogRead (ldr);
j = analog Okuma (ldr);
int i = 0; // elke keer terug op nul voor licht array waarden
// servo posietie juist zetten en licht dizi vullen bir araya geldi
(int pos0 = 0; pos0 <= 181; pos0 ++) için
{
richtingservo.write (plaats pos0);
if (pos0% 5 == 0) // pos0 delen kapı 5 ve dinlen 0, ayrıca 0'dır, 0,5,10,15, …
{
gecikmesi (300);
val = analogRead (ldr); // meten van de licht waarden
Licht i = Val; // Licht Waarden Stokeren dizisinde
Serial.print ("ldr"); Serial.print (i) Seri baskı (""); Serial.println (val);
i ++;
}
eğer (richtingservo.read () == 180)
{Kırmak;}
gecikmesi (170);
}
richtingservo.write (180);
val = analogRead (ldr);
j = analog Okuma (ldr);
// j plaatsen in grootste licht waarden zoeken tr
(int a = 0; a <37; a ++)
{
eğer (licht a <= j)
{
j = licht a;
posplaats = a;
posplaats = posplaats * 5;
Serial.println (posplaats);
}}
richtingservo.write (180);
(int e = 180; e> postaneler; e--)
{
richtingservo.write (plaats e);
gecikmesi (120);
}
// jmkhhhhhhhhhhhhhhhhhhhhhhjkujkjfiejfknjdfq kmdsjf
val = analogRead (ldr);
j = analog Okuma (ldr);
int y = 0;
(int pos1 = 0; pos1 <75; pos1 ++) için
{
hoekservo.write (lichthoek pos1); // servo zeten op de plaat voor licht waarden te meten için
eğer (pos1% 5 == 0)
{
gecikmesi (300);
val = analogRead (ldr); // meten van de licht waarden
ldrhoek y = Val; // Licht Waarden Stokeren dizisinde
Serial.print ("ldr hoek"); Serial.print (y); Seri baskı (""); Serial.println (val);
y ++;
}
eğer (richtingservo.read () == 105)
{Kırmak;}
gecikmesi (200);
}
(int z = 0; z <15; z ++) için
{
eğer (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);
eğer (dataFile)
{
int veri = analog Okuma (0);
dataFile.println (veri);
dataFile.close ();
Serial.println (veri);
}
Başka
{
Serial.println ("Günlük dosyası açılamadı");
}
gecikmesi (5000);
}