Işık Algılama + Veri Günlüğü Beyaz Arduino: 5 Adım

Işık Algılama + Veri Günlüğü Beyaz Arduino: 5 Adım

İçindekiler:

Anonim

İngilizce yazamıyorum, hepsi Hollanda'dan google tercümanı tarafından çevrilen İngilizceye kadar

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);

}