Просмотр содержимого документа
«Шаблон программного кода для ардуино, для занятий по робототехнике.»
Код управления солнечными панелями
motor horizontal;
int motorh = 250;
int motorhLimitHigh = 180;
int motorhLimitLow = 0;
motor vertical;
int motorv = 100;
int motorvLimitHigh = 180;
int motorvLimitLow = 0;
int ldrlt = 8; //LDR левый фото резистор
int ldrrt = 9; //LDR правый фоторезистор
int ldrld = 10; //LDR верхний фоторезистор
int ldrrd = 11; //LDR нижний фоторезистор
int buzz_pin = 10;
int buzz_tone = 20;
int tol = 50;
void setup()
{
Serial.begin(9600);
pinMode(buzz_pin, OUTPUT);
horizontal.attach(31);
vertical.attach(30);
horizontal.write(motorh);
vertical.write(motorv);
}
void loop()
{
int lt = digitalRead(ldrlt); // top левый
int rt = digitalRead(ldrrt); // top правый
int ld = digitalRead(ldrld); // down верхний
int rd = digitalRead(ldrrd); // down нижний
int avt = (lt + rt) / 2;
int avd = (ld + rd) / 2;
int avl = (lt + ld) / 2;
int avr = (rt + rd) / 2;
int dvert = abs(avt - avd);
int dhoriz = abs(avl - avr);
Serial.print("avt: ");
Serial.print(avt);
Serial.print(" ");
Serial.print("avd: ");
Serial.print(avd);
Serial.print(" ");
Serial.print("avl: ");
Serial.print(avl);
Serial.print(" ");
Serial.print("avr: ");
Serial.println(avr);
Serial.print("h: ");
Serial.print(motorh);
Serial.print(" ");
Serial.print("v: ");
Serial.print(motorv);
Serial.print(" ");
if (dhoriz tol)
{
if (avl avr)
{
if (motorh - 1 = motorhLimitLow) motorh--;
else beep(150);
}
else if (avl
{
if (motorh + 1
else beep(150);
}
horizontal.write(motorh);
}
if (dvert tol)
{
if (avt avd)
{
if (motorv + 1
else beep(100);
}
else if (avt
{
if (motorv - 1 = motorvLimitLow) motorv--;
else beep(100);
}
vertical.write(motorv);
}
}
void beep(unsigned char delayms){
digitalWrite(buzz_pin, buzz_tone);
delay(delayms);
digitalWrite(buzz_pin, 0);
delay(delayms);
}