Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lise_diwan:logo-turtle [2019/12/11 19:14]
gweltaz créée
lise_diwan:logo-turtle [2023/02/19 21:08] (Version actuelle)
gweltaz
Ligne 1: Ligne 1:
-https://​www.instructables.com/​id/​Low-Cost-Arduino-Compatible-Drawing-Robot/​ +**Cette page devrait être supprimée**
-http://​archive.monograph.io/​joshburker/​logoturtle+
  
-http://joshburker.pbworks.com/w/page/103156198/​Logo%20Turtle%20Robot +[[https://www.instructables.com/id/Low-Cost-Arduino-Compatible-Drawing-Robot/]]
-http://​joshburker.pbworks.com/​w/​page/​103854757/​ArduinoLogo+
  
 +[[http://​archive.monograph.io/​joshburker/​logoturtle]]
 +
 +[[http://​joshburker.pbworks.com/​w/​page/​103156198/​Logo%20Turtle%20Robot]]
 +
 +[[http://​joshburker.pbworks.com/​w/​page/​103854757/​ArduinoLogo]]
 +
 +<​accordion>​
 +<panel title="​title">​
 +<code c>
 +// Download and install Trinket Pro drivers from
 +// https://​learn.adafruit.com/​introducing-pro-trinket/​starting-the-bootloader
 +
 +// [Tools] -> [Programmer] -> "​USBtinyISP"​
 +// [Tools] -> [Board] -> "Pro Trinket 3V/12 Mhz (USB)"
 +
 +
 +#include <​Servo.h>​
 +
 +// setup servo
 +int servoPin = 8;
 +int PEN_DOWN = 170; // angle of servo when pen is down
 +int PEN_UP = 80;   // angle of servo when pen is up
 +Servo penServo;
 +
 +int wheel_dia=66.25;​ //      # mm (increase = spiral out)
 +int wheel_base=112;​ //,    # mm (increase = spiral in) 
 +int steps_rev=128;​ //,     # 512 for 64x gearbox, 128 for 16x gearbox
 +int delay_time=6;​ //            # time between steps in ms
 +
 +// Stepper sequence org->​pink->​blue->​yel
 +int L_stepper_pins[] = {10, 12, 13, 11};
 +int R_stepper_pins[] = {3, 5, 6, 4};
 +
 +int fwd_mask[][4] =  {{1, 0, 1, 0},
 +                      {0, 1, 1, 0},
 +                      {0, 1, 0, 1},
 +                      {1, 0, 0, 1}};
 +
 +int rev_mask[][4] =  {{1, 0, 0, 1},
 +                      {0, 1, 0, 1},
 +                      {0, 1, 1, 0},
 +                      {1, 0, 1, 0}};
 +
 +
 +void setup() {
 +  randomSeed(analogRead(1)); ​
 +  // put your setup code here, to run once:
 +  Serial.begin(9600);​
 +  for(int pin=0; pin<4; pin++){
 +    pinMode(L_stepper_pins[pin],​ OUTPUT);
 +    digitalWrite(L_stepper_pins[pin],​ LOW);
 +    pinMode(R_stepper_pins[pin],​ OUTPUT);
 +    digitalWrite(R_stepper_pins[pin],​ LOW);
 +  }
 +  penServo.attach(servoPin);​
 +  Serial.println("​setup"​);​
 +}
 +
 +
 +void loop(){ // draw a calibration box 4 times
 +  pendown();
 +  for(int x=0; x<12; x++){
 +    forward(100);​
 +    left(90);
 +  }
 +  penup();
 +  done(); ​     // releases stepper motor
 +  while(1); ​   // wait for reset
 +}
 +
 +
 +// ----- HELPER FUNCTIONS -----------
 +int step(float distance){
 +  int steps = distance * steps_rev / (wheel_dia * 3.1412); //24.61
 +  /*
 +  Serial.print(distance);​
 +  Serial.print("​ ");
 +  Serial.print(steps_rev);​
 +  Serial.print("​ "​);  ​
 +  Serial.print(wheel_dia);​
 +  Serial.print("​ "​);  ​
 +  Serial.println(steps);​
 +  delay(1000);​*/​
 +  return steps;  ​
 +}
 +
 +
 +void forward(float distance){
 +  int steps = step(distance);​
 +  Serial.println(steps);​
 +  for(int step=0; step<​steps;​ step++){
 +    for(int mask=0; mask<4; mask++){
 +      for(int pin=0; pin<4; pin++){
 +        digitalWrite(L_stepper_pins[pin],​ rev_mask[mask][pin]);​
 +        digitalWrite(R_stepper_pins[pin],​ fwd_mask[mask][pin]);​
 +      }
 +      delay(delay_time);​
 +    } 
 +  }
 +}
 +
 +
 +void backward(float distance){
 +  int steps = step(distance);​
 +  for(int step=0; step<​steps;​ step++){
 +    for(int mask=0; mask<4; mask++){
 +      for(int pin=0; pin<4; pin++){
 +        digitalWrite(L_stepper_pins[pin],​ fwd_mask[mask][pin]);​
 +        digitalWrite(R_stepper_pins[pin],​ rev_mask[mask][pin]);​
 +      }
 +      delay(delay_time);​
 +    } 
 +  }
 +}
 +
 +
 +void right(float degrees){
 +  float rotation = degrees / 360.0;
 +  float distance = wheel_base * 3.1412 * rotation;
 +  int steps = step(distance);​
 +  for(int step=0; step<​steps;​ step++){
 +    for(int mask=0; mask<4; mask++){
 +      for(int pin=0; pin<4; pin++){
 +        digitalWrite(R_stepper_pins[pin],​ rev_mask[mask][pin]);​
 +        digitalWrite(L_stepper_pins[pin],​ rev_mask[mask][pin]);​
 +      }
 +      delay(delay_time);​
 +    } 
 +  }   
 +}
 +
 +
 +void left(float degrees){
 +  float rotation = degrees / 360.0;
 +  float distance = wheel_base * 3.1412 * rotation;
 +  int steps = step(distance);​
 +  for(int step=0; step<​steps;​ step++){
 +    for(int mask=0; mask<4; mask++){
 +      for(int pin=0; pin<4; pin++){
 +        digitalWrite(R_stepper_pins[pin],​ fwd_mask[mask][pin]);​
 +        digitalWrite(L_stepper_pins[pin],​ fwd_mask[mask][pin]);​
 +      }
 +      delay(delay_time);​
 +    } 
 +  }   
 +}
 +
 +
 +void done(){ // unlock stepper to save battery
 +  for(int mask=0; mask<4; mask++){
 +    for(int pin=0; pin<4; pin++){
 +      digitalWrite(R_stepper_pins[pin],​ LOW);
 +      digitalWrite(L_stepper_pins[pin],​ LOW);
 +    }
 +    delay(delay_time);​
 +  }
 +}
 +
 +
 +void penup(){
 +  delay(250);
 +  Serial.println("​PEN_UP()"​);​
 +  penServo.write(PEN_UP);​
 +  delay(250);
 +}
 +
 +
 +void pendown(){
 +  delay(250);  ​
 +  Serial.println("​PEN_DOWN()"​);​
 +  penServo.write(PEN_DOWN);​
 +  delay(250);
 +}
 +</​code>​
 +</​panel>​
 +</​accordion>​
  • lise_diwan/logo-turtle.1576088057.txt.gz
  • Dernière modification: 2019/12/11 19:14
  • par gweltaz