Skip to content

Instantly share code, notes, and snippets.

View battis's full-sized avatar

Seth Battis battis

View GitHub Profile
package org.firstinspires.ftc.teamcode.autonomous;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
@Autonomous
public class SimpleAutonomous extends LinearOpMode {
@Override
@battis
battis / Myoware_Servo.ino
Created May 8, 2020 15:49
Minimal Myoware to Servo connection
#include <Servo.h>
const int SENSOR_PIN = 0;
const int SERVO_PIN = 10;
Servo servo;
void setup() {
servo.attach(SERVO_PIN);
}
@battis
battis / trajectorial-agreement.ino
Last active May 5, 2020 18:04
Moving servo only if there is agreement about current direction across n previous readings
const int SENSOR_PIN = 0;
const int CYCLE_DURATION = 250;
int average = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
@battis
battis / README.md
Last active December 2, 2021 06:48
Java initialization order of operations

Initializing fields in Java

There are four ways that a field can be initialized in Java. These are, in order:

  1. As part of a static initializer block
  2. As part of an instance initializer block
  3. Default value in declaration.
  4. In the constructor.

Static initializer block

const int SENSOR_PIN = 0;
const int CYCLE_DURATION = 250;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int reading = analogRead(SENSOR_PIN);
@battis
battis / stepper_control.ino
Last active April 3, 2020 15:35
Using Arduino Stepper library to control 28BYJ-48 stepper motor with L293D H-bridge
/*
* Example code for controlling a 28BYJ-48 stepper motor through an L293D H-Bridge
*/
// Include the Arduino Stepper.h library
#include <Stepper.h>
/*
* Motor outputs from the 28BYj-48:
* 1 - blue ------|
@battis
battis / EncodedTankDrive.java
Created April 2, 2020 18:58
Enable encoder-supplemented consistency in Tank Drive
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
@TeleOp
public class EncodedTankDrive extends OpMode {
@battis
battis / MyFirstOpMode.java
Created March 27, 2020 15:19
A basic tank drive OpMode
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
@TeleOp
public class MyFirstOpMode extends OpMode {
const int ENABLE_A = 4;
const int ENABLE_B = 5;
const int SPEED = 6;
void setup() {
pinMode(ENABLE_A, OUTPUT);
pinMode(ENABLE_B, OUTPUT);
pinMode(SPEED, OUTPUT);
}
@battis
battis / DoublyIndexedList.java
Created March 23, 2020 17:36
Rethinking Levels as a doubly-indexed list
import java.util.ArrayList;
import java.util.List;
public class DoublyIndexedList {
private Sprite[][] level;
/* ... */
public void set(int x, int y, Sprite sprite) {
level[x][y] = sprite;