// // serialstep.ino // // serial step-and-direction // // Neil Gershenfeld 4/11/21 // Quentin Bolsee 12/7/21 : add button // Alan Han 04/18/22 : modified for arduino nano // // This work may be reproduced, modified, distributed, // performed, and displayed for any purpose, but must // acknowledge this project. Copyright is retained and // must be preserved. The work is provided as is; no // warranty is provided, and users accept all liability. // //#define LEDA 4 //#define LEDC 2 #define EN 6 #define DIR 4 #define STEP 3 //#define M1 14 //#define M0 15 #define NSTEPS 1000 #define DELAYHIGH 10 #define DELAYLOW 1000 #define BLINK 100 #define BUTTON 31 void setup() { //Serial.begin(9600); Serial.begin(115200); /* digitalWrite(LEDA,HIGH); pinMode(LEDA,OUTPUT); digitalWrite(LEDC,LOW); pinMode(LEDC,OUTPUT); */ digitalWrite(EN,HIGH); pinMode(EN,OUTPUT); digitalWrite(STEP,LOW); pinMode(STEP,OUTPUT); digitalWrite(DIR,LOW); pinMode(DIR,OUTPUT); pinMode(BUTTON, INPUT_PULLUP); /* // 1 step digitalWrite(M0,LOW); digitalWrite(M1,LOW); pinMode(M0,OUTPUT); pinMode(M1,OUTPUT); // 1/2 step digitalWrite(M0,HIGH); digitalWrite(M1,LOW); pinMode(M0,OUTPUT); pinMode(M1,OUTPUT); // 1/8 step digitalWrite(M0,HIGH); digitalWrite(M1,HIGH); pinMode(M0,OUTPUT); pinMode(M1,OUTPUT); // 1/16 step digitalWrite(M1,HIGH); pinMode(M0,INPUT); pinMode(M1,OUTPUT); // 1/32 step digitalWrite(M0,LOW); pinMode(M0,OUTPUT); pinMode(M1,INPUT); */ } void loop() { if (Serial.available()) { char c = Serial.read(); if (c == 'f') { digitalWrite(DIR,HIGH); digitalWrite(STEP,HIGH); delayMicroseconds(2); digitalWrite(STEP,LOW); } else if (c == 'r') { digitalWrite(DIR,LOW); digitalWrite(STEP,HIGH); delayMicroseconds(2); digitalWrite(STEP,LOW); } else if (c == '?') { // reply with button value int btn = digitalRead(BUTTON); Serial.write(btn ? '1' : '0'); } } }