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();
}