laserturret

So I have to make an arduino project for school.
My project consist of a laser mounted on 2 servos. A joystick is used to control the servos and pusching a button fires the laser.
Then I use 3 lightsensor to change the color of 3 seperate leds. I made it so each lightsensor only activates one of the 3 leds.
When its dark in the room the led shines green and when you fire the laser onto it it changes to red.
In its current condition all 3 leds(RGB) work and all 3 lightsensors work.

the following part I tried to make but failed. What can i do to solve this?

Now I want to make it so only one of the leds and the corresponding lightsensor works at a given time.
When the laser has shot a lightsensor and the led turns green it schould stop working and change to one of the other leds and lightsensor(random).

This is my current code

#include <Servo.h> // library inladen
#include <Adafruit_NeoPixel.h>

#define sensor2 A4 // joystick y
#define sensor A5 // joystick x

#define servopin 5 // LR
#define servopin2 6 // OB

#define x A2 // lichtsensor 1
#define y A1 // lichtsensor 2
#define z A3 // lichtsensor 3

#define ledpin 9 // led voor x
#define ledpin1 10 // led voor y
#define ledpin2 11 // led voor z

Adafruit_NeoPixel pixel = Adafruit_NeoPixel(1, ledpin, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixel1 = Adafruit_NeoPixel(1, ledpin1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixel2 = Adafruit_NeoPixel(1, ledpin2, NEO_GRB + NEO_KHZ800);

const int druksensor = A0; // laser fire
const int Laser = 3;

int druksensorvalue = 0;

int sensorvaluex = 0;
int sensorvaluey = 0;
int sensorvaluez = 0;

int delaytime = 0;

long kleur = 0;
long kleur1 = 0;
long kleur2 = 0;

Servo servomotor; // servo definieren om servmotor te controlleren
Servo servomotor2; // servo definieren om servmotor2 te controlleren

int value = 0; // variabele om analoge waarde van pin A4 te lezen
int value2 = 0; // variabele om analoge waarde van pin A5 te lezen

void setup()
{

pinMode(Laser, OUTPUT); //zet laser als output van pin 3
pinMode(druksensor, INPUT); // zet druksensor als input van pin A0

servomotor.attach(servopin); // verbind servo met pin 9
servomotor.write(55); //kleinste hoek servomotor
delay(1000);
servomotor.write(125); //grootste hoek servomotor
delay(1000);

servomotor2.attach(servopin2); // verbind servo met pin 6
servomotor2.write(60); //kleinste hoek servomotor2
delay(1000);
servomotor2.write(120); //grootste hoek servomotor2
delay(1000);

pixel.begin(); // Start verbinding met de led
pixel1.begin(); // Start verbinding met de led1
pixel2.begin(); // Start verbinding met de led2

Serial.begin(9600); //Start verbinding met de pc

}

void loop()
{

servos();
laserknop();
lichtsnsrxled();
lichtsnsryled();
lichtsnsrzled();
}

void servos()
{
value = analogRead(sensor); // uitlezen waarde joystick (0, 1023)
value = map(value, 0, 1023, 125, 55); // schalen waarde joystick naar graden(0, 180)
servomotor.write(value); // plaatst de servomotor naar de waarde
delay(0); // wachttijd voor aannemen waarde

value2 = analogRead(sensor2); // uitlezen waarde joystick (0, 1023)
value2 = map(value2, 0, 1023, 60, 120); // schalen waarde joystick naar graden(0, 180)
servomotor2.write(value2); // plaatst de servomotor naar de waarde
delay(0); // wachttijd voor aannemen waarde
}

void laserknop()
{
druksensorvalue = digitalRead(druksensor);

if (druksensorvalue == HIGH) {
// laser ON:
digitalWrite(Laser, HIGH);
}

else {
// laser OFF:
digitalWrite(Laser, LOW);
}
}

void lichtsnsrxled()
{
sensorvaluex = analogRead(x); // uitlezen waarde lichtsensor x

sensorvaluex = map(sensorvaluex, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

kleur = pixel.Color(255-sensorvaluex,sensorvaluex,0);
pixel.setPixelColor(0, kleur); // Stuur de gewenste kleur door naar de eerste led
//pixel.setBrightness(sensorvaluex);
pixel.show(); // Stuur signaal naar de led dat alle leds de kleur mogen tonen
//De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

delay(0); // Wachtijd aansturen led (in milliseconden)
pixel.clear();
}

void lichtsnsryled()
{
sensorvaluey = analogRead(y); // uitlezen waarde lichtsensor y

sensorvaluey = map(sensorvaluey, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

kleur1 = pixel1.Color(255-sensorvaluey,sensorvaluey,0);
pixel1.setPixelColor(0, kleur1); // Stuur de gewenste kleur door naar de eerste led
//pixel1.setBrightness(sensorvaluey);
pixel1.show(); // Stuur signaal naar de led dat alle leds de kleur mogen tonen
//De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

delay(0); // Wachtijd aansturen led (in milliseconden)
pixel1.clear();
}

void lichtsnsrzled()
{
sensorvaluez = analogRead(z); // uitlezen waarde lichtsensor z

sensorvaluez = map(sensorvaluez, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

kleur2 = pixel2.Color(255-sensorvaluez,sensorvaluez,0);
pixel2.setPixelColor(0, kleur2); // Stuur de gewenste kleur door naar de eerste led
//pixel2.setBrightness(sensorvaluez);
pixel2.show(); // Stuur signaal naar de led dat alle leds de kleur mogen tonen
//De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

delay(0); // Wachtijd aansturen led (in milliseconden).
pixel2.clear();
}

Cool!

Now about those code tags, if you could put that code in code tags it would be wonderful.

It is difficult to follow code for a project where not connection diagram (schematic) is provided.

If I were coding this project I would start with simple building blocks and get each function working and then combine them into your full project.

(sigh)

#include <Servo.h> // library inladen
#include <Adafruit_NeoPixel.h>

#define sensor2 A4     // joystick y
#define sensor A5      // joystick x

#define servopin 5     // LR
#define servopin2 6    // OB

#define x A2           // lichtsensor 1
#define y A1           // lichtsensor 2
#define z A3           // lichtsensor 3

#define ledpin 9       // led voor x
#define ledpin1 10      // led voor y
#define ledpin2 11     // led voor z


Adafruit_NeoPixel pixel = Adafruit_NeoPixel(1, ledpin, NEO_GRB + NEO_KHZ800); 
Adafruit_NeoPixel pixel1 = Adafruit_NeoPixel(1, ledpin1, NEO_GRB + NEO_KHZ800); 
Adafruit_NeoPixel pixel2 = Adafruit_NeoPixel(1, ledpin2, NEO_GRB + NEO_KHZ800); 

const int druksensor = A0; // laser fire
const int Laser = 3;

int druksensorvalue = 0; 

int sensorvaluex = 0; 
int sensorvaluey = 0;
int sensorvaluez = 0;

int delaytime = 0;
 
long kleur = 0;
long kleur1 = 0;
long kleur2 = 0;


Servo servomotor;   // servo definieren om servmotor te controlleren
Servo servomotor2;  // servo definieren om servmotor2 te controlleren

int value = 0;      // variabele om analoge waarde van pin A4 te lezen
int value2 = 0;    // variabele om analoge waarde van pin A5 te lezen

void setup()
{
  
  pinMode(Laser, OUTPUT);         //zet laser als output van pin 3
  pinMode(druksensor, INPUT);     // zet druksensor als input van pin A0
  
  servomotor.attach(servopin);    // verbind servo met pin 9
  servomotor.write(55);           //kleinste hoek servomotor
  delay(1000);
  servomotor.write(125);          //grootste hoek servomotor
  delay(1000);

  servomotor2.attach(servopin2);  // verbind servo met pin 6
  servomotor2.write(60);          //kleinste hoek servomotor2
  delay(1000);
  servomotor2.write(120);         //grootste hoek servomotor2
  delay(1000);

  pixel.begin();                   // Start verbinding met de led 
  pixel1.begin();                  // Start verbinding met de led1
  pixel2.begin();                  // Start verbinding met de led2

  Serial.begin(9600);              //Start verbinding met de pc

}

void loop()
{

  servos();
  laserknop();
  lichtsnsrxled();
  lichtsnsryled();
  lichtsnsrzled();
}

void servos() 
{
  value = analogRead(sensor);                // uitlezen waarde joystick (0, 1023)
   value = map(value, 0, 1023, 125, 55);     // schalen waarde joystick naar graden(0, 180)
  servomotor.write(value);                   // plaatst de servomotor naar de waarde  
   delay(0);                                 // wachttijd voor aannemen waarde
  
  value2 = analogRead(sensor2);              // uitlezen waarde joystick (0, 1023)
    value2 = map(value2, 0, 1023, 60, 120);  // schalen waarde joystick naar graden(0, 180)
  servomotor2.write(value2);                 //  plaatst de servomotor naar de waarde   
   delay(0);                                 // wachttijd voor aannemen waarde
}


void laserknop() 
{
  druksensorvalue = digitalRead(druksensor);
    
     if (druksensorvalue == HIGH) {
      // laser ON:
    digitalWrite(Laser, HIGH);
  } 
  
    else {
     // laser OFF:
    digitalWrite(Laser, LOW);
  }
}


void lichtsnsrxled()
  {
 sensorvaluex = analogRead(x);                      // uitlezen waarde lichtsensor x
 
  sensorvaluex = map(sensorvaluex, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

    kleur = pixel.Color(255-sensorvaluex,sensorvaluex,0);
    pixel.setPixelColor(0, kleur);                  // Stuur de gewenste kleur door naar de eerste led
    //pixel.setBrightness(sensorvaluex);
    pixel.show();                                   // Stuur signaal naar de led dat alle leds de kleur mogen tonen
     //De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

  delay(0);                                         // Wachtijd aansturen led (in milliseconden)
  pixel.clear();
  }


void lichtsnsryled()
  {  
 sensorvaluey = analogRead(y);                      // uitlezen waarde lichtsensor y
 
  sensorvaluey = map(sensorvaluey, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

    kleur1 = pixel1.Color(255-sensorvaluey,sensorvaluey,0);
    pixel1.setPixelColor(0, kleur1);                 // Stuur de gewenste kleur door naar de eerste led
    //pixel1.setBrightness(sensorvaluey);
    pixel1.show();                                  // Stuur signaal naar de led dat alle leds de kleur mogen tonen
     //De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

  delay(0);                                         // Wachtijd aansturen led (in milliseconden)
  pixel1.clear();
  }


void lichtsnsrzled()
  {
 sensorvaluez = analogRead(z);                      // uitlezen waarde lichtsensor z
 
  sensorvaluez = map(sensorvaluez, 0, 1023, 0, 255);// schalen waarde sensor naar kleur(0, 255)

    kleur2 = pixel2.Color(255-sensorvaluez,sensorvaluez,0);
    pixel2.setPixelColor(0, kleur2);                 // Stuur de gewenste kleur door naar de eerste led
    //pixel2.setBrightness(sensorvaluez);
    pixel2.show();                                  // Stuur signaal naar de led dat alle leds de kleur mogen tonen
     //De led blijft deze kleur houden tot de kleur wordt aangepast en er opnieuw een .show() wordt aangevraagd

  delay(0);                                         // Wachtijd aansturen led (in milliseconden).
  pixel2.clear();
  }