Batarya seviyesi ölçme kodu hata yardımı
  • iyi günler arkadaşlar batarya seviyesi ölçme projesi yapacaktım lakin kodu çalıştırırken hata aldım kodlar şu ve aldığım hata da bu kodu düzeltme şansınız var mı veya yardım etme şansınız ?Şimdiden teşekkürler
    #include "U8glib.h"
    #define MOSFET_Pin 2
    #define Bat_Pin A0
    #define Res_Pin A1
    #define Buzzer_Pin 9
    U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
    float Capacity = 0.0; // Capacity in mAh
    float Res_Value = 10.0; // Resistor Value in Ohm
    float Vcc = 4.64; // Voltage of Arduino 5V pin ( Mesured by Multimeter )
    float Current = 0.0; // Current in Amp
    float mA=0; // Current in mA
    float Bat_Volt = 0.0; // Battery Voltage
    float Res_Volt = 0.0; // Voltage at lower end of the Resistor
    float Bat_High = 4.3; // Battery High Voltage
    float Bat_Low = 2.9; // Discharge Cut Off Voltage
    unsigned long previousMillis = 0; // Previous time in ms
    unsigned long millisPassed = 0; // Current time in ms
    float sample1 =0;
    float sample2= 0;
    int x = 0;
    int row = 0;

    //************************ OLED Display Draw Function *******************************************************
    void draw(void) {
    u8g.setFont(u8g_font_fub14r); // select font
    if ( Bat_Volt < 1){
    u8g.setPrintPos(10,40); // set position
    u8g.println("No Battery!");
    }
    else if ( Bat_Volt > Bat_High){
    u8g.setPrintPos(25,40); // set position
    u8g.println("High-V!");
    }
    else if(Bat_Volt < Bat_Low){
    u8g.setPrintPos(25,40); // set position
    u8g.println("Low-V!");
    }
    else if(Bat_Volt >= Bat_Low && Bat_Volt < Bat_High ){

    u8g.drawStr(0, 20, "Volt: "); // put string of display at position X, Y
    u8g.drawStr(0, 40, "Curr: ");
    u8g.drawStr(0, 60, "mAh: ");
    u8g.setPrintPos(58,20); // set position
    u8g.print( Bat_Volt,2); // display Battery Voltage in Volt
    u8g.println("V");
    u8g.setPrintPos(58,40); // set position
    u8g.print( mA,0); // display current in mA
    u8g.println("mA");
    u8g.setPrintPos(58, 60); // set position
    u8g.print( Capacity ,1); // display capacity in mAh

    }
    }
    //******************************Buzzer Beep Function *********************************************************

    void beep(unsigned char delay_time){
    analogWrite(9, 20); // PWM signal to generate beep tone
    delay(delay_time); // wait for a delayms ms
    analogWrite(Buzzer_Pin, 0); // 0 turns it off
    delay(delay_time); // wait for a delayms ms

    }

    //*******************************Setup Function ***************************************************************

    void setup() {
    Serial.begin(9600);
    pinMode(MOSFET_Pin, OUTPUT);
    pinMode(Buzzer_Pin, OUTPUT);
    digitalWrite(MOSFET_Pin, LOW); // MOSFET is off during the start
    Serial.println("CLEARDATA");
    Serial.println("LABEL,Time,Bat_Volt,capacity");

    //Serial.println("Arduino Battery Capacity Tester v1.0");
    //Serial.println("BattVolt Current mAh");
    }
    //********************************Main Loop Function***********************************************************
    void loop() {
    // Vcc = readVcc()/1000.0; // Conevrrt mV to Volt

    // Voltage devider Out = Bat_Volt * R2/(R1+R2 ) // R1 =10K and R2 =10K

    //************ Measuring Battery Voltage ***********

    for(int i=0;i< 100;i++)
    {
    sample1=sample1+analogRead(Bat_Pin); //read the voltage from the divider circuit
    delay (2);
    }
    sample1=sample1/100;
    Bat_Volt = 2* sample1 *Vcc/ 1024.0;

    // ********* Measuring Resistor Voltage ***********

    for(int i=0;i< 100;i++)
    {
    sample2=sample2+analogRead(Res_Pin); //read the voltage from the divider circuit
    delay (2);
    }
    sample2=sample2/100;
    Res_Volt = 2* sample2 * Vcc/ 1024.0;

    //********************* Checking the different conditions *************

    if ( Bat_Volt > Bat_High){
    digitalWrite(MOSFET_Pin, LOW); // Turned Off the MOSFET // No discharge
    beep(200);
    Serial.println( "Warning High-V! ");
    delay(1000);
    }

    else if(Bat_Volt < Bat_Low){
    digitalWrite(MOSFET_Pin, LOW);
    beep(200);
    Serial.println( "Warning Low-V! ");
    delay(1000);
    }
    else if(Bat_Volt > Bat_Low && Bat_Volt < Bat_High ) { // Check if the battery voltage is within the safe limit
    digitalWrite(MOSFET_Pin, HIGH);
    millisPassed = millis() - previousMillis;
    Current = (Bat_Volt - Res_Volt) / Res_Value;
    mA = Current * 1000.0 ;
    Capacity = Capacity + mA * (millisPassed / 3600000.0); // 1 Hour = 3600000ms
    previousMillis = millis();
    Serial.print("DATA,TIME,"); Serial.print(Bat_Volt); Serial.print(","); Serial.println(Capacity);
    row++;
    x++;
    delay(4000);

    }

    //**************************************************

    u8g.firstPage();
    do {
    draw();
    } while( u8g.nextPage() );

    //*************************************************
    }



    https://resmim.net/preview/sdtBY0.png
  • Resimdeki kodlar ile senin buradaki kodlar aynı değil veya aktarma işleminde birşeyler ters gitmiş.İki tarafida kontrol ediniz, aynı sekle getirince bir daha bakalim.
  • resimdeki kodlarda
    kırmızı renkteki hata satırı kodları kopyaladığınız için && > ve < olması gereken yerler
    & gt; olanlar > olacak & amp; olanlar && olacak & lt; olanlar ise < olacak, aslında aynı kodları buraya yazdığınızda düzeltilmiş tekrardan forum tarafından kopyala yapıştır yaptığınız içi,n kopyalandığı siteden kaynaklı sorun
  • kodları uygun işaretlerle değiştirdim ve şimdi de şu hatayı alıyorum

    https://resmim.net/f/8fr38Z.png

    Resimdeki hatayı aldıktan sonra hata satırının sonuna noktalı virgül koydu düzelmedi acaba eksik yer neresi



    kodlarda şu şekilde
    #include "U8glib.h"
    #define MOSFET_Pin 2
    #define Bat_Pin A0
    #define Res_Pin A1
    #define Buzzer_Pin 9
    U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
    float Capacity = 0.0; // Capacity in mAh
    float Res_Value = 10.0; // Resistor Value in Ohm
    float Vcc = 4.64; // Voltage of Arduino 5V pin ( Mesured by Multimeter )
    float Current = 0.0; // Current in Amp
    float mA=0; // Current in mA
    float Bat_Volt = 0.0; // Battery Voltage
    float Res_Volt = 0.0; // Voltage at lower end of the Resistor
    float Bat_High = 4.3; // Battery High Voltage
    float Bat_Low = 2.9; // Discharge Cut Off Voltage
    unsigned long previousMillis = 0; // Previous time in ms
    unsigned long millisPassed = 0; // Current time in ms
    float sample1 =0;
    float sample2= 0;
    int x = 0;
    int row = 0;

    //************************ OLED Display Draw Function *******************************************************
    void draw(void) {
    u8g.setFont(u8g_font_fub14r); // select font
    if ( Bat_Volt <; 1){<br /> u8g.setPrintPos(10,40); // set position
    u8g.println("No Battery!");
    }
    else if ( Bat_Volt >; Bat_High){
    u8g.setPrintPos(25,40); // set position
    u8g.println("High-V!");
    }
    else if(Bat_Volt <; Bat_Low){<br /> u8g.setPrintPos(25,40); // set position
    u8g.println("Low-V!");
    }
    else if(Bat_Volt >;= Bat_Low &&; Bat_Volt <; Bat_High ){<br />
    u8g.drawStr(0, 20, "Volt: "); // put string of display at position X, Y
    u8g.drawStr(0, 40, "Curr: ");
    u8g.drawStr(0, 60, "mAh: ");
    u8g.setPrintPos(58,20); // set position
    u8g.print( Bat_Volt,2); // display Battery Voltage in Volt
    u8g.println("V");
    u8g.setPrintPos(58,40); // set position
    u8g.print( mA,0); // display current in mA
    u8g.println("mA");
    u8g.setPrintPos(58, 60); // set position
    u8g.print( Capacity ,1); // display capacity in mAh

    }
    }
    //******************************Buzzer Beep Function *********************************************************

    void beep(unsigned char delay_time){
    analogWrite(9, 20); // PWM signal to generate beep tone
    delay(delay_time); // wait for a delayms ms
    analogWrite(Buzzer_Pin, 0); // 0 turns it off
    delay(delay_time); // wait for a delayms ms

    }

    //*******************************Setup Function ***************************************************************

    void setup() {
    Serial.begin(9600);
    pinMode(MOSFET_Pin, OUTPUT);
    pinMode(Buzzer_Pin, OUTPUT);
    digitalWrite(MOSFET_Pin, LOW); // MOSFET is off during the start
    Serial.println("CLEARDATA");
    Serial.println("LABEL,Time,Bat_Volt,capacity");

    //Serial.println("Arduino Battery Capacity Tester v1.0");
    //Serial.println("BattVolt Current mAh");
    }
    //********************************Main Loop Function***********************************************************
    void loop() {
    // Vcc = readVcc()/1000.0; // Conevrrt mV to Volt

    // Voltage devider Out = Bat_Volt * R2/(R1+R2 ) // R1 =10K and R2 =10K

    //************ Measuring Battery Voltage ***********

    for(int i=0;i<; 100;i++)<br /> {
    sample1=sample1+analogRead(Bat_Pin); //read the voltage from the divider circuit
    delay (2);
    }
    sample1=sample1/100;
    Bat_Volt = 2* sample1 *Vcc/ 1024.0;

    // ********* Measuring Resistor Voltage ***********

    for(int i=0;i<; 100;i++)<br /> {
    sample2=sample2+analogRead(Res_Pin); //read the voltage from the divider circuit
    delay (2);
    }
    sample2=sample2/100;
    Res_Volt = 2* sample2 * Vcc/ 1024.0;

    //********************* Checking the different conditions *************

    if ( Bat_Volt > Bat_High){
    digitalWrite(MOSFET_Pin, LOW); // Turned Off the MOSFET // No discharge
    beep(200);
    Serial.println( "Warning High-V! ");
    delay(1000);
    }

    else if(Bat_Volt <; Bat_Low){<br /> digitalWrite(MOSFET_Pin, LOW);
    beep(200);
    Serial.println( "Warning Low-V! ");
    delay(1000);
    }
    else if(Bat_Volt >; Bat_Low &&; Bat_Volt <; Bat_High ) { // Check if the battery voltage is within the safe limit<br /> digitalWrite(MOSFET_Pin, HIGH);
    millisPassed = millis() - previousMillis;
    Current = (Bat_Volt - Res_Volt) / Res_Value;
    mA = Current * 1000.0 ;
    Capacity = Capacity + mA * (millisPassed / 3600000.0); // 1 Hour = 3600000ms
    previousMillis = millis();
    Serial.print("DATA,TIME,"); Serial.print(Bat_Volt); Serial.print(","); Serial.println(Capacity);
    row++;
    x++;
    delay(4000);

    }

    //**************************************************

    u8g.firstPage();
    do {
    draw();
    } while( u8g.nextPage() );

    //*************************************************
    }


  • ; noktalı virgül kod satırının sonu demektir else if(Bat_Volt >; burdan sonrasını okumaz ve hata verir bu kodları aldığınız sitedeki bir sorundan dolayı böyle oluyor aynı kodu başka yerlerde de araştırın derim zira başka sorunlar da çıkabilir ilk mesajınızdaki kodlar bu forum tarafından düzeltilmiş görünmekte onlarla bu resimdekileri karşılaştırıp gözden geçirin

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.