Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
// Include the Arduino Stepper Library #include
#include
const int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 4,5,6,7); int lim = 39; //lim is the max number of linear axis steps int count = 0; int minstep=28; //~2 degrees at28 to 30 int OldX=0; int OldY=0; int NewX=0; int NewY=0; int IsHome=0; int buttonState = 0; int nav(int x, int y); int goHome(); void setup(){ irrecv.enableIRIn(); // Start the receiver irrecv.blink13(true); myStepper.setSpeed(30); pinMode(14, OUTPUT); //DC motor pinMode(15, OUTPUT); //dc motor other direction pinMode(10, INPUT_PULLUP); Serial.begin(9600); delay(6000); //if(IsHome==0){ //goHome(); //} } void loop(){ if (IrReceiver.decode()) { Serial.println(IrReceiver.decodedIRData.command); if(IrReceiver.decodedIRData.command==21){ goHome(); //isHome now set to 1 } if(IrReceiver.decodedIRData.command==64){ //y axis + myStepper.step(10); } if(IrReceiver.decodedIRData.command==25){ //move towards center myStepper.step(-10); } if(IrReceiver.decodedIRData.command==7){ //counter clock wize analogWrite(14,0); analogWrite(15, 150); //motor beeps if its too low delay(30); analogWrite(15,0); } if(IrReceiver.decodedIRData.command==9){ //step clockwize analogWrite(15,0); analogWrite(14, 150); //motor beeps if its too low delay(30); analogWrite(14,0); } IrReceiver.resume(); } } //end void loop() int nav(int x, int y){ //x is infinite, y is limited. if y is negative the limit is 0. // y is allso max limited at IDK, like 70 turns, so figure out the limit there too. int difX=NewX-OldX; int difY=NewY-OldY; if(NewX > OldX){ analogWrite(14, 55); //motor beeps if its too low delay(difX*60); analogWrite(14,0); } if(NewX < OldX){ analogWrite(15, 55); //motor beeps if its too low delay(difX*60); analogWrite(15,0); } if(NewX == OldX){ analogWrite(14,0); analogWrite(15,0); } if(NewY < OldY){ if(difY<0){ difY=0; goHome(); }else{ myStepper.step(difY); } } if(NewY > OldY){ myStepper.step(difY); } if(NewY == OldY){ myStepper.halt(); } OldX=NewX; OldY=NewY; return 0; } int goHome(){ buttonState = digitalRead(10); while(buttonState==HIGH){ //Serial.println("HIGH"); myStepper.step(stepsPerRevolution); //going home Serial.println("High"); buttonState = digitalRead(10); if(buttonState==LOW) { Serial.println("LOW"); //move to center for (int i =0; i<20; i++){ myStepper.step(-stepsPerRevolution); Serial.print("i step count: "); Serial.println(i); } myStepper.halt(); IsHome=1; } } return IsHome; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)