01-11-2020, 00:47
(Ten post był ostatnio modyfikowany: 01-11-2020, 00:51 przez gervazy1978.)
Cześć siedzę sobie nad projektem redusera filamentu z 3mm na 1,75mm wiem ze jest troche tematow w internecie i pewnie jakbym się wgryzł to bym znalazł kod który mógłbym zaadoptować po paru zmianach ale chciałbym to z małą pomocą zrobić sam, w tym momencie jak zrobić żeby silnik krokowy kręcił się cały czas z prędkością X a nie skokowo co pomiar z fotorezystorów.
Jest 7 fotorezystorów dwa po dwa brzeżne są połączone w pary więc ich odczyty są wyższe.
Kod :
odczyty z serial portu wygladają tak:
a układ :
Jest 7 fotorezystorów dwa po dwa brzeżne są połączone w pary więc ich odczyty są wyższe.
Kod :
Kod:
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
int readPin0 = A0;
int readPin1 = A1;
int readPin2 = A2;
int readPin3 = A3;
int readPin4 = A4;
int pomiar;
int min_0 = 0;
int max_0;
int min_1 = 0;
int max_1;
int min_2 = 0;
int max_2;
int min_3 = 0;
int max_3;
int min_4 = 0;
int max_4;
int kroki = 2000;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
// Declare pins as Outputs
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop() {
pomiar = analogRead(readPin0);
if(pomiar>max_0){
max_0=pomiar;
}
while(min_0==0){
min_0=pomiar;
}
if(pomiar<min_0){
min_0=pomiar;
}
Serial.print("Sensory 1-2 : ");
Serial.print(pomiar);
Serial.print(" MIN : ");
Serial.print(min_0);
Serial.print(" MAX : ");
Serial.println(max_0);
if((pomiar-min_0)<30){
kroki=kroki-20;
}
//delay();
pomiar = analogRead(readPin1);
if(pomiar>max_1){
max_1=pomiar;
}
while(min_1==0){
min_1=pomiar;
}
if(pomiar<min_1){
min_1=pomiar;
}
Serial.print("Sensory 3 : ");
Serial.print(pomiar);
Serial.print(" MIN : ");
Serial.print(min_1);
Serial.print(" MAX : ");
Serial.println(max_1);
if((pomiar-min_1)<30){
kroki=kroki-10;
}
//delay();
pomiar = analogRead(readPin2);
if(pomiar>max_2){
max_2=pomiar;
}
while(min_2==0){
min_2=pomiar;
}
if(pomiar<min_2){
min_2=pomiar;
}
Serial.print("Sensory 4 : ");
Serial.print(pomiar);
Serial.print(" MIN : ");
Serial.print(min_2);
Serial.print(" MAX : ");
Serial.println(max_2);
//delay();
pomiar = analogRead(readPin3);
if(pomiar>max_3){
max_3=pomiar;
}
while(min_3==0){
min_3=pomiar;
}
if(pomiar<min_3){
min_3=pomiar;
}
Serial.print("Sensory 5 : ");
Serial.print(pomiar);
Serial.print(" MIN : ");
Serial.print(min_3);
Serial.print(" MAX : ");
Serial.println(max_3);
if((pomiar-min_3)<30){
kroki=kroki+10;
}
//delay();
pomiar = analogRead(readPin4);
if(pomiar>max_4){
max_4=pomiar;
}
while(min_4==0){
min_4=pomiar;
}
if(pomiar<min_4){
min_4=pomiar;
}
Serial.print("Sensory 6-7 : ");
Serial.print(pomiar);
Serial.print(" MIN : ");
Serial.print(min_4);
Serial.print(" MAX : ");
Serial.println(max_4);
if((pomiar-min_4)<30){
kroki=kroki+20;
}
//delay();
{
// Set motor direction clockwise
digitalWrite(dirPin, HIGH);
// Spin motor slowly
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(kroki);
digitalWrite(stepPin, LOW);
delayMicroseconds(kroki);
}
}
Serial.print("predkosc : ");
Serial.println(kroki);
}
a układ :