Ok, i've simplified my code and found that when it is running as i have posted then then led2 flickers like mad. however i can stop it from flickering by commenting out:
Serial.begin(9600);
or;
charge_state = digitalRead(charge_pin);
or;
strip.show();
or;
analogWrite(led1_pin,100);
so there seems to be some funny interaction between these processes. could anybody please help elucidate what might be happening now that i have posted my code? Cheers.
//neopixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
/////******PINS*****///////
//output pins
#define bc1_pin A1 //switch high to turn on the BC powering arduino, mp3 module, amp and neopixels
#define bc2_pin A0 //switch high to turn on servo BC
#define sink_pin A4 //switch low to sink current for voltage dividers and high to stop sinking(save current)
#define mos1_pin 10 // the audio Mosfet
#define mos2_pin 11 //servo mosfet
#define neo_pin 12
#define mute_pin 13
#define led1_pin 5
#define led2_pin 6
#define ir_pin 9
#define ldr_pin A2
#define battery_pin A5
#define charge_pin A6
#define bagSwitch_pin A7
//////*******VAIABLES*******////////
bool handSwitch_state = false;
long ir_val = 0;
int ldr_val;
int battery_val;
bool charge_state;
int bagSwitch_val;
int battery_voltage;
int led2_val;
//PIN TOGGLES
bool bc1_tog = true;
bool bc2_tog = false;
bool mos1_tog = true;
bool mos2_tog = false;
bool led2_tog = false;
bool led1_tog = false;
///****OBJECT INSTANTATIONS****////
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, neo_pin, NEO_GRB + NEO_KHZ800);//create a neopixel object
void setup() {
//Serial.begin(9600);
pinMode(bc1_pin, OUTPUT); digitalWrite(bc1_pin, HIGH); //switch on the main boost converter
pinMode(bc2_pin, OUTPUT); digitalWrite(bc2_pin, LOW); //switch off the servo boost converter
pinMode(sink_pin, OUTPUT); digitalWrite(sink_pin, LOW);
pinMode(mos1_pin, OUTPUT); digitalWrite(mos1_pin, HIGH); //keep the mosfets off for the time being (rather than floating)
pinMode(mos2_pin, OUTPUT); digitalWrite(mos2_pin, LOW);
pinMode(mute_pin, OUTPUT); digitalWrite(mute_pin, HIGH); //set low to mute the amp
pinMode(led1_pin, OUTPUT);
pinMode(led2_pin, OUTPUT);
pinMode(ldr_pin, INPUT);
pinMode(battery_pin, INPUT);
pinMode(charge_pin, INPUT);
pinMode(bagSwitch_pin, INPUT);
//neopixel begin
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setPixelColor(0, 100, 50, 10);
strip.setPixelColor(1, 20, 200, 30);
strip.setPixelColor(2, 200, 20, 100);
strip.show();
}
void loop() {
analogWrite(led1_pin, 50);
analogWrite(led2_pin, 100);
strip.setPixelColor(0, 100, 50, 100);
strip.setPixelColor(1, 0, 50, 20);
strip.setPixelColor(2, 200, 100, 50);
strip.show();
ldr_val = analogRead(ldr_pin);
//battery reading
battery_val = analogRead(battery_pin);
//charge status
charge_state = digitalRead(charge_pin);
//bagSwitch status
bagSwitch_val = analogRead(bagSwitch_pin);
battery_voltage = map(battery_val, 0, 1023, 0, 3284);
battery_voltage = map(battery_voltage, 0, 3284, 0, 4200);
}