Sketch da Attiny 85 ad Arduino uno 3r

Cosa voglio fare è semplice...ho un file che di solito va caricato su un attiny 85 montato su una mille fori dove assieme si trova una resistenza 10 k ed un condensatore il tutto porta ad una morsettiera da dove ho 5v+, grd, dir,pulse, signal per movimentare due motorini nema 17.
Adesso mi trovo un arduino uno r3 che non vuole saperne di essere programmato se non attraverso USBasp.
Quello che voglio fare è usarlo al posto della millefori attiny 85, perciò caricarci lo sketch destinato ad attiny.
Questo è lo sketch:

/* 
This simple sketch is an example of how you might program a third-party
microcontroller to drive the stepper motors of a 
RapidChange ATC Magazine Dust Cover

This sketch assumes that the microcontroller is always turned on with the dust
cover in a closed state. Persisting state is microcontroller dependent and beyond
the scope of this example
*/

#include <Arduino.h>

// Constants defined for clarity
#define DIRECTION_PIN     0
#define STEP_PIN          1
#define ACTION_PIN        2

#define SIGNAL_CLOSE      1
#define SIGNAL_OPEN       0

#define DIRECTION_CLOSE   1
#define DIRECTION_OPEN    0

#define INCREMENT_CLOSE  -1
#define INCREMENT_OPEN    1

#define CLOSED_STATE      0
#define OPEN_STATE        1
#define CLOSING_STATE     2
#define OPENING_STATE     3

#define CLOSED_STEPS      0
#define OPEN_STEPS        1600

#define STEP_DELAY        150

// variables to manage state - initialized in a closed state
int stepCounter = CLOSED_STEPS;
int coverState = CLOSED_STATE;
int stepIncrement = INCREMENT_CLOSE;

void setup() {
  // Define pins  
  pinMode(ACTION_PIN, INPUT_PULLUP);
  pinMode(DIRECTION_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);

  // Initialize step and direction pins
  digitalWrite(DIRECTION_PIN, DIRECTION_CLOSE);
  digitalWrite(STEP_PIN, LOW);
}

void loop() {

  // Check if we've received a new signal
  // If we have a new close signal
  if (digitalRead(ACTION_PIN) == SIGNAL_CLOSE && (coverState == OPEN_STATE || coverState == OPENING_STATE)) {
    // Set closing state  
    coverState = CLOSING_STATE;
    stepIncrement = INCREMENT_CLOSE;
    digitalWrite(DIRECTION_PIN, DIRECTION_CLOSE);

  // Or if have a new open signal
  } else if (digitalRead(ACTION_PIN) == SIGNAL_OPEN && (coverState == CLOSED_STATE || coverState == CLOSING_STATE)) {
    // Set opening state
    coverState = OPENING_STATE;
    stepIncrement = INCREMENT_OPEN;
    digitalWrite(DIRECTION_PIN, DIRECTION_OPEN);
  }

  // Handle movement if necessary
  // If we are in the process of opening or closing, let's step
  if (coverState == OPENING_STATE || coverState == CLOSING_STATE) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(STEP_DELAY);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(STEP_DELAY);

    // And record where we are
    stepCounter = stepCounter + stepIncrement;
  }
  
  // If we are fully closed or fully open, set the appropriate state
  if (stepCounter == CLOSED_STEPS) {
    coverState = CLOSED_STATE;
  } else if (stepCounter == OPEN_STEPS) {
    coverState = OPEN_STATE;
  }
}

Domanda:..... sostituendo(0,1,2) con ad esempio (7,8,9,) e lasciando quel "3" che non so cosa sia...non funziona nulla.....parzialmente se lascio (0,1,2). Penso che quel benedetto "3" sia errato.....qualcuno può confermarlo ?? o indicarmi dove sbaglio ?? grazie

Questi 3 sono i pin che usi. Action presumo sia collegato a un pulsante mentre gli altri due presumo siano collegati al motore / motori.
Prova ad adeguare questi 3 valori ai pin che usi sulla uno. Il resto lo lascerei com'è.

Grazie fratt
Non ho indicato il fatto che collegherei arduino ad una scheda cnc (AXbbe) da dove parte il segnale di "action".
Lasciando lo sketch originale (0,1,2ecc) ed alimentando arduino a 12 v, con il tester ho misurato 5v sul PIN =0, 0v sul PIN=1; 5v sul PIN=2; 2/3 v sul PIN=3.
Collegando poi il "gnd" del driver motore ad arduino (ponticellando i negativi).
Potrei lasciare tutto così come è, ma non volendo usare 0=RX 1=TX per un mio prurito e sostituendo 0 con 7 , 1 con 8, 2 con 9 e lasciando il 3 non ho voltaggio nei pin arduino.
Non capisco il perchè.

Non capisco perché parli del pin 3, dallo sketch mi pare proprio che non venga usato.
In teoria cambi solo le 3 righe che ho evidenziato mettendo i pin che usi sulla uno.
Non ho mai usato schede cnc... Su questo non so aiutarti

Come dice fratt, che cosa hai cambiato in 7,8 e 9 ? Quali costanti ?
Il 3 è uno stato, OPENING_STATE. Cosa c'entra ? Nulla.
Hai una pinMode,digitalWrite o digitalRead con OPENING_STATE ? No. Quindi cosa c'entra coi pin ?

Poi, QUANDO leggi col tester ? Col programma che gira ? Ma sei sicuro leggi quando i pin DIRECTION_PIN e STEP_PIN sono high ?? E se leggi quando sono LOW ??
Inoltre, il pin action è in input cosa speri di sentire col tester ?
La domanda corretta è, la cnc su quel pin manda un segnale a massimo 5V ? Arduino Uno R3 lavora a 5V

Sono d'accordo con te non usare pin 0 e 1 su Arduino Uno R3 che sono i pin della seriale/usb.

avrei sostituito tutti gli "0" con "7" e così via.....è questo l'errore ??
Ho iniziato da poco questo mondo...

Cito me stesso...
Lo sketch usa solo 3 pin e vengono "dichiarati" con le 3 define. Prova a cambiare SOLO quelle 3 righe.

Che figura di mmmm...........................adesso devo capire perchè...io pensassi fossero legate tra loro.ù
Quando non si vede tra le righe e non si comprende basta uno spunto e capisci....grazie per lo spunto.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.