Potreboval by som pomôcť pri tvorení kódu pre natáčanie solárneho panelu za Slnkom.
Používam Arduino UNO (nejaká čínska kópia), krokový motorček staršieho typu, 2 fotorezistory (+ 2k2Ω rez.), L293D motor driver od DK Electronics
moje knižnice
a kód, ktorý som tak nejak zostavil zo všetkého možného
Kód: Vybrať všetko
const int rightSensorPin = A0;
const int leftSensorPin = A1;
int rightSensorRead = 0;
int leftSensorRead = 0;
int rightLightPct = 0;
int leftLightPct = 0;
int degreeChange = 1;
//Arduino's CustomStepper library
//Author: Igor Campos
#include <AFMotor.h>
#include <CustomStepper.h>
AF_Stepper motor(48, 2);
void setup() {
Serial.begin(9600);
motor.setSpeed(5);
}
void loop() {
rightSensorRead = analogRead(rightSensorPin);
leftSensorRead = analogRead(leftSensorPin);
rightLightPct = map(rightSensorRead, 0, 1023, 0, 100);
leftLightPct = map(leftSensorRead, 0, 1023, 0, 100);
degreeChange = map(abs(rightLightPct-leftLightPct),0,100,2,10);
Serial.print("right = ");
Serial.print(rightSensorRead);
Serial.print(" left = ");
Serial.print(leftSensorRead);
Serial.print(" Pct r/l = ");
Serial.print(rightLightPct);
Serial.print("/");
Serial.println(leftLightPct);
if(rightLightPct < 30 && leftLightPct < 30){
Serial.println("No sun detected!");
}else if(rightLightPct > leftLightPct){
Serial.println("Turning CCW!");
motor.step(1, FORWARD, MICROSTEP);
}else if(rightLightPct < leftLightPct){
Serial.println("Turning CW!");
motor.step(1, BACKWARD, MICROSTEP);
}
}
Túto prácu potrebujem prezentovať počas dňa čiže je tam veľa svetla, fotorezistory som preto dal do gumených tmavých úchytov pre perá aby neboli priamo ožarované a chcem aby sa natáčali za svetlom baterky.
Motor som testoval pomocou knižnice od Datafruit a tam príklad pre Stepper motor a funguje ako má čiže chyba by mala byť v mojom kóde.
Ďakujem za každú radu.