Currently, I am working on a project in which I use Arduino Mega 2560(Clone) to regulate traffic lights in a four road junction. In this, I use Matlab to give time for which the green light should be active into Arduino.
I tried using below code, but the values that I send are not being read by Arduino. I tried this by using Arduino USB port(Serial Communication).
Matlab Code:
clc;
close all;
clear all;
Ton=[26,36,25,78];
z=4;
n=4;
b=serial('COM1','BaudRate',9600);
fopen(b);
for i=1:n
fprintf(b,'%s',char(Ton(i)));
end
fprintf(b,'%s',char(Z));
fclose(b);
Arduino Code:
#include <LiquidCrystal.h>
int green[] = {0,1,2,3},i,Ton[4],Pfac,L,P;
int red[] = {4,5,6,7};
LiquidCrystal lcd(14,15,18,19,20,21);
void setup() {
// put your setup code here, to run once:
for (i=0;i<4;i++){
pinMode(green*,OUTPUT);*
pinMode(red*,OUTPUT);*
}
for (i=0;i<4;i++){
_ digitalWrite(green*,LOW);
digitalWrite(red,LOW);
}
lcd.begin(16,2);
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0){
Ton[0]=Serial.read();
Ton[1]=Serial.read();
Ton[2]=Serial.read();
Ton[3]=Serial.read();
Pfac=Serial.read();
}
digitalWrite(green[0],HIGH);
digitalWrite(red[1],HIGH);
digitalWrite(red[2],HIGH);
digitalWrite(red[3],HIGH);*_
L=Ton[0];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[0],LOW);
* digitalWrite(red[1],LOW);*
* digitalWrite(red[2],LOW);*
* digitalWrite(red[3],LOW);*
* if (Pfac!=0){*
* interupt(Pfac);*
* }*
* if (Serial.available()>0){*
* Pfac=Serial.read();*
* }*
* digitalWrite(green[1],HIGH);*
* digitalWrite(red[2],HIGH);*
* digitalWrite(red[3],HIGH);*
* digitalWrite(red[0],HIGH);*
L=Ton[1];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[1],LOW);
* digitalWrite(red[2],LOW);*
* digitalWrite(red[3],LOW);*
* digitalWrite(red[0],LOW);*
* if (Pfac!=0){*
* interupt(Pfac);*
* }*
* if (Serial.available()>0){*
* Pfac=Serial.read();*
* }*
* digitalWrite(green[2],HIGH);*
* digitalWrite(red[3],HIGH);*
* digitalWrite(red[0],HIGH);*
* digitalWrite(red[1],HIGH);*
L=Ton[2];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[2],LOW);
* digitalWrite(red[3],LOW);*
* digitalWrite(red[0],LOW);*
* digitalWrite(red[1],LOW);*
* if (Pfac!=0){*
* interupt(Pfac);*
* }*
* if (Serial.available()>0){*
* Pfac=Serial.read();*
* }*
* digitalWrite(green[3],HIGH);*
* digitalWrite(red[0],HIGH);*
* digitalWrite(red[1],HIGH);*
* digitalWrite(red[2],HIGH);*
L=Ton[3];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[3],LOW);
* digitalWrite(red[0],LOW);*
* digitalWrite(red[1],LOW);*
* digitalWrite(red[2],LOW);*
* if (Pfac!=0){*
* interupt(Pfac);*
* }*
* if (Serial.available()>0){*
* Pfac=Serial.read();*
* }*
* }*
int interupt(int Pfac){
* if (Pfac==1){*
* digitalWrite(green[0],HIGH);*
* digitalWrite(red[1],HIGH);*
* digitalWrite(red[2],HIGH);*
* digitalWrite(red[3],HIGH);*
L=Ton[0];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[0],LOW);
* digitalWrite(red[1],LOW);*
* digitalWrite(red[2],LOW);*
* digitalWrite(red[3],LOW);*
* }*
* if (Pfac==2){*
* digitalWrite(green[1],HIGH);*
* digitalWrite(red[2],HIGH);*
* digitalWrite(red[3],HIGH);*
* digitalWrite(red[0],HIGH);*
L=Ton[1];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[1],LOW);
* digitalWrite(red[2],LOW);*
* digitalWrite(red[3],LOW);*
* digitalWrite(red[0],LOW);*
* }*
* if (Pfac==3){*
* digitalWrite(green[2],HIGH);*
* digitalWrite(red[3],HIGH);*
* digitalWrite(red[0],HIGH);*
* digitalWrite(red[1],HIGH);*
L=Ton[2];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[2],LOW);
* digitalWrite(red[3],LOW);*
* digitalWrite(red[0],LOW);*
* digitalWrite(red[1],LOW);*
* }*
* if (Pfac==4){*
* digitalWrite(green[3],HIGH);*
* digitalWrite(red[0],HIGH);*
* digitalWrite(red[1],HIGH);*
* digitalWrite(red[2],HIGH);*
L=Ton[3];
for (i=L;i>=0;i--){
* lcd.clear();*
lcd.print(i);
delay(1000);
}
digitalWrite(green[3],LOW);
* digitalWrite(red[0],LOW);*
* digitalWrite(red[1],LOW);*
* digitalWrite(red[2],LOW);*
* }*
* Pfac=0;*
}
I want to know where I did wrong, can anyone help me out...