Problems Debugging code HELP

Hey

Have written this code taking parts from adafruits hat vu meter hat code.
With add in’s on servo, ultrasonic distance finder, LDR and switch.

I have the codes working fine separately, just when I try and hack the two chunks together it gives funny results with the servo inter juttering with the neopixels

Can any one help?

thanks for your time :slight_smile:

here’s how I’ve hacked them together.

TOGETHER

int buttonpin = 12;
int lightPin = 1;
int ledpin = 9;
int ledpin2 = 13;
int state;

#include <Servo.h>
int trigPin = 10;
int echoPin = 11;
int mini = 20;
int maxi = 200;
int pos = 0;
Servo myservo;

#include <Adafruit_NeoPixel.h>

#define N_PIXELS 15 // Number of pixels in strand
#define MIC_PIN A0 // Microphone is attached to this analog pin
#define LED_PIN 6 // NeoPixel LED strand is connected to this pin
#define DC_OFFSET 0 // DC offset in mic signal - if unusure, leave 0
#define NOISE 20 // Noise/hum/interference in mic signal
#define SAMPLES 60 // Length of buffer for dynamic level adjustment
#define TOP (N_PIXELS + 2) // Allow dot to go slightly off scale
#define PEAK_FALL 4 // Rate of peak falling dot

byte
peak = 0, // Used for falling dot
dotCount = 0, // Frame counter for delaying dot-falling speed
volCount = 0; // Frame counter for storing past volume data
int
vol[SAMPLES], // Collection of prior volume samples
lvl = 10, // Current “dampened” audio level
minLvlAvg = 0, // For dynamic adjustment of graph low & high
maxLvlAvg = 512;
Adafruit_NeoPixel
strip = Adafruit_NeoPixel(N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {

pinMode(buttonpin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(ledpin2, OUTPUT);
Serial.begin(9600);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myservo.attach(5);

memset(vol, 0, sizeof(vol));
strip.begin();
}

void loop()
{
state = digitalRead(buttonpin);
int lightLevel = analogRead(lightPin);
if (state == HIGH)
{
digitalWrite(ledpin2,HIGH);
}
else
{
digitalWrite(ledpin2,LOW);
}
if ((state == HIGH)&&( lightLevel <= 550))
{
digitalWrite(ledpin,HIGH);
}
else
{
digitalWrite(ledpin,LOW);
}

//part 2

long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
// Serial.print(distance);
// Serial.println(" cm");
if ((state == HIGH) && (distance >= mini) && ( distance <= maxi))
{
Serial.println(“open”);
myservo.write(90);
delay(1000);
}
else if ((distance < mini)||(distance > maxi))
{
Serial.println(“close”);
myservo.write(0);
delay(1000);
}

uint8_t i;
uint16_t minLvl, maxLvl;
int n, height;

n = analogRead(MIC_PIN); // Raw reading from mic
n = abs(n - 180 - DC_OFFSET); // Center on zero
n = (n <= NOISE) ? 0 : (n - NOISE); // Remove noise/hum
lvl = ((lvl * 7) + n) >> 3; // “Dampened” reading (else looks twitchy)

// Calculate bar height based on dynamic min/max levels (fixed point):
height = TOP * (lvl - minLvlAvg) / (long)(maxLvlAvg - minLvlAvg);

if(height < 0L) height = 0; // Clip output
else if(height > TOP) height = TOP;
if(height > peak) peak = height; // Keep ‘peak’ dot at top

// Color pixels based on rainbow gradient
for(i=0; i<N_PIXELS; i++) {
if(i >= height) strip.setPixelColor(i, 0, 0, 0);
else strip.setPixelColor(i,Wheel(map(i,0,strip.numPixels()-1,30,150)));

}

// Draw peak dot
if(peak > 0 && peak <= N_PIXELS-1) strip.setPixelColor(peak,Wheel(map(peak,0,strip.numPixels()-1,30,150)));

strip.show(); // Update strip

// Every few frames, make the peak pixel drop by 1:

if(++dotCount >= PEAK_FALL) { //fall rate

if(peak > 0) peak–;
dotCount = 0;
}

vol[volCount] = n; // Save sample for dynamic leveling
if(++volCount >= SAMPLES) volCount = 0; // Advance/rollover sample counter

// Get volume range of prior frames
minLvl = maxLvl = vol[0];
for(i=1; i<SAMPLES; i++) {
if(vol < minLvl) minLvl = vol*;*
else if(vol > maxLvl) maxLvl = vol*;*
}
// minLvl and maxLvl indicate the volume range over prior frames, used
// for vertically scaling the output graph (so it looks interesting
// regardless of volume level). If they’re too close together though
// (e.g. at very low volume levels) the graph becomes super coarse
// and ‘jumpy’…so keep some minimum distance between them (this
// also lets the graph go to zero when no sound is playing):
if((maxLvl - minLvl) < TOP) maxLvl = minLvl + TOP;
minLvlAvg = (minLvlAvg * 63 + minLvl) >> 6; // Dampen min/max levels
maxLvlAvg = (maxLvlAvg * 63 + maxLvl) >> 6; // (fake rolling average)
}
// Input a value 0 to 255 to get a color value.
// The colors are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
_ return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
* WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}*_

Welcome to the Forum. Please read Nick Gammon's two posts at the top of this Forum for guidelines on how to post here, especially the use of code tags when presenting a listing. Also, use Ctrl-T on the source code in the IDE before you post. It will format the code in a standard manner which makes it easier for us to read.