Hallo Thomas, sorry das ich zu spät bei dir melde da ich lange nicht mehr bei Roboternetz reingeschaut habe weil meine PC komplet kaputt war und danach noch den Gastherme auch kaputt gegangen hm... das war teuer mit den Gastherme und konnte meine PC nicht neu kaufen und muss hart sparen hm.... und mit den Fräse habe ich schon gebaut und fast fertig und es fehlen noch den Trapezgewindestangen und Trapezmuttern und dazu noch den Halterung für den Trapezmutter.Den Computerstuerung und Schrittmotoren habe ich schon da und wenn es fertig ist bin ich mal gespannt wie das läuft und hoffe das es klappt. Gruss Bodo der Robo bastler Zitat von Smith-mini-plane Hallo Bodo, na ja Platinenfräse , deine ist ja schon ausgewachsen !! Erstmal welche Steuerung hast du ??? Motoren und Steuerung müßen ja zusammenpassen !!! Ih würde auf 3-4 Nm gehen da kannst du auch ein wenig Gas geben . Bei meiner fast gleiche Verfahrwege habe ich nur kleine mit 0.8 A da ist bei 10mm/s Schluß. Gruß Thomas
Hallo, ich finde den Code den fehler nicht ich habe es aus dem buch abgeschrieben so wie es ist und ist trotzdem fehler drin und habe mehr mals ggprüft und keine fehler gefunden hm.... /********************** code to look for obstacles **********************/ // servo defines const int sweepServoPin = 9; // pin connected to servo const int servoDelay = 500; // time in ms for servo to move const int MIN_DISTANCE = 8; // robot stop when object is nearer (in inches) const int CLEAR_DISTANCE = 24; // distance in inches considered attracive to move const int MAX_DISTANCE = 150; // the maximum range of the distance sensor // servo angles left, right, center const int servoAngles[] = { 150, 30, 90}; const byte pingPin = 10; // digital pin 10 void lookBegin() { irSensorBegin(); // initialize sensors softServoAttach(sweepServoPin); /// attaches the servo pin to the servo object } // returns true if the given obstacle is detected boolean lookForObstacle(int obstacle) { switch(obstacle) { case OBST_FRONT_EDGE: return irEdgeDetect(DIR_LEFT) && irEdgeDetect(DIR_RIGHT); case OBST_LEFT_EDGE: return irEdgeDetect(DIR_LEFT); case OBST_RIGHT_EDGE: return irEdgeDetect(DIR_RIGHT); case OBST_FRONT: return lookAt(servoAngles[DIR_CENTER]) <= MIN_DISTANCE; } return false; } // returns the distance of objects at the given angle int lookAt(int angle) { softServoWrite(angle, servoDelay ); // wait for servo to get into position int distance, samples; long cume; distance = samples = cume = 0; for(int i =0; i < 4; i++) { distance = pingGetDistance(pingPin); if(distance > 0) { // printInValue(",distance); samples++; cume+= distance; } } if(samples > 0) distance = cume / samples; else distance = 0; if( angle != servoAngles[DIR_CENTER]) { Serial.print("looking at dir "); Serial.print(angle), Serial.print(" distance= "); Serial.printIn(distance); softServoWrite(servoAngles[DIR_CENTER], servoDelay/2); } return distance; } // function to check if robot can continue moving in current direction // returns true if robot is not blocked moving in current direction // this version only tests for obstacles in front boolean checkMovement() { boolean isClear = true; // default return value if no obstacles if(moveGetState() == MOV_FORWARD) { if(lookForObstacle(OBST_FRONT) == true) { isClear = false; } } return isClear; } // Look for and avoid obstacles using servo to scan void roam() { int distance = lookAt(servoAngles[DIR_CENTER]); if(distance == 0) { moveStop(); Serial.printIn("No front sensor"); return; // no sensor } else if(distance <= MIN_DISTANCE) { moveStop(); //Serial.print("Scanning:"); int leftDistance = lookAt(servoAngles[DIR_LEFT]); if(leftDistance > CLEAR_DISTANCE) { // serial.print(" moving left: "); moveRotate(-90); } else { delay(500); int rightDistance = lookAt(servoAngles[DIR_RIGHT]); if(rightDistance > CLEAR_DISTANCE) { // Serial.printIn(" moving right: "); moveRotate(90); } else { // Serial.print(" no clearence : "); distance = max( leftDistance, rightDistance); if(distance < CLEAR_DISTANCE/2) { timedMove(MOV_BACK, 1000); // back up for one second moveRotate(-180); // turn around } else { if(leftDistance > rightDistance) moveRotate(-90); else moveRotate(90); } } } } } // the following is based on loop code from myRobotEdge // robot checks for edge and moves to avoid void avoidEdge() { if( lookForObstacle(OBST_FRONT_EDGE) == true) { Serial.printIn("left and right sensor detected edge"); timedMove(MOV_BACK, 300); moveRotate(120); while(lookForObstacle(OBST_FRONT_EDGE) == true ) moveStop(); // stop motors if still over cliff } else if(lookForObstacle(OBST_LEFT_EDGE) ==true) { Serial.printIn("left sensor detected edge"); timedMove(MOV_BACK, 100); moveRotate(30); } else if(lookForObstacle(OBST_RIGHT_EDGE) == true) { Serial.printIn("right sensor detected edge"); timedMove(MOV_BACK, 100); moveRotate(-30); } }
Hallo Bodo, na ja Platinenfräse , deine ist ja schon ausgewachsen !! Erstmal welche Steuerung hast du ??? Motoren und Steuerung müßen ja zusammenpassen !!! Ih würde auf 3-4 Nm gehen da kannst du auch ein wenig Gas geben . Bei meiner fast gleiche Verfahrwege habe ich nur kleine mit 0.8 A da ist bei 10mm/s Schluß. Gruß Thomas