70. AT Command System via UART

Back To All Submissions
Previous Submission
Next Submission

Code

#define led 3
#define pot A0

unsigned long current_time = 0;
String command;

String print_time(unsigned long time){
  time = time / 1000;
  long SS = time % 60;
  long MM = time / 60;
  long HH = MM / 60;
  MM =MM % 60;
  return (String(HH) + ":" + String(MM) + ":" + String(SS));
}

int adcval = 0;
float voltage = 0.00;

void setup(){
  Serial.begin(115200);
  pinMode(A0, INPUT);
  pinMode(led, OUTPUT);
}

void loop(){
  while(Serial.available() == 0);
  command = Serial.readString();
  command.trim();

  if(command == "AT")
    Serial.println("OK");

  else if(command == "AT+LED=ON"){
    digitalWrite(led, HIGH);
    Serial.println("+LED: ON ");
  }

  else if(command == "AT+LED=OFF"){
    digitalWrite(led, LOW);
    Serial.println("+LED: LOW ");
  }
  
  else if(command == "AT+SYS_ON_TIME"){
    current_time = millis();
    Serial.println("+SYS_ON_TIME : " + print_time(current_time));
  }

  else if(command == "AT+LED_STATUS?"){
    if(digitalRead(led))
      Serial.println("+LED_STATUS : ON");
    else
      Serial.println("+LED_STATUS : OFF");
  }

  else if(command == "AT+ADC_VALUE?"){
    adcval = analogRead(pot);
    Serial.println("+ADC_VALUE: " + String(adcval));
  }

  else if(command == "AT+ADC_VOLTAGE?"){
    voltage = analogRead(pot) * 5.00 / 1024.00;
    Serial.println("+ADC_VOLTAGE: " + String(voltage));
  }

  else
    Serial.println("INVALID COMMAND, TRY AGAIN");

  delay(250);
}

Photo of Output

Screenshot of Serial Terminal 

Was this helpful?
Upvote
Downvote