piratu2ro Postat Mai 27, 2020 Partajează Postat Mai 27, 2020 (editat) 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 Mai 27, 2020 de nico_2010 Link spre comentariu
Florian Ciobanu Postat Mai 27, 2020 Partajează Postat Mai 27, 2020 sms cu ce le trimiti ? folosesti modem sau vre-un telefon cuplat pe serial ? ma intereseaza si pe mine ceva asemanator Link spre comentariu
mihaicozac Postat Mai 27, 2020 Partajează Postat Mai 27, 2020 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
piratu2ro Postat Mai 27, 2020 Autor Partajează Postat Mai 27, 2020 Acum 5 ore, Florian Ciobanu a spus: sms cu ce le trimiti ? folosesti modem sau vre-un telefon cuplat pe serial ? ma intereseaza si pe mine ceva asemanator Folosesc un modem Link spre comentariu
piratu2ro Postat Mai 28, 2020 Autor Partajează Postat Mai 28, 2020 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
mihaicozac Postat Mai 28, 2020 Partajează Postat Mai 28, 2020 (editat) 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 Mai 28, 2020 de mihaicozac Link spre comentariu
piratu2ro Postat Mai 28, 2020 Autor Partajează Postat Mai 28, 2020 Multumesc mult am reusit sa il fac, Link spre comentariu
mihaicozac Postat Mai 28, 2020 Partajează Postat Mai 28, 2020 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
piratu2ro Postat Mai 28, 2020 Autor Partajează Postat Mai 28, 2020 da imi dadea aiurea cand nu era tensiunea in interval, am adaugat si acum e perfect Link spre comentariu
Gilbert Sparios Postat Iunie 21, 2020 Partajează Postat Iunie 21, 2020 pe viitor încearcă sa nu folosești nimic din String(). cele mai multe probleme le-am avut asa. cand lucrezi cu text, ar fi bine sa lucrezi cu char array, copiate din flash nu in RAM. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum