FTC Swerve — Arduino Nano simulation

An interactive Arduino Nano circuit simulation you can run free in your browser on Velxio, by shlerpsy5.

Components

Sketch code

#include <math.h>

const int encoderA = 2; // Interrupt pin
const int encoderB = 4; // Direction pin

volatile long pulseCount = 0;
int lastStateA;

void setup() {
   Serial.begin(9600);
   pinMode(encoderA, INPUT);
  pinMode(encoderB, INPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);

  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  
  lastStateA = digitalRead(encoderA);
  attachInterrupt(digitalPinToInterrupt(encoderA), countPulses, CHANGE);
}

void loop() {
  int xval = analogRead(A1);
  int yval = analogRead(A2);

  long nx = map(xval, 0, 1023, -511, 511);
  long ny = map(yval, 0, 1023, -511, 511);

  long joyval =  sqrt(sq(nx - 0) + sq(ny - 0));

  
  double direction = atan((0.0 - ny)/(0.0 - nx));
  direction = direction * (180.0 / PI);

  long speed = map(joyval, 0, 511, 0, 100);

  Serial.print("Pulses: ");
  Serial.println(pulseCount);

  if (direction > 0){
    
  }
  if (speed > 10){
  digitalWrite(9, HIGH);
  digitalWrite(6, HIGH);
  //delay(speed);
  //digitalWrite(8, LOW);
  //digitalWrite(6, LOW);
  //delay(speed);
  }else{
  digitalWrite(9, LOW);
  digitalWrite(6, LOW);
  }
}

void countPulses() {
  int stateA = digitalRead(encoderA);
  int stateB = digitalRead(encoderB);
  if (stateA != lastStateA) {
    if (stateB != stateA) {
      pulseCount++;
    } else {
      pulseCount--;
    }
  }
  lastStateA = stateA;

}

More projects by shlerpsy5