Last active
April 30, 2016 18:20
-
-
Save jeffcrouse/a00b36676a6788a11af14f9fac557c77 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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