Skip to content

Instantly share code, notes, and snippets.

@jeffcrouse
Last active April 30, 2016 18:20
Show Gist options
  • Select an option

  • Save jeffcrouse/a00b36676a6788a11af14f9fac557c77 to your computer and use it in GitHub Desktop.

Select an option

Save jeffcrouse/a00b36676a6788a11af14f9fac557c77 to your computer and use it in GitHub Desktop.
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <Adafruit_NeoPixel.h>
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
bool forward = true;
#define PIN 8
#define NUMPIXELS 8
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define MAX_FILL 400
void setup(void) {
Serial.begin(115200);
pixels.begin(); // This initializes the NeoPixel library.
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
// Set the speed to start, from 0 (off) to 255 (max speed)
myMotor->setSpeed(0);
myMotor->run(FORWARD);
// turn on motor
myMotor->run(RELEASE);
start_motor();
}
void loop(void) {
float level0 = analogRead(A0);
float level1 = analogRead(A1);
int color0 = map(level0, 0, MAX_FILL, 0, 100);
int color1 = map(level1, 0, MAX_FILL, 0, 100);
for (int i = 5; i < 8; i++) {
pixels.setPixelColor(i, pixels.Color(color0, color0, color0));
}
for (int i = 0; i < 3; i++) {
pixels.setPixelColor(i, pixels.Color(color1, color1, color1));
}
if (level0 > MAX_FILL && !forward) {
stop_motor();
myMotor->run(FORWARD);
start_motor();
forward = true;
}
if (level1 > MAX_FILL && forward) {
stop_motor();
myMotor->run(BACKWARD);
start_motor();
forward = false;
}
if (forward) {
myMotor->run(FORWARD);
pixels.setPixelColor(3, pixels.Color(0, 255, 0));
pixels.setPixelColor(4, pixels.Color(0, 0, 0));
} else {
myMotor->run(BACKWARD);
pixels.setPixelColor(3, pixels.Color(0, 0, 0));
pixels.setPixelColor(4, pixels.Color(0, 255, 0));
}
Serial.print("A0 ");
Serial.print(level0);
Serial.print(" | A1 ");
Serial.print(level1);
if (forward) {
Serial.println(" | Pumping forward from 0 to 1");
} else {
Serial.println(" | Pumping backward from 1 to 0");
}
pixels.show();
delay(100);
}
void stop_motor() {
for (int i = 255; i != 0; i--) {
myMotor->setSpeed(i);
delay(10);
}
}
void start_motor() {
for (int i = 0; i < 255; i++) {
myMotor->setSpeed(i);
delay(10);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment