 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 05 13, 07:57. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Programavimas » Arduino pwm value to screen?
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 19, 16:38 |
|
|
|
darius_p rašo: |
Citata: |
Jei iš čia parašytau: Serial.print(GetLightlntensitylnt()); |
Serial.print( Channels[channel].GetLightIntensityInt(now) ); |
Na dabar sita suzinojo, bet kazin ar supras kodel reikia rasyti butent taip... O po to bus vel daug klausimu  |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 19, 19:52 |
|
|
|
darius_p rašo: |
Citata: |
Channels[channelNo].AddPoint(8, 0, 0);
Channels[channelNo].AddPoint(8, 30, 150); |
Tai 3 parametras ir yra tavo PWM reikšmė. Jis fiksuotas 0 ir 150. Tai po kiekviena tokia eilute gali ir išvesti alia print("0"). Atitinkamai ir kitose vietose, kur keičiamas PWM.
Jeigu nori matyti rėžius ne 0-255, tai gali panaudoti tą "pct = map(X,0,255,0,100); " Vietoje X įrašai PWM reikšmę ir perskaičiuos proporcingai į 0-100%. Tada print(pct); |
Šitą aš ir pats žinau, kad tas 3 parametras pwm reikšmė. Ją aš pats ir užsiduodu, kokia ji turi būti.
Ši situacija kaip DejaVu . Vakar skaitinėjau arduino forumą http://forum.arduino.cc/index.php?topic=298587.0 ir ten prieš metus lygiai tookius pats naujoks bando arduinų guru užklausti, kaip jam lcd matyti intensity realiu laiku šito pačio sketch-o. Man viskas aišku ko tam žmogeliui reikia, bet programeriam visa tai kažkaip kitaip atrodo. Aš programerius irgi suprantu, kad norint konkrečiai atsakyti reikia nagrinėti kažkieno sketchą, įsigilinti ir niekas neturi nei noro nei laiko gaišti savo laisvalaikį kažkieno pramogai. Gaila.
Kažkaip netyčia pamaniau, kad programuojantiems tai bus kaip du pirštus... (sry).
O dėl šito
Kodas: |
Serial.print( Channels[channel].GetLightIntensityInt(now) ); |
aišku kad bus klausimų Nes vien tik ši eilutė nieko neduos. Nes kažkur kažkaip dar reikės aprašyti tą "channel".  |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 19, 21:24 |
|
|
|
Citata: |
Nes vien tik ši eilutė nieko neduos. Nes kažkur kažkaip dar reikės aprašyti tą "channel". |
Taigi jis aprašytas, jeigu yra jau tame kode. Po ta eilute kur jis naudojamas pridėk tą išvedimą.
Citata: |
Kažkaip netyčia pamaniau, kad programuojantiems tai bus kaip |
Gal ir būtų. Bet kai padriki kodo gabalai įkelti, tai neaišku kas kur aprašyta. Kita vertus, nagrinėti visą projektą ir padaryti funkcionalumą niekas nesuinteresuotas. Paprastai atsakinėjama į konkrečius klausimus. Ir temą reikėjo kurti prie mikrovaldiklių, ten daugiau stebi valdiklių programuotojai nei PC skyriuje. |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 19, 22:24 |
|
|
|
Velnias, tik dabar ir aš pamačiau, kad yra mikrovaldiklių skiltis
Na štai - ledai pajudėjo. Dabar jau ekrane matau esamą pwm reikšmę. Kol kas tik (nežinau kaip pavadinti tas reikšmes 0-255) šitais vienetais. Dabar žiūrinėsiu ar bėgant kaikui ji kis ir ekrane. Ir bandysiu perdaryti, kad tą reikšmę perskaičiuotų į %.
Kol kas DĖKUI už sugaištą laiką varau testuoti... |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 19, 23:56 |
|
|
|
Kol kas pwm reikšmės (0-255) kitimą realiu laiku rodo. Gaila tik per valandą laiko pwm valdynas jau buvo ir "užstrigęs" ir kažkas su ciklu nuklydę - vietoj to, kad būtų 0 nušoko į prieš tai užduotą vertę (125-1). Perkrovus arduiną viskas stojasi į savo vietas - pasigauna laiką ir ciklą vykdo kaip turi būti.
Su šiuo valdikliuku planavau akvariumo apšvietimą valdyti, o tokie bugai nieko gero nežada
Gal tai dėl to, kad tas kelias eilutes ne ten įrašiau ir jos kažkaip tai trikdo ciklą?
Kol kas dabar suku galvą kaip pwm 0-255 pervesti į 0-100%. |
|
|
|
|
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 07:13 |
|
|
|
Saulix rašo: |
Kol kas dabar suku galvą kaip pwm 0-255 pervesti į 0-100%. |
Na logiskai, tai tavo vieno PWM bito reiksme lygi 1/255, tai padaugink sita skaiciu is einamo laiko bitu skaiciaus ir tada padaugink is 100
Pvz.:
PWM registro reiksme = 128, tai gaunam: 128/255 * 100 = 50%.
Tiesa, cia studento darbas koksnors? |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 09:35 |
|
|
|
Matematiškai tai aš tai suprantu ir pasiskaičiuoti moku, bet kaip ir rašiau programavime tik savaitę su arduinu žaidžiu.
Kiek prisiskaitinėjau tai arduinas tokiems perskaičiavimams map funkciją turi, aš tik nežinau kaip man ją teisingai užrašyti.
Čia ta kodo vieta kur pwm vertę išvedu į lcd:
Kodas: |
// ----------------------- Functions -----------------------
long lastUpdateTime = 0;
// Update light intensity values
void UpdateLights(DateTime currentTime)
{
long now = Seconds(currentTime.hour(), currentTime.minute(), currentTime.second()); // Convert current time to seconds since midnight
if(now != lastUpdateTime) // Perform update only if there is a perceivable change in time (no point wasting clock cycles otherwise)
{
for(int channel = 0; channel < MaxChannels; channel++) // For each Channel
{
analogWrite(Channels[channel].GetPin(), Channels[channel].GetLightIntensityInt(now)); // Get updated light intensity and write value to pin (update is performed when reading value)
Serial.print( Channels[channel].GetLightIntensityInt(now) );
// int pct = map(X,0,255,0,100); //Calculate PWM percentage
lcd.setCursor(0,3); // set cursor to column 0, row 4
lcd.print("LED pwm "); //
if (Channels[channel].GetLightIntensityInt(now) < 10) lcd.print("0"); // kad butu 01, 02 ir t.t. nežinau ar reikia?
lcd.print(Channels[channel].GetLightIntensityInt(now));
lcd.print("%");
}
}
lastUpdateTime = now;
}
|
int pct = map(X,0,255,0,100)
vietoj X įrašyti: Channels[channel].GetLightIntensityInt(now) ?
o ką daryti su kaire lygybės puse?
Ne, čia ne studento darbas. Būtų gėda su tiek žinių šia tema rašyti darbą
Šiaip esu akvariumistas turintis nano akvariumą su diy led apšvietimu. Kadangi jau šviečia ledai, tai kitas logiškas žingsnis būtų padryt ir atitinkamą jo valdymą - pwm signalu su saulėlydžiais/saulėtekiais ir t.t.
Kaip ten bebūtų šiuo metu jau turiu arduino uno, rtc ds3231, dht22, lcd 20x4, temp DS18B20 ir meanwell ldd-700h, maitblokis kol kas nuo seno PC. Taigi trūksta tik viską sujungti ir tvarkingai veikiančio, nestringančio sketch-o  |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 12:27 |
|
|
|
Citata: |
vietoj X įrašyti: Channels[channel].GetLightIntensityInt(now) ?
o ką daryti su kaire lygybės puse? |
Taip.
O kairė pusė bus tau reikalingas rezultatas (0-100). Tada print(pct).
P.S. jau šis atsakymas buvo žinutėje "2016 01 19, 12:33". |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 21:54 |
|
|
|
Pagaliau viskas pavyko
DIDELIS DĖKUI VISIEMS PADĖJUSIEMS ir užvedusiems ant tinkamo kelio. Visgi didžiausia mano nesėkmių priežastis buvo ta, kad visus savo bandymus aš rašydavau ne toj kodo eilutėj
Galutinis veikiantis variantas gavosi toks:
Kodas: |
int pct = Channels[channel].GetLightIntensityInt(now);
pct = map (Channels[channel].GetLightIntensityInt(now),0,255,0,100);
lcd.setCursor(0,3); // set cursor to column 0, row 4
lcd.print("Light value "); // Light intensity
lcd.print(pct);
lcd.print("%"); |
Belieka tik programėlės testavimas - neramina vakarykščiai strigimai ir pwm vertės šokinėjimai.
Ir tiesa dar toks bugas: pasibaigus ciklui intensity sumažėjus nuo 100 iki 0 - ekrane lieka užrašas "0%%%". Ką nuveikus, kad visada būtų tik vienas % simbolis?  |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 22:32 |
|
|
|
Pries rasant nauja reiksme kaskart istrinti eilute.
Pas tave dabar gaunasi taip, kad atnaujinamas tik tos vietos simbolis, kur tu irasai, taigi kai buna 1%, tai procento simbolis yra 2 pozicijoj, 10% yra 3 pozicijoj, o 100% yra 4toj. Kai vel nusoka ant 0%, tai tu atnaujini tik 1 ir 2 pozicijas, matyt todel pozicijoje 3 ir 4 lieka seni procento simboliai nuo praeito atnaujinimo.
Kitas variantas: visada palik vietos trims skaiciams, bet kai bus maziau nei 100%, tai turesi tarpa iki procento zenklo. |
|
|
|
|
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 22:42 |
|
|
|
Socrates rašo: |
Pries rasant nauja reiksme kas kart istrinti eilute. |
Ar arduine yra tokia funkcija (komanda)? Pasiieškosiu, tik kaip tai angliškai vadinasi? Refresh?  |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 20, 23:48 |
|
|
|
lcd.clear();
žinau, bet perilgai užtrunka ir valo visą ekraną...
Paprasčiausias būdas prieš lcd.print būtų įvesti:
Kodas: |
if (pct < 10) lcd.print(" "); // 2 space
else if (pct < 100) lcd.print(" ") // 1 space ; |
dar arduine yra kažkoks:
dtostrf(floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
where
floatvar float variable
StringLengthIncDecimalPoint This is the length of the string that will be created
numVarsAfterDecimal The number of digits after the deimal point to print
charbuf the array to store the results
Bet čia daugiau gal skaičiams po kablelio ??? reik studijuoti.
DIDŽIAUSIA PROBLEMA - STRINGANTIS KODAS. |
|
|
|
|
 |
 |
Arduino pwm value to screen? |
Parašytas: 2016 01 21, 11:27 |
|
|
|
Citata: |
int pct = Channels[channel].GetLightIntensityInt(now);
pct = map (Channels[channel].GetLightIntensityInt(now),0,255,0,100); |
Tai pirma eilutė nebereikalinga, trink. Tik tada "int" padėk prieš antrą.
Dėl strigimų tai gali būti sunku sugaudyti bugus su tokiais įgūdžiais. Didesnė strigimų tikimybė ant kokių daviklių nuskaitymo... |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |