Truyền nhận dữ liệu từ cảm biến thông qua Module thu phát RF UART C1101

Thảo luận trong 'Cảm biến - Cơ cấu chấp hành'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. Thanhjjjjj

    Thanhjjjjj Học sinh phổ thông

    Tham gia ngày:
    3/11/17
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Như tiêu đề, em đã lập trình code TX và RX cho 2 module nhưng số liệu truyền và nhận hoàn toàn khác nhau. Cảm biến pH đọc giá trị 410 và truyền đi nhưng khi nhận thì em nhận được -3339. Anh/ chị có thể giúp em khắc phục tình trạng này . Phía dưới là code TX- RX mà em đã đã lập trình. Cảm ơn anh/chị !

    Code truyền dữ liệu :

    //#include <LiquidCrystal.h>
    //LiquidCrystal lcd(9, 8, 4, 5, 6, 7);

    #define Offset 0
    #define SensorPin 0 //pH meter Analog output to Arduino Analog Input 0


    unsigned long int avgValue,avgADC; //Store the average value of the sensor feedback
    int sensornhiet =5;
    int led = 2;
    int led1 = 10;

    int buf[10],buf1[10],temp ;


    void setup()
    {
    pinMode(led,OUTPUT); /// DK DONG NGAT 4066
    pinMode(led1,OUTPUT); /// chan mode module RF
    digitalWrite(led1,HIGH);


    Serial.begin(9600);

    //lcd.begin(16, 2); // Dùng LCD 16, 2
    //lcd.print ( " Do pH " );
    //delay(1000);
    }
    void loop()
    {

    digitalWrite(led,HIGH);

    for(int i =0 ; i<300; i++)///// i =1000 là 3 phút
    {

    for(int i=0;i<10;i++) //Get 10 sample value from the sensor for smooth the value
    {
    buf=analogRead(SensorPin); ///////////// Ph /////////////
    delay(10);
    }

    for(int k=0;k<10;k++) //Get 10 sample value from the sensor for smooth the value
    {
    buf1[k]=analogRead(sensornhiet); /////////////// NHIET DO /////////////
    delay(10);
    }


    for(int i=0;i<9;i++) //sort the analog from small to large
    {
    for(int j=i+1;j<10;j++)
    {
    if(buf>buf[j])
    {
    temp=buf;
    buf=buf[j];
    buf[j]=temp;
    }
    }
    }
    ///////////////////////// pH //////////////////
    avgValue=0;
    for(int i=0;i<10;i++) //take the average value of 6 center sample
    avgValue+=buf;
    /////////////////////// NHIET DO ////////////////////
    avgADC=0;
    for(int m=0;m<10;m++) //take the average value of 6 center sample
    avgADC+=buf1[m];




    float phValue=(float)avgValue*5.0/1024/10; //convert the analog into millivolt
    float phvalue; // mach lam he so 5.1 , module he so
    float vol = (phValue*100) ;
    // phvalue = phValue *2.5; //convert the millivolt into pH value
    int x = map(vol,243,299,400,1000); ////////// Ở 30 ĐỘ ( pH 4 = 3.95 , pH 10 = 10.05 ) ///// lệch voltage giữa 4 và 7 là 0.32 ///// vol :174, 239
    int y =x ;


    ///////////////////////////// ĐỌC NHIỆT ĐỘ /////////////////////////////////////

    float dienap = (float)avgADC*5.0/1024.0/10;
    float temp = dienap *100.0;


    Serial.println(y);
    delay(200);

    }

    }

    CODe nhận dữ liệu:


    #include <LiquidCrystal.h>
    LiquidCrystal lcd(9, 8, 4, 5, 6, 7);

    int data[2], val ;

    int led1 =10;

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(led1,OUTPUT); /// chan mode module RF
    digitalWrite(led1,HIGH);

    lcd.begin(16, 2); // Dùng LCD 16, 2
    lcd.print ( " Do pH " );
    delay(1000);

    }

    void loop() {
    // put your main code here, to run repeatedly:
    if (Serial.available())
    {
    data[0] = (int)Serial.read() - 48 ;
    data[1] = (int)Serial.read() - 48 ;
    data[2] = (int)Serial.read() - 48 ;

    val = ((data[0]*100) + (data[1]*10) + data[2]);



    lcd.clear();
    lcd.setCursor(0,0); //Thiết lập vị trí con trỏ
    lcd.print("pH: "); // In ra cái mình muốn ghi
    lcd.setCursor(3,0);
    lcd.print(val);



    }

    }
     

    Các file đính kèm:

Chia sẻ trang này