-SOLVED- Weird problem with serial monitor reading

Hi, this is my first time posting, I'm having a weird problem I can't seem to resolve with a breathalyzer I'm putting together.

I just assembled an arduino with an MQ3 ethanol sensor, the serial monitor seems to get the first 2 readings ok and then it just jumps to the number 769 and gets stuck, this obviously breaks everything as the thing relies on this value for everything else.

I'm currently clueless as to what is going on, it was working ok earlier today.

I already know my setup is clumbsy and stupid but this is the first time I'm trying anything with arduino and with electronics in general.

The MQ3 sensor is connected as following:

AO -> A0
DO -> 8
GND -> GND on arduino board
VCC -> 3.3V on arduino board

CODE:

int mq3_analogPin = A0; // connected to the output pin of MQ3
int ledg = 4;
int ledr= 3;
const int buzzer = 7;
void setup(){
  
Serial.begin(9600); // open serial at 9600 bps
pinMode(ledg, OUTPUT);
pinMode(ledr, OUTPUT);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
pinMode(buzzer, OUTPUT);
}


void loop()
{
delay(1000);// give ample warmup time for readings to stabilize

int mq3_value = analogRead(mq3_analogPin);
Serial.println(mq3_value);

delay(500); //Just here to slow down the output.

Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(500);
Serial.println(mq3_value);
mq3_value = analogRead;
tone(buzzer, 1000);
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(ledg, LOW);
digitalWrite(ledr, LOW);
delay(2000);



if (analogRead < 170)
{
  digitalWrite(ledg, HIGH);
  digitalWrite(ledr, LOW);
  tone(buzzer, 1000);
  delay(3000);
  }
  else if (analogRead > 220)
  {
    tone(buzzer, 200);
    digitalWrite(ledg, LOW);
    digitalWrite(ledr, HIGH);
    delay(3000);
    }
    else 
    {
      digitalWrite(ledr, LOW);
      digitalWrite(ledg, LOW);
      delay(3000);
      }
}

Please let me know if you need any other information.

THanks! really.

This is the correct way to use analogRead:

Robert2000:

int mq3_value = analogRead(mq3_analogPin);

This is not:

Robert2000:

mq3_value = analogRead;

See the difference?

Perfect!, that fixed the value on the serial monitor which is now correct.

Disregard that, I'm still getting the red light ALWAYS, even if the reading is lower than 170 ( It's supposed to do green light when the value is <=170 and red light when it's >=220) Any ideas on what's going on?

THanks!

It's caused by the same type of incorrect usage of analogRead:

Robert2000:

if (analogRead < 170)

{
  digitalWrite(ledg, HIGH);
  digitalWrite(ledr, LOW);
  tone(buzzer, 1000);
  delay(3000);
  }
  else if (analogRead > 220)

Just PERFECT! I fixed it with the correct way you proposed and it's working like a charm now, thanks for the super fast reply I was clueless.

Thanks!

You're welcome. I'm glad to hear it's working now. Enjoy!
Per