#include <Servo.h>
#include <LedControl.h> // https://github.com/wayoda/LedControl
Servo motor1;
Servo motor2;
int number_of_people;
bool friend_in_sight;
int crowd_threshold = 50;
int size = 4;
int length = 8;
// DIN, CLK, CS
LedControl LedControlRed(11, 13, 10, size);
LedControl LedControlGreen(12, 13, 10, size);
LedControl LedControlBlue(8, 13, 10, size);
void setup() {
// put your setup code here, to run once:
pinMode(1, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(7, INPUT_PULLUP);
Serial.begin(115200);
motor1.attach(5);
motor2.attach(6);
motor1.write(90);
motor2.write(90);
}
void loop() {
// put your main code here, to run repeatedly:
int slidervalue = analogRead(A1);
int mappedvalue = map(slidervalue, 0, 1023, 0, 100);
number_of_people = mappedvalue;
friend_in_sight = digitalRead(7);
if (friend_in_sight){
if (digitalRead(1) == HIGH){
motor1.write(90);
motor2.write(90);
}
digitalWrite(2, HIGH);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 1;
LedControlBlue.setLed(address, row, column, state);
}
}
}
delay(300);
motor1.write(0);
motor2.write(180);
digitalWrite(2, LOW);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 0;
LedControlBlue.setLed(address, row, column, state);
}
}
}
delay(300);
}
else
{
if (number_of_people >= crowd_threshold)
{
motor1.write(90);
motor2.write(90);
digitalWrite(4, HIGH);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 1;
LedControlRed.setLed(address, row, column, state);
}
}
}
delay(300);
digitalWrite(4, LOW);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 0;
LedControlRed.setLed(address, row, column, state);
}
}
}
delay(300);
}
else if (number_of_people < crowd_threshold)
{
motor1.write(0);
motor2.write(180);
digitalWrite(3, HIGH);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 1;
LedControlGreen.setLed(address, row, column, state);
}
}
}
delay(300);
digitalWrite(3, LOW);
for (int part = 0; part < size; part++){
for (int x = 0; x < length; x++){
for (int y = 0; y < length; y++){
int address = part;
int row = y;
int column = x;
int state = 0;
LedControlGreen.setLed(address, row, column, state);
}
}
}
delay(300);
}
}
}