Autonoma Paintball Sentry Gun (7 / 7 steg)
Steg 7: Med hjälp av programvaran
När du kör koden, bör två fönster dyker upp. En är den Webcam Visa och den andra är i Kontrollpanelen.
I manuellt läge, kan du sikta och brand av peka och klicka på vyn webbkamera. I fristående läge, programvaran tar över, och din pistol vinner ett liv på egen hand! Ge det lite tid för att anpassa sig till bakgrunden och då det kommer att skjuta på allt som går in i sin uppfattning.
Leka med andra funktioner-Auto/Semi-auto, dölja kameravy, etc.
Calibrating - din servo och kamera arrangemang är förmodligen unikt, så måste du kalibrera den första gången.
Du kan göra detta genom att justera värdena för xMin, xMax, yMin och yMax, i början av koden. Leka med dem tills du har pistol sikte där du pekar med musen på vyn webbkamera. Ett användbart verktyg för att göra detta är att titta på siffrorna rullning av längst ner i IDE bearbetning medan du kör koden.
Du kan också behöva kalibrera servo positioner i Arduino koden:
Om du vill ange omlastning position, ändra dessa rader:
IF(digitalRead(7) == hög) {
xPosition = 110.
yPosition = 135;
eld = 0;
}
Om du vill ange utgångsläget (ingen USB-kommunikation), ändra dessa rader:
IF(Idle) {
idleCounter ++;
om (idleCounter > 10000) {
analogWrite (5, 50);
Delay(250);
digitalWrite (5, låg).
idleCounter = 0;
}
annat {
digitalWrite (5, låg).
}
xPosition = 110.
yPosition = 100;
eld = 0;
}
Ställ in "pressas" och "inte klämde" positioner för trigger servo, ändra dessa rader:
Annullera brand (int selector) {
IF(Selector == 1) {
fireTimer ++;
om (fireTimer > = 0 & & fireTimer < = triggerTravelMillis) {
trigger.write (90).
digitalWrite (2, hög).
}
om (fireTimer > triggerTravelMillis & & fireTimer < 1,5 * triggerTravelMillis) {
trigger.write (140);
digitalWrite (2, låg).
}
om (fireTimer > = 1,5 * triggerTravelMillis) {
fireTimer = 0;
}
}
IF(Selector == 3) {
trigger.write (90).
digitalWrite (2, hög).
}
}
Annullera eldupphör (int selector) {
IF(Selector == 1) {
fireTimer = 0;
trigger.write (140);
digitalWrite (2, låg).
}
IF(Selector == 3) {
trigger.write (140);
digitalWrite (2, låg).
}
}