Go Down

Topic: how to read analog value continuous with Serial.read() (Read 2133 times) previous topic - next topic

Apr 06, 2013, 09:43 am Last Edit: Apr 06, 2013, 11:56 am by mickeleckorn Reason: 1
from this sketch i can read analog value each case for once value i think Serial.read read the oldest byte but i want to read from present byte like without its how can i setting this ?  

Code: [Select]

const int ledPin = 13;
void setup() {

 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
 pinMode(9, OUTPUT);
}


void loop() {
  if (Serial.available() > 0) {
 int sensorValue1 = analogRead(A0);
 int sensorValue2 = analogRead(A1);
 int sensorValue3 = analogRead(A2);
 int light_sensitivity = 500;
 int incomingByte;
 
   // read the oldest byte in the serial buffer:
   incomingByte = Serial.read();
 
 switch (incomingByte) {
   
   case 'a':
      Serial.println(sensorValue1);
      break;
   case 'b':
      Serial.println(sensorValue2);
      break;
   case 'c':
      Serial.println(sensorValue3);
      break;
   case 'H':
      digitalWrite(ledPin, HIGH);
      break;
   case 'L':
      digitalWrite(ledPin, LOW);
      break;
 }
   if (sensorValue3 < light_sensitivity)
     {
       digitalWrite(9, HIGH);
     }
    else
     {
       digitalWrite(9, LOW);
       
     }
     delay(300);
   }
}  

Robin2

From a quick look at your program it seems to be arranged to read properly so I don't understand your question.

What do you mean by the "oldest" and "present" byte?

With your program there will only be a tiny delay between the reading and interpreting and I don't see how that can be avoided.

Perhaps you could explain what you would like to happen.


from this program , e.g. when i type 'a' and send in serial monitor this monitoring one value (not continuous) and i try to use for , while but its monitoring one value repeat not change when i change the value (from Potentiometer)

i want its to read value continuous not one value .


Nick Gammon


from this sketch i can read analog value each case for once value i think Serial.read read the oldest byte but i want to read from present byte like without its how can i setting this ? 


How to use this forum
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Robin2

I suspect English is not your first language and I am doing my best to understand your question - but I can't.

As it is written the program will send back the value from a single read whenever you press the appropriate letter. And this will be the "present" value of that sensor. If you want it to send back several values you will have to change the program so that there is a loop of reads associated with each key press. If you want it to send back a continuous stream of values you will have to have a program on your PC to use the data. If you explain how you intend to use the data it may help to understand  what you are trying to do.

However I'm not even sure that that's what you want because you seem to be saying that even with a single read it is not showing different values when you move the potentiometer. If that is the problem there may be several reasons including possible wiring errors. You will need to give us a diagram of your circuit.

...R




from this program , e.g. when i type 'a' and send in serial monitor this monitoring one value (not continuous) and i try to use for , while but its monitoring one value repeat not change when i change the value (from Potentiometer)

i want its to read value continuous not one value .



Thanks Robin.
Sorry for bad english

when i don't read from serial.read this program work well (use analogRead)

i think this problem is in serial.read can receive only one data , when i rotate the potentiometer and send 'a' again value is changed but i want to send 'a' once and program monitoring continuous likes to use analogRead.

UKHeliBob

As it is currently written your program will only read the analogue inputs whilst there is something in the serial buffer.
Is that how you want it to work ?
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

i want serial monitor to monitoring continuous like a loop , not single value.

Grumpy_Mike

Code: [Select]

case 'a':
     while(Serial.available() != 0);{
       Serial.println(sensorValue1);
  }
       break;

Thanks , Grumpy_Mike

but this not work ,program still monitoring single value.

UKHeliBob


i want serial monitor to monitoring continuous like a loop , not single value.

Can you please describe what the program should do ?  That might help understand exactly what you mean.
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

Nick Gammon

Read this before posting a programming question

Please edit your post, select the code, and put it between [code] ... [/code] tags.

You can do that by hitting the # button above the posting area.


http://www.gammon.com.au/serial
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

sorry again for my bad english skill

i want my program to receive analog value from analog pin A0 A1 A2 selected by type and send letters in serial monitor.

now i use switch case for my program , but this serial monitor display single value, i want this to monitoring value continuous like in a loop.




Grumpy_Mike

Why do you keep your requirements secret?
Reply #8 showed you how why are you ignoring it?

Quote
sorry again for my bad english skill

They are probably not good enough for you to understand any answer.

michinyon

The problem with your program,  is that it is only going to read the analog inputs,   when there is a character from
you arriving at the Arduino's serial input.

So unless you send characters to the arduino very often,  you won't get a reading very often.


Go Up