Hallo zusammen,
bin neu im Forum und das hier ist mein erste Post ;). Mit dem Arduino kenn ich mich schon aus und komme normalerweise auch gut zurecht aber irgentwie stoß ich momentan an meine Grenzen.
Zum Thema:
Ich versuche einen Mechanischen Pokemon Ausbrüt Bot(ja klingt kindisch aber langweile eben) zu bauen. Soweit so gut. Ich Arbeite mit drei Servomotoren die auf das Steuerkreuz und die A- bzw. B-Knöpfe drücken. Der erste Teil vom Code hat wunderbar funktioniert und dann hab ich mich an den Rest gesetzt und plötzlich spinnt der vorher funktionale Teil vollkommen rum und ich weiß nicht warum. Könnte mir vielleicht dabei einer helfen? Hier mal der Code:
#include <Servo.h>
#define UP_BUTTON 45
#define RIGHT_BUTTON 118
#define DOWN_BUTTON 102
#define LEFT_BUTTON 51
#define A_BUTTON 115
#define B_BUTTON 35
Servo upright;
Servo downleft;
Servo ab;
int eggcounter = 0;
int pokemonboxcounter = 0;
void setup(){
ab.attach(9);
upright.attach(10);
downleft.attach(11);
}
void loop() {
starthatching();
}
void starthatching(){
while(eggcounter < 4) {
stepforegg();
}
while(eggcounter > 0) {
hatchegg();
}
storePKM();
}
void stepforegg(){
pressButton(B_BUTTON);
pressButton(LEFT_BUTTON);
delay(12000);
releaseButton(LEFT_BUTTON);
pressButton(RIGHT_BUTTON);
delay(12000);
releaseButton(RIGHT_BUTTON);
releaseButton(B_BUTTON);
delay(1000);
steps(LEFT_BUTTON, 15);
delay(1000);
steps(UP_BUTTON, 1);
delay(350);
pressSingleButton(A_BUTTON);
int light = 520;
if(analogRead(A0) < 400) {
light = 400;
}
while(analogRead(A0) < light){
pressSingleButton(A_BUTTON);
delay(350);
}
eggcounter++;
release_all();
}
void storePKM() {
pressButton(RIGHT_BUTTON);
delay(15000);
releaseButton(RIGHT_BUTTON);
delay(1000);
steps(LEFT_BUTTON, 10);
delay(1000);
steps(UP_BUTTON, 3);
delay(3000);
steps(UP_BUTTON, 6);
delay(1000);
steps(RIGHT_BUTTON, 2);
delay(1000);
steps(UP_BUTTON, 1);
delay(1000);
pressSingleButton(A_BUTTON);
delay(350);
pressSingleButton(A_BUTTON);
delay(350);
pressSingleButton(A_BUTTON);
delay(350);
pressSingleButton(A_BUTTON);
delay(2500);
for(int i = 0; i <= eggcounter; i++) {
pressSingleButton(RIGHT_BUTTON);
pressSingleButton(A_BUTTON);
pressSingleButton(A_BUTTON);
if(pokemonboxcounter >= 30){
pressSingleButton(RIGHT_BUTTON);
pokemonboxcounter = 0;
}
pressSingleButton(A_BUTTON);
pokemonboxcounter++;
}
eggcounter = 0;
pressSingleButton(B_BUTTON);
delay(600);
pressSingleButton(B_BUTTON);
delay(600);
pressSingleButton(B_BUTTON);
delay(600);
pressSingleButton(B_BUTTON);
delay(4000);
steps(LEFT_BUTTON, 2);
delay(1000);
steps(DOWN_BUTTON, 7);
delay(4500);
steps(DOWN_BUTTON, 2);
delay(1000);
release_all();
delay(1000);
}
void hatchegg() {
while(eggcounter != 0){
while(analogRead(A0) > 520) {
pressButton(B_BUTTON);
pressButton(LEFT_BUTTON);
delay(12000);
releaseButton(LEFT_BUTTON);
pressButton(RIGHT_BUTTON);
delay(12000);
releaseButton(RIGHT_BUTTON);
releaseButton(B_BUTTON);
delay(1000);
}
while(analogRead(A0) < 520) {
pressSingleButton(B_BUTTON);
}
eggcounter--;
}
}
void steps(int dir, int count){
for(int i = 0; i < count; i++){
pressButton(dir);
delay(250);
releaseButton(dir);
delay(250);
}
}
void pressSingleButton(int b){
pressButton(b);
delay(1000);
releaseButton(b);
delay(1000);
}
void release_all(){
upright.write(90);
delay(15);
downleft.write(90);
delay(15);
ab.write(90);
delay(15);
}
void releaseButton(int b){
switch(b) {
case UP_BUTTON:
upright.write(90);
break;
case RIGHT_BUTTON:
upright.write(90);
break;
case DOWN_BUTTON:
downleft.write(90);
break;
case LEFT_BUTTON:
downleft.write(90);
break;
case A_BUTTON:
ab.write(90);
break;
case B_BUTTON:
ab.write(90);
break;
}
delay(15);
}
void pressButton(int b) {
switch(b) {
case UP_BUTTON:
upright.write(UP_BUTTON);
break;
case RIGHT_BUTTON:
upright.write(RIGHT_BUTTON);
break;
case DOWN_BUTTON:
downleft.write(DOWN_BUTTON);
break;
case LEFT_BUTTON:
downleft.write(LEFT_BUTTON);
break;
case A_BUTTON:
ab.write(A_BUTTON);
break;
case B_BUTTON:
ab.write(B_BUTTON);
break;
}
delay(15);
}
Es ist momentan so das der Charakter nur noch nach Links läuft und auch nur der Teil des Codes ausgeführt der in der void stepforegg nach links geht.
Danke schon mal im Vorraus.