int ledArray[] = {2,3,4};
boolean balanceSet = false;
int red = 0;
int green = 0;
int blue = 0;
float colourArray[] = {0,0,0};
float whiteArray[] = {0,0,0};
float blackArray[] = {0,0,0};
int avgRead;
void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
Serial.begin(9600);
}
void loop(){
checkBalance();
checkColour();
printColour();
}
void checkBalance(){
if(balanceSet == false){
setBalance();
}
}
void setBalance(){
delay(5000);
//scan the white sample.
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
whiteArray[i] = avgRead;
digitalWrite(ledArray[i],LOW);
delay(100);
}
//set black balance
delay(5000);
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
blackArray[i] = avgRead;
//blackArray[i] = analogRead(2);
digitalWrite(ledArray[i],LOW);
delay(100);
}
balanceSet = true;
delay(5000);
}
void checkColour(){
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
colourArray[i] = avgRead;
float greyDiff = whiteArray[i] - blackArray[i];
colourArray[i] = (colourArray[i] - blackArray[i])/(greyDiff)*255;
digitalWrite(ledArray[i],LOW);
delay(100);
}
}
void getReading(int times){
int reading;
int tally=0;
for(int i = 0;i < times;i++){
reading = analogRead(0);
tally = reading + tally;
delay(10);
}
//calculate the average and set it
avgRead = (tally)/times;
}
.
void printColour(){
Serial.print("");
Serial.println(int(colourArray[0]));
Serial.print("");
Serial.println(int(colourArray[1]));
Serial.print("");
Serial.println(int(colourArray[2]));
}
I want to add other option to control PIN13 from VB.net
but seems there is interfere every-time I try to add this option
This is how I edit my first code
int ledArray[] = {2,3,4};
boolean balanceSet = false;
int red = 0;
int green = 0;
int blue = 0;
float colourArray[] = {0,0,0};
float whiteArray[] = {0,0,0};
float blackArray[] = {0,0,0};
int avgRead;
void setup(){
pinMode(13,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
Serial.begin(9600);
}
void loop(){
int val;
if (Serial.available()){
delay(100);
while (Serial.available()>0){
val=Serial.read();
if(val=='^'){digitalWrite(13,HIGH);}
else if (val=='<'){digitalWrite(13,LOW);
{
checkBalance();
checkColour();
printColour();
}
}
}
}
}
void checkBalance(){
if(balanceSet == false){
setBalance();
}
}
void setBalance(){
delay(5000);
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
whiteArray[i] = avgRead;
digitalWrite(ledArray[i],LOW);
delay(100);
}
delay(5000);
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
blackArray[i] = avgRead;
//blackArray[i] = analogRead(2);
digitalWrite(ledArray[i],LOW);
delay(100);
}
balanceSet = true;
delay(5000);
}
void checkColour(){
for(int i = 0;i<=2;i++){
digitalWrite(ledArray[i],HIGH);
delay(100);
getReading(5);
colourArray[i] = avgRead;
float greyDiff = whiteArray[i] - blackArray[i];
colourArray[i] = (colourArray[i] - blackArray[i])/(greyDiff)*255;
digitalWrite(ledArray[i],LOW);
delay(100);
}
}
void getReading(int times){
int reading;
int tally=0;
for(int i = 0;i < times;i++){
reading = analogRead(0);
tally = reading + tally;
delay(10);
}
avgRead = (tally)/times;
}
void printColour(){
Serial.print("");
Serial.println(int(colourArray[0]));
Serial.print(" ");
Serial.println(int(colourArray[1]));
Serial.print("");
Serial.println(int(colourArray[2]));
}
Can someone help me to debug this code!
There is a button to control PIN13 inside my VB.net, work great but when I press it my whole code stop working until I press reset
I am sure my problem from "}" but where exactly I don't know!!