Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://www.makerguides.com/a4988-stepper-motor-driver-arduino-tutorial/
- // Includere la libreria AccelStepper:
- #include <AccelStepper.h>
- // Definisce i collegamenti del motore passo-passo e il tipo di interfaccia del motore. Il tipo di interfaccia del motore deve essere impostato su 1 quando si utilizza un driver:
- #define dirPin 3
- #define stepPin 2
- #define motorInterfaceType 1
- #define ENA 5
- // Crea una nuova istanza della classe AccelStepper:
- AccelStepper stepper = AccelStepper ( motorInterfaceType, stepPin, dirPin ) ;
- unsigned long previous = 0;
- unsigned long previous1 = 0;
- unsigned long previous2 = 0;
- boolean lastButtonState = HIGH;
- boolean buttonState;
- int repeat = 1;
- int var = 2;
- int old_var = 98;
- int segnale;
- unsigned long ultimo;
- void setup() {
- stepper. setMaxSpeed ( 1000 ) ;
- stepper.setAcceleration(200);
- Serial.begin(9600);
- pinMode (4, INPUT);
- pinMode (ENA, OUTPUT);
- //pinMode (DIR, OUTPUT);
- // pinMode (STEP, OUTPUT);
- //digitalWrite(ENA, LOW);
- }
- void loop() {
- scrivi();
- motore();
- pulsanti_tempo();
- }
- void scrivi() {
- if (var != old_var) {
- Serial.println(var);
- old_var = var;
- if (var == 1 ) {
- Serial.println("attesa calcolo valore moneta");
- }
- if (var == 2) {
- Serial.println("carico moneta");
- }
- if (var == 3) {
- Serial.println("assenza moneta ");
- }
- }
- }
- void pulsanti_tempo() {
- if (digitalRead(4) == LOW && lastButtonState == HIGH && var != 3) {
- lastButtonState = LOW;
- var = 1; // qui tempo calcolo moneta
- ultimo = millis();
- previous = millis();
- }
- if (millis() - previous > 2000 ) {
- lastButtonState = HIGH;// qui carico mnoneta
- previous = 0;
- var = 2;
- }
- if ( ( millis() - ultimo ) > 5000 ) {
- var = 3; // qui scarico mnoneta
- }
- if ( ( millis() - ultimo ) > 8000 ) {
- ultimo = 0;// qui tempo max scarico mnoneta
- ultimo = millis();
- //previous = millis();
- var = 2;
- }
- }
- void motore() {
- switch (var) {
- case 1: {
- stepper. setSpeed ( 0 ) ;
- stepper. runSpeed () ;
- }
- break;
- case 2: {
- digitalWrite(ENA, LOW);//qui fermo il motore
- // Fa avanzare il motore con una velocitΓ costante come impostato da setSpeed ββ():
- stepper. setSpeed ( 150 ) ;
- stepper. runSpeed () ;
- }
- break;
- case 3: {//qui deve tornare indietro di 50 passi indietro
- digitalWrite(ENA, LOW);
- // Fa andare indietro il motore
- if (stepper.distanceToGo() == -150)
- stepper.moveTo(-stepper.currentPosition());
- stepper.run();
- //finito di muoversi va in var =4
- var = 4;
- }
- break;
- case 4: {
- ultimo = millis();
- //previous = millis();
- var = 2;
- }
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement