Sari la conținut
ELFORUM - Forumul electronistilor

Procentaj baterie arduino


Postări Recomandate

Salutare,

In primul rand vreau sa va spun ca sunt incepator cu arduino, dar am reusit aproape sa fac un proiect cu arduino.

este vorba de un arduino uno care preia niste date de la niste senzori si le trimite prin sms, problema este urmatoarea vreau sa imi trimita si cat mai are bateria pe serial am reusit dar dar pe sms nu stiu cum sa fac.

pe serial imi da asa

13:07:10.953 -> Press1013.90
13:07:10.953 -> Battery Voltage =7.78
13:07:10.953 -> Battery Status =15%

 

parte din cod

Serial.print("Press");
  Serial.println(barometru.readPressure()/100);
  Serial.print("Battery Voltage =");
  Serial.println(voltage);
  Serial.print("Battery Status =");
 
   if(voltage<=11.80){
   Serial.println("15%");
    }
  else if(voltage>11.80 && voltage<=12.30){
   Serial.println("50%");
    }
  else if(voltage>12.30 && voltage<=12.50){
    Serial.println("75%");
    }
  else {
     Serial.println("100");

.

.

aici ca sa trimita sms

Serial.println (weight);
  String data = String("Temp")+String("_")+tempera+String("*C_")+String("Hum")+String("_")+humid+String("%_")+String("Patm")+String("_")+pres+String("Pa_")+String("Bat")+String("_")+voltage+String("V_")

Pe viitor foloseste butonul <> din editor pentru a insera cod.

Editat de nico_2010
Link spre comentariu
  • Răspunsuri 9
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Trimiţi variabila voltage ca şi string şi interpretarea o faci subiectiv, sau creezi o variabilă procent cam ca şi în exemplul următor;

float scale = (battMax - battMin) / 100;
float procent = (voltage - battMin) / scale;

variabila procent o trimiţi apoi ca string prin SMS.

variabilele battMax şi battMin le poţi declara în setup sau poţi scrie direct valorile corespunzătoare în cod, de ex. 1200 pt. maximul şi 900 minimum sau alte valori.

Link spre comentariu
Acum 11 ore, mihaicozac a spus:

Trimiţi variabila voltage ca şi string şi interpretarea o faci subiectiv, sau creezi o variabilă procent cam ca şi în exemplul următor;


float scale = (battMax - battMin) / 100;
float procent = (voltage - battMin) / scale;

variabila procent o trimiţi apoi ca string prin SMS.

variabilele battMax şi battMin le poţi declara în setup sau poţi scrie direct valorile corespunzătoare în cod, de ex. 1200 pt. maximul şi 900 minimum sau alte valori.

Salutare, multumesc mult , am o problema cv nu fac bine imi da o eroare mai am undeva scale unde fac conversia din g in kg

Eroarea

"request for member 'get_units' in 'scale', which is of non-class type 'float'"

   int volt = analogRead(A1);// read the input
  double voltage = map(volt,0,1023, 0, 2500) + offset;// map 0-1023 to 0-2500 and add correction offset
  voltage /=100;// divide by 100 to get the decimal values

   float scale = (1500 - 1000) / 100;
  float procent = (voltage - 1000) / scale;  

  delay(500);
  
  t = rtc.getTime(); 
  Serial.print( t.hour);
  Serial.print( ":");
  Serial.print( t.min);
  Serial.print( ":");
  Serial.println( t.sec);
  
  int readData = DHT.read22(7);
  float temp = DHT.temperature; 
  float humidity = DHT.humidity;

  Serial.print("Temperature =");
  Serial.println(temp);
  Serial.print("Humidity=");
  Serial.println(humidity);
  //Serial.print("Temp_baro");
  //Serial.println(barometru.readTemperature());
  Serial.print("Press");
  Serial.println(barometru.readPressure()/100);
  Serial.print("Battery Voltage =");
  Serial.println(voltage);
  Serial.print("Battery Status =");
 
 
   if(voltage<=11.80){
   Serial.println("15%");
    }
  else if(voltage>11.80 && voltage<=12.30){
   Serial.println("50%");
    }
  else if(voltage>12.30 && voltage<=12.50){
    Serial.println("75%");
    }
  else {
     Serial.println("100%");
  }         
  Serial.print("Masa");
  
   float khali=scale.get_units(10);
Serial.println(khali);
kg = 0;
  if (khali>=1000.0) // Done
  { khali=khali/1000;
  kg = 1;
  }

 

Link spre comentariu

Păi schimbă numele din scale în divisions sau ce vrei tu, scaleValue, scalation, diviziune, etc

N-am ştiut că mai foloseşti o variabilă scale altundeva.

Poţi renunţa la if-urile alea de la sfârşit şi scrie direct Serial.print(procent), o să ai precizie mai bună.

Editat de mihaicozac
Link spre comentariu

ar mai trebui adăugată o linie după cele 2:

float scale = (battMax - battMin) / 100;
float procent = (voltage - battMin) / scale;
procent = constrain(procent, 0, 100);

altfel te trezeşti cu valori aiurea pt. procentul bateriei dacă tensiunea este sub prag sau peste.

Link spre comentariu
  • 4 săptămâni mai târziu...

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări