I need to correct the code Arduino

Thread Starter

hussein.alnofali

Joined Jun 2, 2024
1
I need to correct the code Arduino



Code:
#include <OneWire.h>
#include <SoftwareSerial.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2
SoftwareSerial mySerial(11, 10); // RX, TX
unsigned char data[4] = {};
float distance;


void setup(void) {
   Serial.begin(57600);
  mySerial.begin(9600);
}

void loop(void)
{
  sketch1();
}

void sketch1( void )
{
  static unsigned long startWait = 0;
  static const unsigned long waitMillis = 3000;
    if ( millis() - startWait >= waitMillis ) // now - start == elapsed time so far
  {
    
    do {
      for (int i = 0; i < 4; i++)
      {
        data[i] = mySerial.read();
      }
    } while (mySerial.read() == 0xff);
 
    mySerial.flush();
 
    if (data[0] == 0xff)
    {
      int sum;
      sum = (data[0] + data[1] + data[2]) & 0x00FF;
      if (sum == data[3])
      {
        distance = (data[1] << 8) + data[2];
        if (distance > 30)
        {
          Serial.print("distance=");
          Serial.print(distance / 10);
          Serial.println("cm");
        } else
        {
          Serial.println("Below the lower limit");
        }
      }
   }
   }
  {  float temperature = getTemp();
    Serial.println(temperature);
    int sensorValue = analogRead(A0);// read the input on analog pin 0:
    float voltage = sensorValue * (5.0 / 1024.0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
    Serial.println(voltage); // print out the value you read:

    startWait += waitMillis; // new start for next interval
  }
}


float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE); // Read Scratchpad

 
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  ds.reset_search();
 
  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
    
 //startWait += waitMillis; // new start for next interval
 
  return TemperatureSum;
}
 

Attachments

Ya’akov

Joined Jan 27, 2019
9,275
I need to correct the code Arduino
Welcome to AAC.

As you have been notified, your post was moved to the Homework Help forum. While it is always true that a ”question” like yours would be unlikely to get a favorable reception, it is doubly so here in the Homework Help forum where the only assistance you will get is guidance to follow your own path to a solution.

To get any help you will need to:

  1. Describe the problem, including any constraints placed on the solution.
  2. Describe your attempt at a solution, and how it is intended to work.
  3. Describe how your solution fails to operate as expected.
  4. Describe what you suspect is wrong.
  5. Describe what you have done to fix it.
  6. Describe the steps that you know you should do but haven’t done becasue you hope you will be given answer here without any work.

Remember, everyone here who helps is doing it out of the goodness of their hearts (or for some other reason, but it doesn’t involve payment, or an obligation to you). So be polite and put in the work to provide enough information to help you without requiring people to ask you 1000 questions.

You will almost certainly get help, and enough of it to solve your problem, if you treat getting help here as seriously as you (should) treat the assignment.

Again, welcome—and good luck.
 
Top