Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //PROGRAMA��O RASTREAMENTO SOLAR
- #include <Servo.h> // Inclui a biblioteca dos servos motores
- // // Configurando motores DC
- Servo servohori; // Config do motor horizontal
- int servoh = 160; // posi��o inicial do servo horizontal
- int servohLimitHigh = 160; // maxima angula��o
- int servohLimitLow = 20; // minima angula��o
- Servo servoverti; // Config do motor vertical
- int servov = 0; // posi��o inicial do servo vertical
- int servovLimitHigh = 30;
- int servovLimitLow = 23;
- // // Atribuindo os sensores LDR's
- int ldrtopl = 2; // Superior esquerdo LDR
- int ldrtopr = 1; // Superior direito LDR
- int ldrbotl = 3; // Inferior esquerdo LDR
- int ldrbotr = 0; // Inferrior direito LDR
- int topl = 0;
- int topr = 0;
- int botl = 0;
- int botr = 0;
- int dtime = 10;
- int avgtop = 0; // Media superior dos LDRs
- int avgbot = 0; // Media inferior dos LDRs
- int avgleft = 0; // Media esquerda dos LDRs
- int avgright = 0; // Media direita dos LDRs
- //--------------------------------------------------
- void setup ()
- {
- Serial.begin(9600);
- pinMode(9, OUTPUT);
- pinMode(10, OUTPUT);
- servohori.attach(10);
- servohori.write(servoh);
- servoverti.attach(9);
- servoverti.write(servov);
- delay(300);
- }
- //--------------------------------------------------
- void loop()
- {
- // // capturando valores analogicos de cada LDR
- topl = analogRead(ldrtopl);
- topr = analogRead(ldrtopr);
- botl = analogRead(ldrbotl);
- botr = analogRead(ldrbotr);
- dtime = 10;
- // // calculando a m�dia
- avgtop = (topl + topr) / 2; // Media superior dos LDRs
- Serial.print("avgtop : "); Serial.println(avgtop);
- avgbot = (botl + botr) / 2; // Media inferior dos LDRs
- Serial.print("avgbot : "); Serial.println(avgbot);
- avgleft = (topl + botl) / 2; // Media esquerda dos LDRs
- Serial.print("avgleft : "); Serial.println(avgleft);
- avgright = (topr + botr) / 2; // Media direita dos LDRs
- Serial.print("avgright : "); Serial.println(avgright);
- Serial.println(" ");
- if (avgtop < avgbot) // Se a media superior for menor que a m�dia inferior entra no loop
- {
- servoverti.write(servov + 1); // Servo vertical se move pra cima
- if (servov > servovLimitHigh) // Se o servo vertical estiver maior que o limite superior:
- {
- servov = servovLimitHigh; // �ngulo se manter no �ngulo de limite superior
- }
- delay(dtime);
- }
- if (avgbot < avgtop) // Caso n�o, m�dia inferior menor que m�dia superior:
- {
- servoverti.write(servov - 1); // Servo vertical se move pra baixo
- if (servov < servovLimitLow) // Se o �ngulo do servo vertical estiver menor que o limite inferior:
- {
- servov = servovLimitLow; // �ngulo vale o �ngulo do limite inferior
- }
- delay(dtime);
- }
- servoverti.write(servov);
- if (avgleft > avgright) // Se m�dia esquerda for maior que m�dia da direita:
- {
- servohori.write(servoh + 1); // Servo horizontal se move pra direita
- if (servoh > servohLimitHigh)
- {
- servoh = servohLimitHigh;
- }
- delay(dtime);
- }
- if (avgright > avgleft) // Se m�dida da direita for maior que m�dia da esquerda
- {
- servohori.write(servoh - 1); // Servo horizontal se move pra esquerda
- if (servoh < servohLimitLow)
- {
- servoh = servohLimitLow;
- }
- delay(dtime);
- }
- servohori.write(servoh);
- delay(50);
- // // Caso ocorra erro nos LDRs
- if (topl == 0 && topr == 0 && botl == 0 && botr == 0)
- {
- servov = 23;
- servoh = 80;
- servoverti.write(servov);
- servohori.write(servoh);
- }
- delay(dtime);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement