Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

int green1=8; int green2=7; int yellow1=10; int yellow2=6; int red1=4; int red2=

ID: 3836610 • Letter: I

Question

int green1=8;
int green2=7;
int yellow1=10;
int yellow2=6;
int red1=4;
int red2=5;
int blue=9;
int emergancy=A0;
const int button1=2;
int brightness= 250;
int fadeAmount= 5;
const int button2=3;
volatile int buttonState;
volatile int buttonState2;
volatile byte state = LOW;
void setup() {
// put your setup code here, to run once:
pinMode(green1, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(button1),crosswalk, CHANGE);
attachInterrupt(digitalPinToInterrupt(button2),night,CHANGE);
attachInterrupt(emergancy, IncrementPulseCount, RISING);
Serial.begin(9600);

}

void loop() {
int k=analogRead(emergancy);
Serial.println(k);
if(k>830){
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(green1,LOW);
digitalWrite(green2,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(yellow2,LOW);
Serial.println("Red light");

}
else {
Lights();}
//nightTime();
  
  
}
void Lights(){
//int k=digitalRead(emergancy);
// if(k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);
// }
// else{
  
digitalWrite(green1, HIGH);
digitalWrite(yellow1,LOW);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(2500);
// if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,HIGH);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,LOW);
digitalWrite(yellow2,LOW);
digitalWrite(green2,HIGH);
newdelay(2500);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,LOW);
digitalWrite(yellow2,HIGH);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);


  
}
void IncrementPulseCount(){
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
}


void crosswalk(){
buttonState = digitalRead(button1);

{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
}
int y=1;
while (y<2)
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if(interrupt_time-last_interrupt_time >200)
{digitalWrite(blue, HIGH);
newdelay(250);
digitalWrite(blue, LOW);
newdelay(250);
digitalWrite(blue,HIGH);
newdelay(250);
digitalWrite(blue,LOW);
newdelay(250);
digitalWrite(blue,HIGH);
newdelay(250);
digitalWrite(blue,LOW);
newdelay(100);
digitalWrite(blue,HIGH);
newdelay(100);
digitalWrite(blue,LOW);
newdelay(100);
}
last_interrupt_time = interrupt_time;
break;
}
}

void newdelay(int x){
for(int i = 0; i <= x; i++)
{
delayMicroseconds(1000);
}
}

void night()
{
buttonState2= digitalRead(button2);
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(green2,LOW);
int z=1;
while (z<2){
static unsigned long last_interrupt_time=0;
unsigned long interrupt_time=millis();
if(interrupt_time-last_interrupt_time>200)
{
digitalWrite(yellow1, HIGH);
newdelay(500);
digitalWrite(yellow1, LOW);
newdelay(500);
digitalWrite(yellow1, HIGH);
newdelay(500);
digitalWrite(yellow1, LOW);
newdelay(500);
digitalWrite(yellow1, HIGH);
newdelay(500);
digitalWrite(yellow1, LOW);
newdelay(500);
}
last_interrupt_time=interrupt_time;
break;
}
}

This is a code for a traffic light using an arduino with the C++ language and I need someone to explain practically every line of code. I would like for someone to explain every step in word and not just give me another piece of code. Im having a hard time understanding the code in its entirety so if anyone can help me that would be great. I

Explanation / Answer

The above code explanation goes below

We are assigning values to the red green and blue lights and making these lights to act at the specific levels like high low etc.

The assigned levels will be used in the blinking the lights in the specific situations like night time, crosswalk, emergency etc.

Please find the below code with the comments:

***************************

int green1=8; //Value of green1 is 8
int green2=7; //Value of green1 is 8
int yellow1=10;//Value of green1 is 8
int yellow2=6;//value of yellow2 is 6
int red1=4;//value of red1 is 4
int red2=5;//value of red2 is 5
int blue=9;//value of blue is 9
int emergancy=A0; //value of emergency is A0
const int button1=2;//value of button1 is 2
int brightness= 250;//brightness value id 250
int fadeAmount= 5; //fadeamount value id 5
const int button2=3;//state of button 2 is 3
volatile int buttonState;
volatile int buttonState2;
volatile byte state = LOW;//state of byte is low
void setup() {
//This method will attach the value of green,red and blue to the output
//pinmode will change according to the value
//attachinterrupt will make the signals to change as per the situations like crosswalk,night time and emergency time
// put your setup code here, to run once:
pinMode(green1, OUTPUT);//value is 8,output
pinMode(green2, OUTPUT);//value is 7,output
pinMode(yellow1, OUTPUT);//value is 10,output
pinMode(yellow2, OUTPUT);//value is 6,output and similarly it goes for red and blue
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(button1),crosswalk, CHANGE);
attachInterrupt(digitalPinToInterrupt(button2),night,CHANGE);
attachInterrupt(emergancy, IncrementPulseCount, RISING);
Serial.begin(9600);//Will trigger an event with a time duration of 9600 seconds
}
//This loop is meant for blinking the lights on a traffic signals with the emergency case
void loop() {
int k=analogRead(emergancy);//emergency case
Serial.println(k);
if(k>830){//if emergency value is more than 830 then digitally use red green and blue values to blink redlight
digitalWrite(red1,HIGH);//Value will be like 4,HIGH and simailarly it is taken the value for green and yellow with the respective values
digitalWrite(red2,HIGH);
digitalWrite(green1,LOW);
digitalWrite(green2,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(yellow2,LOW);
Serial.println("Red light");//After assiginning the values with the respective modes it will print redlight
}
else {
//At the else condition we can use RED GREEN AND BLUE VALUES AS PER THE differenrt value of K like emergency
Lights();
}

//nightTime();
  
  
}
void Lights(){
//int k=digitalRead(emergancy);
// if(k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);
// }
// else{
  
digitalWrite(green1, HIGH);
digitalWrite(yellow1,LOW);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(2500);
// if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,HIGH);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,LOW);
digitalWrite(yellow2,LOW);
digitalWrite(green2,HIGH);
newdelay(2500);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,LOW);
digitalWrite(yellow2,HIGH);
digitalWrite(green2,LOW);
newdelay(1000);
//if (k==1){
// digitalWrite(red1,HIGH);
// digitalWrite(red2,HIGH);
// digitalWrite(green1,LOW);
// digitalWrite(green2,LOW);
// digitalWrite(yellow1,LOW);
// digitalWrite(yellow2,LOW);
// delay(500);}
// else{
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
newdelay(1000);

  
}
//Usage of red green and blue value in the case of IncreementpulseCount(Its a situation basically)
void IncrementPulseCount(){
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
}
//Usage of red green and blue value in the case of IncreementpulseCount(Its a situation basically)
void crosswalk(){
buttonState = digitalRead(button1);//What will be the button state

{
//Again usage of RED GREEN AND BLUE with the assigned HIGH AND LOW LEVELS
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,HIGH);
digitalWrite(red2,HIGH);
digitalWrite(yellow2,LOW);
digitalWrite(green2,LOW);
}
//WE WILL BE CALCULATING THE INTERRUPT TIME BASES ON THE SPECIFIC VALUES
AND WE WILL HAVE A SPECFIC DELAY WITH EACH TRAFFIC SIGNAL
int y=1;
while (y<2)
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if(interrupt_time-last_interrupt_time >200)//INTERRUPT TIME MORE THAN 200
{digitalWrite(blue, HIGH);
newdelay(250);//DELAY OF 250SECONDS
digitalWrite(blue, LOW);
newdelay(250);
digitalWrite(blue,HIGH);
newdelay(250);
digitalWrite(blue,LOW);
newdelay(250);
digitalWrite(blue,HIGH);
newdelay(250);
digitalWrite(blue,LOW);
newdelay(100);//DELAY OF 100 SECONDS
digitalWrite(blue,HIGH);
newdelay(100);
digitalWrite(blue,LOW);
newdelay(100);
}
last_interrupt_time = interrupt_time;
break;
}
}
void newdelay(int x){
for(int i = 0; i <= x; i++)
{
delayMicroseconds(1000);
}
}
//THE BELOW MTHOD WILL BE THE CASE IN THE NIGHT TIME
void night()
{
//USAGE OF RED GREEN AND YELLOW VALUE AT THE SPECIFIC LEVELS
buttonState2= digitalRead(button2);
digitalWrite(green1, LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red1,LOW);
digitalWrite(red2,HIGH);
digitalWrite(green2,LOW);
int z=1;
while (z<2){ // THE INTERRUPTED TIME IS CALCULATED IN THE NIGHT TIME WHICH IS DONE IN THE BELOW METHOD
static unsigned long last_interrupt_time=0;
unsigned long interrupt_time=millis();
if(interrupt_time-last_interrupt_time>200)
{
digitalWrite(yellow1, HIGH);
newdelay(500);//DELAY OF 500 SECONDS
digitalWrite(yellow1, LOW);
newdelay(500);
digitalWrite(yellow1, HIGH);
newdelay(500);
digitalWrite(yellow1, LOW);
newdelay(500);//DELAY OF 500 SECONDS
digitalWrite(yellow1, HIGH);
newdelay(500);
digitalWrite(yellow1, LOW);
newdelay(500);
}
last_interrupt_time=interrupt_time;
break;
}
}

***********************