Foydalangan adabiyotlar:
I.Asosiy adabiyotlar:
1. U. B. Amirsaidov, X. Yu. Abasxanova. Mikroprotsessorlar. Oliy o‘quv yurtlari uchun o‘quv qo‘llanma. Toshkent 2014.
2.Изучаем Arduino инструменты и методи технического волшебства. Джерими Булл (2002 г.)
3.Programming Ardunio. Monk C (2011 y.)
II.Qo’shimcha adabiyotlar:
1.Arduino Uno mikrokontrolleri yodamida mexnik harakatni avtomatlashtrish. Qazoqov J.R (2012 y. 56 bet)
2.Проекты с использованием контроллера Arduino. Петин В.А (2014 г.)
3.Ardunio porject handbook. Mark Geddes (2016 y.)
III.Asosiy adabiyotlar:
1.http://uz.infocom.uz/2015/02/24/ornatilgan-tizimlarni-boshqarish-dasturiy-taminotini-sn-atmega128a-platasida-sozlash/
2. https://habr.com/ru/post/357900/
3. https://www.instructables.com/id/Simple-Dual-Axis-Solar-Tracker/
Ilova.
Dastur kodi quyidagicha bo’ladi:
#include // include Servo library
// 180 horizontal MAX
Servo horizontal; // horizontal servo
int servoh = 180; // 90; // stand horizontal servo
int servohLimitHigh = 180;
int servohLimitLow = 65;
// 65 degrees MAX
Servo vertical; // vertical servo
int servov = 45; // 90; // stand vertical servo
int servovLimitHigh = 80;
int servovLimitLow = 15;
// LDR pin connections
// name = analogpin;
int ldrlt = 0; //LDR top left - BOTTOM LEFT <--- BDG
int ldrrt = 1; //LDR top rigt - BOTTOM RIGHT
int ldrld = 2; //LDR down left - TOP LEFT
int ldrrd = 3; //ldr down rigt - TOP RIGHT
void setup()
{
Serial.begin(9600);
// servo connections
// name.attacht(pin);
horizontal.attach(9);
vertical.attach(10);
horizontal.write(180);
vertical.write(45);
delay(3000);
}
void loop()
{
int lt = analogRead(ldrlt); // top left
int rt = analogRead(ldrrt); // top right
int ld = analogRead(ldrld); // down left
int rd = analogRead(ldrrd); // down rigt
// int dtime = analogRead(4)/20; // read potentiometers
// int tol = analogRead(5)/4;
int dtime = 10;
int tol = 50;
int avt = (lt + rt) / 2; // average value top
int avd = (ld + rd) / 2; // average value down
int avl = (lt + ld) / 2; // average value left
int avr = (rt + rd) / 2; // average value right
int dvert = avt - avd; // check the diffirence of up and down
int dhoriz = avl - avr;// check the diffirence og left and rigt
Serial.print(avt);
Serial.print(" ");
Serial.print(avd);
Serial.print(" ");
Serial.print(avl);
Serial.print(" ");
Serial.print(avr);
Serial.print(" ");
Serial.print(dtime);
Serial.print(" ");
Serial.print(tol);
Serial.println(" ");
if (-1*tol > dvert || dvert > tol) // check if the diffirence is in the tolerance else change vertical angle
{
if (avt > avd)
{
servov = ++servov;
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
}
else if (avt < avd)
{
servov= --servov;
if (servov < servovLimitLow)
{
servov = servovLimitLow;
}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
{
if (avl > avr)
{
servoh = --servoh;
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
else if (avl = avr)
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
}
Yuqori chap sensordan keladigan qora simni oling (TL deb belgilangan) va uni ikkinchi Terminal blok teshigiga joylashtiring.
Pastki chapdan oling va uchinchi teshikka o'ting.
Yuqori o'ng to'rtinchi teshikka kiradi.
Yuqori chap beshinchi teshikka kiradi.
Ularning barchasi mahkam yopilganligiga ishonch hosil qiling.
O'zingizning 4 Port Terminal Blokingizni va to'rtta 10000 mm qarshiliklarga ega bo'ling .
To'rt rezistorni bir-biriga bog'lang va ularni 4 Port Blokidagi teshiklardan biriga qo'ying . Qarama-qarshi tuynukda bir jumperda . Bu jumper bizning umumiy salbiyimiz .
Endito'rtta Jumpersni ushlang.Ushbu Jumpers-ning har biri bizning 5 portli blokimizdagi rezistor bilan teshikni bo'lishadi . Bir tayoq Resistor chek va to'rt qora Tel teshik har bir qarama-qarshi teshigidan bir Jumper.
Bundan tashqari, sizning oxirgi port ulanish moslamangizni qarama-qarshi tuynukda sizning Umumiy Pozitivingiz (barcha qizil simlar bilan) uchun sizning 5 Port Terminal Blokida ishlatishni xohlaysiz .
Servoslarni Arduino-ga ulang. Buni Shildning ko'plab ichki pin qatorlari orqali bajarish juda oson.
Bottom Servo PIN 10 ketadi.
Top Servo PIN 9 boradi.
Qizil rang ijobiy va qora rangga, sariq rang signalga o'tishi bilan ularni to'g'ri biriktirganingizga ishonch hosil qiling.
Endi biz Terminal blokimizdan chiqadigan barcha oltita sakrashni bog'laymiz.
Umumiy salbiy (Besh portli blokdan) GND (zamin) pinlarining istalgan qismiga o'tishi mumkin .
Umumiy musbat (to'rtta port blokidan) har qanday 5V pinga o'tishi mumkin.O'zingizning 5 ta port blokingizga qarang. Bu tartib chapdan o'ngga bo'lishi kerak.
Umumiy salbiy. TL BL TR BR.
TL 2-pin-ga o'tadi
BL 0 pin-ga o'tadi
TR 3 pin-ga o'tadi
BR 1-pin-ga o'tadi
Kodni qaysi tugmachasi borligini har doim o'zgartirishingiz mumkin.
http://fayllar.org
|