lefthandsh8k
Created February 14, 2020

Bugboy!!!

A little device that frantically moves when objects move closer to it.

IntermediateShowcase (no instructions)Over 1 day1
Bugboy!!!

Things used in this project

Hardware components

Arduino UNO & Genuino UNO
Arduino UNO & Genuino UNO
×1
Photo resistor
Photo resistor
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×6
LED Strip, NeoPixel Digital RGB
LED Strip, NeoPixel Digital RGB
×38

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Code

bugboy

Arduino
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif */
#include <Servo.h>
// These constants won't change:
const int sensorPin = A0;    // pin that the sensor is attached to
const int ledPin = 13;        // pin that the LED is attached to



// variables:
int sensorValue = 0;         // the sensor value
int sensorMin = 1023;        // minimum sensor value
int sensorMax = 0;           // maximum sensor value
Servo head;
Servo rightArm;
Servo leftArm;
Servo rightLeg;
Servo leftLeg;
Servo pincer;

//**************************neopixel stuff*****************************************************************/
// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN            6
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      38

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 500; // delay for half a second
void setup() {
  
    // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  /**************************** End of trinket special code***********************************************/

 
  
   head.attach(3);
   rightArm.attach(5);
   leftArm.attach(7);
   pincer.attach(8);
   rightLeg.attach(10);
   leftLeg.attach(11);
  // turn on LED to signal the start of the calibration period:
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);

  // calibrate during the first five seconds 
  while (millis() < 5000) {
    sensorValue = analogRead(sensorPin);

    // record the maximum sensor value
    if (sensorValue > sensorMax) {
      sensorMax = sensorValue;
    }

    // record the minimum sensor value
    if (sensorValue < sensorMin) {
      sensorMin = sensorValue;
    }
     pixels.begin(); // This initializes the NeoPixel library.
   // Serial.begin(9600);
  }

  // signal the end of the calibration period
  digitalWrite(13, LOW);
}

void loop() {
  
  
  // read the sensor:
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  // apply the calibration to the sensor reading
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  // in case the sensor value is outside the range seen during calibration
  sensorValue = constrain(sensorValue, 0, 255);

  // fade the LED using the calibrated value:
  analogWrite(ledPin, sensorValue);
  head.write(sensorValue);
   rightArm.write(sensorValue);
    leftArm.write(sensorValue);
     rightLeg.write(sensorValue);
      leftLeg.write(sensorValue);
      pincer.write(sensorValue);
    // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS;i++){

    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(255,255,255)); // Bright white color.

    pixels.show(); // This sends the updated pixel color to the hardware.

    //delay(delayval); // Delay for a period of time (in milliseconds).

  }
}

Credits

lefthandsh8k

lefthandsh8k

3 projects • 1 follower
Modeler / prototyping. Sometimes I make monsters for movies. I just love robots and try to inject personality into my projects.

Comments