বর্তমানে আমি তাপ পাম্প সিস্টেমে তাপমাত্রা, প্রবাহ, ভোল্টেজ, শক্তি এবং শক্তি প্রদর্শন করার জন্য একটি গ্রাফিক এলসিডি সিস্টেম বিকাশ করছি। একটি গ্রাফিক এলসিডি ব্যবহারের অর্থ আমার এসআরএমের অর্ধেক এবং আমার ফ্ল্যাশের ~ 75% স্ক্রিন বাফার এবং স্ট্রিং ব্যবহার করেছে।
আমি বর্তমানে শক্তির জন্য ন্যূনতম / সর্বাধিক / গড় পরিসংখ্যান প্রদর্শন করছি যখন মধ্যরাতে যখন দৈনিক চিত্রটি পুনরায় সেট করা হয় তখন সিস্টেমটি পরীক্ষা করে যে দিনের জন্য আগের ন্যূনতম বা সর্বাধিকের চেয়ে কম বা মানটি সংরক্ষণ করা হয়। গড় সংখ্যা দিনের সংখ্যার সাথে সংখ্যামূলক শক্তি খরচ ভাগ করে গণনা করা হয়।
আমি গত সপ্তাহ এবং মাসে (সরলতার জন্য 4 সপ্তাহ) অর্থাৎ রোলিং গড়ের দৈনিক গড় প্রদর্শন করতে চাই। বর্তমানে এটিতে গত 28 দিনের মানগুলির একটি অ্যারে বজায় রাখা এবং সাপ্তাহিকের জন্য মাসিক এবং শেষ 7 দিনের জন্য পুরো অ্যারের উপরে গড়ে গণনা করা জড়িত।
প্রাথমিকভাবে আমি এটি একটি ফ্লোটের অ্যারের ব্যবহার করে করছিলাম (শক্তিটি "12.12kWh" আকারে রয়েছে) তবে এটি 28 * 4 বাইট = 112 বাইট (এসআরএম এর 5.4%) ব্যবহার করছিল। আমি কেবলমাত্র এক দশমিক দশমিক পয়েন্ট রেজোলিউশন রাখতে আপত্তি করি না, তাই আমি uint16_t ব্যবহার করে এবং চিত্রটি 100 দ্বারা গুণিত করতে পরিবর্তিত হয়েছি This এর অর্থ হল 12.12 1212 হিসাবে প্রতিনিধিত্ব করা হয়েছে, এবং আমি প্রদর্শনের উদ্দেশ্যে 100 দ্বারা বিভক্ত হয়েছি।
অ্যারের আকার এখন 56 বাইটে নিচে নেমে গেছে (আরও ভাল!)।
আমি দেখতে পাচ্ছি এমন চিত্রটি uint8_t এ কমিয়ে আনার কোনও তুচ্ছ উপায় নেই। দশমিক স্থানের ক্ষতি ("12.12kWh এর পরিবর্তে" 12.1kWh ") সহ্য করতে পারতাম, তবে খরচ প্রায় 25.5kWh এর চেয়ে বেশি (255 সর্বাধিক মান 8-বিট স্বাক্ষরযুক্ত পূর্ণসংখ্যার প্রতিনিধিত্ব করে) is গ্রহণ কখনও 10.0kWh এর নীচে বা 35.0kWh এর উপরে হয় নি, সুতরাং অনুমেয় আমি সংগ্রহিত পরিসংখ্যানগুলি থেকে 10 বিয়োগ করতে পারি, তবে আমি জানি যে একদিন আমরা এই সীমাগুলি অতিক্রম করব।
আমি তখন কোডটি 9-বিট মানগুলিকে একটি অ্যারেতে প্যাক করার জন্য পরীক্ষা করেছিলাম। এটি 0-51.2kWh এর পরিসীমা দেয় এবং মোট 32 বাইট ব্যবহার করে। যাইহোক, এর মতো একটি অ্যারে অ্যাক্সেস করা বেশ ধীর গতির, বিশেষত যখন আপনাকে গড় হিসাবে গণনা করতে সমস্ত মানকে পুনরাবৃত্তি করতে হয়।
সুতরাং আমার প্রশ্নটি হল - তিনটি উইন্ডো - আজীবন, ২৮ দিন এবং days দিন সহ চলন গড় গণনা করার আরও কার্যকর উপায় আছে কি? দক্ষতার অর্থ এসআরএএম ব্যবহারের ক্ষেত্রে ছোট, তবে বিশাল কোডের জরিমানা ছাড়াই। আমি কি সমস্ত মান সংরক্ষণ করা এড়াতে পারি?