Stap 6: Software
Zo, wanneer u de schakeloptie in één richting op de andere spiegelen en als de camera niet geleid de corresponderende tot heeft reed switch rietschakelaar de camera begint verplaatsen en nemen van foto's. Als u op de knop drukt terwijl u verplaatst, begint de camera bewegen snel, voor foutopsporing. Ook als u op de knop drukt de tuimelschakelaar 3-state in middle(-off) is is er een panorama-functie. De mogelijkheden van bewegingen combineren de servo en dc motor zijn eindeloos.
#include < AFMotor.h >
#include < Servo.h >
#include < SoftwareSerial.h >SoftwareSerial mySerial (A3, A2); RX, TX
AF_DCMotor motor(4); maken van motor #4, 64KHz pwm
Servo de servo;int swDirFor = 2; knop volgende
int swDirBack = 3; Achteruit knop
int swStopBeg = 10; stop1-knop
int swStopEnd = a1 worden verkregen; stop2-knop
int swPhoto = 11; SW relay voor foto
int servoPin = 9; servopin
int stappen = 100; Stap duur 1200 fotos
int servoPos = 96; middelste positie van de servo
int servoStart = 20; de beginpositie van de servo
int servoStop = 155; eindpositie van servo
int servoPot = A0; PIN van servo pot
int noOfSteps = 0; tellen aantal stappen
int swFast = A5; SW voor snelle beweging
int i = 0; //for-lusVOID Setup {}
mySerial.begin(9600);
Serial.begin(9600); instellen van seriële bibliotheek 9600 bps
Servo.attach(servoPin); servopin
motor.setSpeed(200); Zet de snelheid naar 200/255
pinMode(swDirFor,INPUT);
pinMode(swDirBack,INPUT);
pinMode(swStopBeg,INPUT);
pinMode(swStopEnd,INPUT);
pinMode(servoPin,OUTPUT);
pinMode(swPhoto,OUTPUT);
pinMode(servoPot,INPUT);
pinMode(swFast,INPUT);
digitalWrite(swPhoto,LOW);
servoMove(servoPos);
}
///////////////////////////////////////////////////////////////
void loop {}
Als (mySerial.available()) {}
mySerial.write('a');
mySerial.print ("knop stop einde:");
mySerial.println(digitalRead(swStopEnd));
}
Serial.Print ("knop staat voor:");
Serial.println(digitalRead(swDirFor));
Serial.Print ("knop staat terug:");
Serial.println(digitalRead(swDirBack));
Serial.Print ("knop stop Beg:");
Serial.println(digitalRead(swStopBeg));
Serial.Print ("knop stop einde:");
Serial.println(digitalRead(swStopEnd));
Serial.Print ("servo pot:");
Serial.println(analogRead(servoPot));
Serial.Print ("snel schakelaar:");
Serial.println(digitalRead(swFast));
servoPos=map(analogRead(servoPot), 0,1024,1,180);
servoMove(servoPos);
voorwaartse beweging
terwijl ((digitalRead(swDirFor)==1)) {}
Als (digitalRead(swStopEnd)==0) {}
Serial.println ("BREAK eindstuk (bruin)");
breken;
} //if sluiten
terwijl (digitalRead(swFast)==1) {}
Serial.println("FF");
runMotor(0,1000);
} //while swFast sluiten
noOfSteps ++;
runMotor(0,steps);
vertraging (750); //final-delay(2k-1hour)
takeFoto();
} //while swDirFor) == 1 sluiten
achterwaartse beweging
terwijl ((digitalRead(swDirBack)==1)) {}
Als (digitalRead(swStopBeg)==0) {}
Serial.println ("einde stopBeg");
breken;
} //if sluiten
terwijl (digitalRead(swFast)==1) {}
Serial.println("FB");
runMotor(1,1000);
} //while swFast sluiten
runMotor(1,steps);
noOfSteps ++;
servoMove(160);
vertraging (1000); //final vertraging
takeFoto();
} //while swDirBack) == 1 sluiten
Servo verkeer
Als ((digitalRead(swFast)==1)) {}
Serial.println ("mesa sto als");
servoMove(20);
vertraging (2000), //time servo naar pos starten
voor (ik = 20; ik < = 155; (i = i + 27)) {
Serial.println ("mesa sto voor");
servoMove(i);
delay(2000);
takeFoto();
delay(100);
noOfSteps ++;
} //for sluiten
} //if sluiten
delay(500);
Serial.Print ("stappen:");
Serial.println(noOfSteps);
} //loop sluiten
Routine voor beweging / / /
VOID runMotor (int dir, int stappen) {}
schakelaar (acroniem dir) {}
Case 0:
Serial.println ("vooruit");
motor.run(forward); zet hem op gaan vooruit
delay(Steps);
motor.run(release); gestopt
Serial.println ("Stop vooruit");
breken;
Case 1:
Serial.println("backward");
motor.run(BACKWARD);
delay(Steps);
motor.run(release);
Serial.println ("Stop naar achteren");
breken;
} //switch sluiten
vertraging (100);
} //runMotor sluiten
//Routine foto//////////////////////////////////////////////////
ongeldig takeFoto() {}
vertraging (500);
Serial.Print ("Klik!");
digitalWrite(swPhoto,HIGH);
delay(1500);
digitalWrite(swPhoto,LOW);
} //takeFoto sluiten
//Routine servo//////////////////////////////////////////////////
VOID servoMove (int pos) {}
Servo.write(POS); servo naar positie in de variabele 'pos' vertellen
Serial.Print ("servo verhuizing naar:");
Serial.println(POS);
delay(150); wacht 15ms voor de servo te bereiken de positie
} //servo sluiten