সুচিপত্র:

ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট: 8 টি ধাপ
ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট: 8 টি ধাপ

ভিডিও: ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট: 8 টি ধাপ

ভিডিও: ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট: 8 টি ধাপ
ভিডিও: 😱চমৎকার একটি টাচ সেন্সর মডিউল দেখলে অবাক হবেন || How to use TTP223 Touch sensor module|| 2024, নভেম্বর
Anonim
ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট
ক্যাপাসিটিভ টাচ মুড/অ্যাম্বিলাইট

এই নির্দেশযোগ্য একটি বহুমুখী মেজাজ তৈরি করে আমার অভিজ্ঞতার একটি দ্রুত লেখা। ইলেকট্রনিক সার্কিট সম্পর্কে কিছু প্রাথমিক জ্ঞান আশা করা যায়। প্রকল্পটি এখনও শেষ হয়নি, কিছু যোগ করার কার্যকারিতা এবং টুইকিং করতে হবে কিন্তু এটি ইতিমধ্যে কার্যকরী। আপনি যদি এই নির্দেশাবলী সম্পর্কে উত্সাহী হন তবে আমি এটি আপডেট করব। সিস্টেমের হৃদয় একটি Arduino হয়। এটি ইউএসবি বা প্রতিটি ক্যাপাসিটিভ টাচ ইনপুট থেকে ইনপুট প্রক্রিয়া করবে এবং আরজিবি লাইট নিয়ন্ত্রণ করবে। এই নির্দেশযোগ্যটি তিনটি বিভাগে বিভক্ত:- ক্যাপাসিটিভ স্পর্শ বিভাগটি অদৃশ্য ইনপুট বোতামগুলি জুড়ে দেয়- মুডলাইট বিভাগটি মুডলাইটের নিয়ন্ত্রণকে কভার করে- অ্যাম্বিলাইট বিভাগটি সিরিয়াল পোর্ট দ্বারা ইনপুট জুড়ে দেয়, একটি কম্পিউটার প্রোগ্রাম দ্বারা উৎপন্ন RGB মানগুলি আলো নিয়ন্ত্রণ করতে ডিসক্লেইমার: ইলেকট্রনিক্স বিপজ্জনক হতে পারে, যেকোন ক্ষতি হলে আপনি নিজেই দায়ী। কিছু কোড ফোরাম থেকে সংগ্রহ করা হয় এবং এর মালিকের নাম নাও থাকতে পারে। দয়া করে আমাকে জানান এবং আমি আপনার নাম যোগ করব।

ধাপ 1: আইটেম তালিকা

এই নির্দেশের জন্য নিম্নলিখিত উপাদানগুলির প্রয়োজন:- Arduino+USB কেবল- Breadboard- কম্পিউটার পাওয়ার সাপ্লাই- 3x RGB স্ট্রিপ, dealextreme.com দেখুন।- 3x TIP120 FETs, যেমন https://uk.farnell.com/stmicroelectronics/tip120 /darlington-transistor-to-220/dp/9804005- একগুচ্ছ প্রতিরোধক (6 * 10 কিলো ওহম, 3 * 2 মেগা ওহম)-প্রচুর তার। - সরঞ্জাম ক্যাপাসিটিভ স্পর্শ- গ্রাউন্ডপ্লেটগুলির জন্য ধাতব রিং- তামার তার বা প্লেট- এটি তৈরি করার জন্য কিছু (একটি বুকশেলফের মতো:)

ধাপ 2: ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট

ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট
ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট
ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট
ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট
ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট
ক্যাপাসিটিভ টাচ - বুনিয়াদি এবং সার্কিট

যেহেতু আমি আমার বুকশেলফগুলো আঁকছিলাম, সেগুলোকেও 'আপগ্রেড' করার সুযোগ আমার ছিল। আমি অদৃশ্য স্পর্শের মাধ্যমে মুডলাইট নিয়ন্ত্রণ করতে চেয়েছিলাম। প্রথমে, আমার পরিকল্পনা ছিল এর জন্য একটি ডেডিকেটেড আইসি ব্যবহার করা (যেমন Atmel QT240)। কিন্তু তারপর আমি একটি পৃষ্ঠায় হোঁচট খেয়ে বললাম যে Arduino সফ্টওয়্যার দ্বারা একটি ক্যাপাসিটিভ সেন্সর অনুকরণ করতে পারে ছবিতে ইলেকট্রনিক সার্কিট পাওয়া যাবে, সেন্সরটি একটি স্পাইরেড কপার ওয়্যার (সরলতার জন্য শুধুমাত্র একটি দেখানো হয়েছে)। সংবেদনশীলতা প্রতিটি পিনের আগে পাওয়া প্রতিরোধক দ্বারা নিয়ন্ত্রিত হয়। পরম বা কাছাকাছি স্পর্শ প্রয়োজন হলে (1M ওহম প্রতিরোধক ব্যবহার করে শেষ করেছি) উপর নির্ভর করে তারা 1 মেগা ওহম (পরম স্পর্শ) থেকে 40 মেগা ওহম (12-24 ইঞ্চি দূরে) পর্যন্ত হতে পারে। সেন্সর পছন্দসই আচরণ না হওয়া পর্যন্ত মানগুলির সাথে পরীক্ষা করুন। প্রতিটি সর্পিলের পিছনে সার্কিটের মাটির সাথে সংযুক্ত কিছু কন্ডাক্টিং সারফেস (একটি পাতলা নন-কন্ডাক্টিং টুকরা দ্বারা পৃথক) ইনস্টল করা একটি ভাল ধারণা। এই ভাবে সেন্সর আরো স্থিতিশীল এবং কম শব্দ দ্বারা প্রভাবিত হবে একটি বুকশেলফে সেন্সর ইনস্টল করার বিষয়ে আরো কিছু ছবি। পরবর্তীতে সার্কিটের সাথে সহজে সংযোগের জন্য একটি প্লাগ ইনস্টল করা হয়। ফিলার সবকিছু গোপন করার জন্য ব্যবহার করা হয়, এবং এর পরে তারা আঁকা প্রস্তুত।

ধাপ 3: ক্যাপাসিটিভ টাচ - কোড এবং টেস্টিং

ক্যাপাসিটিভ টাচ - কোড এবং টেস্টিং
ক্যাপাসিটিভ টাচ - কোড এবং টেস্টিং

নিম্নলিখিত সোর্স কোডটি ডিবাগিংয়ের জন্য Arduino এ ব্যবহার করা যেতে পারে, arduino সিরিয়াল মনিটরের সাথে মানগুলি পরীক্ষা করুন। ছয়টি মান তৈরি হয়। প্রথমটি হল সিস্টেমের কর্মক্ষমতার পরিমাপ। দ্বিতীয় থেকে ষষ্ঠ হল প্রতিটি পিনে অনুভূত মান। আপনার আঙুলের কাছাকাছি যখন মান বৃদ্ধি করা উচিত। যদি না হয়, খারাপ সংযোগ এবং হস্তক্ষেপ পরীক্ষা করুন। সংবেদনশীলতা নির্ধারণ করতে প্রতিরোধক মান পরিবর্তন করা যেতে পারে। যদি একটি নির্দিষ্ট লজিক্যাল ট্র্যাশোল্ডে সক্রিয় হয় তাহলে একটি কাঠামো প্রয়োগ করে, একটি সুইচ তৈরি করা যেতে পারে। এটি চূড়ান্ত arduino কোডে ব্যবহার করা হবে। আরো তথ্য, পড়ার পরামর্শ দেওয়া হয়েছে: https://www.arduino.cc/playground/Main/CapSense--- Arduino CapTouch ডিবাগিং কোড ---#অন্তর্ভুক্ত অকার্যকর সেটআপ () {CapSense cs_2_3 = ক্যাপসেন্স (2, 4); // পিন 2 এবং 4 এর মধ্যে 10M প্রতিরোধক, পিন 4 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স cs_2_4 = CapSense (2, 7); // পিন 2 এবং 7 এর মধ্যে 10M প্রতিরোধক, পিন 7 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স cs_2_5 = CapSense (2, 8); // পিন 2 এবং 8 এর মধ্যে 10M প্রতিরোধক, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স cs_2_6 = CapSense (2, 12); // পিন 2 এবং 12 এর মধ্যে 10M প্রতিরোধক, পিন 12 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স cs_2_7 = CapSense (2, 13); // পিন 2 এবং 13 এর মধ্যে 10M রোধ, পিন 13 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলভয়েড সেটআপ () {Serial.begin (9600);} অকার্যকর লুপ () {দীর্ঘ শুরু = মিলিস (); দীর্ঘ মোট 1 = cs_2_3.capSense (30); দীর্ঘ মোট 2 = cs_2_4.capSense (30); দীর্ঘ মোট 3 = cs_2_5.capSense (30); দীর্ঘ মোট 4 = cs_2_6.capSense (30); দীর্ঘ মোট 5 = cs_2_7.capSense (30); সিরিয়াল.প্রিন্ট (মিলিস () - শুরু); // মিলিসেকেন্ডের Serial.print ("\ t") তে কর্মক্ষমতা পরীক্ষা করুন; // ডিবাগ উইন্ডাউন স্পেসিং সিরিয়াল.প্রিন্টের জন্য ট্যাব অক্ষর (মোট 1); // মুদ্রণ সেন্সর আউটপুট 1 সিরিয়াল.প্রিন্ট ("\ টি"); সিরিয়াল.প্রিন্ট (মোট 2); // মুদ্রণ সেন্সর আউটপুট 2 Serial.print ("\ t"); সিরিয়াল.প্রিন্ট (মোট 3); // মুদ্রণ সেন্সর আউটপুট 3 Serial.print ("\ t"); সিরিয়াল.প্রিন্ট (মোট 4); // মুদ্রণ সেন্সর আউটপুট 4 সিরিয়াল.প্রিন্ট ("\ টি"); Serial.println (মোট 5); // মুদ্রণ সেন্সর আউটপুট 5 বিলম্ব (10); // সিরিয়াল পোর্টে ডেটা সীমিত করতে নির্বিচারে বিলম্ব} --- শেষ ---

ধাপ 4: মুড লাইট - বুনিয়াদি এবং সার্কিট

মুড লাইট - বুনিয়াদি এবং সার্কিট
মুড লাইট - বুনিয়াদি এবং সার্কিট
মুড লাইট - বুনিয়াদি এবং সার্কিট
মুড লাইট - বুনিয়াদি এবং সার্কিট
মুড লাইট - বুনিয়াদি এবং সার্কিট
মুড লাইট - বুনিয়াদি এবং সার্কিট

এখন সময় এসেছে সিস্টেমের আউটপুট অংশ তৈরির। Arduino এর PWM পিনগুলি প্রতিটি রঙ নিয়ন্ত্রণ করতে ব্যবহার করা হবে। পিডব্লিউএম মানে পালস প্রস্থ মডুলেশন, খুব দ্রুত একটি পিন চালু এবং বন্ধ করে লেডগুলি 0 থেকে 255 পর্যন্ত ম্লান হয়ে যাবে। প্রতিটি পিন একটি FET দ্বারা পরিবর্ধিত হবে। আপাতত, সিস্টেমে প্রতি রঙে একটি মাত্র চ্যানেল রয়েছে, যার অর্থ হল সমস্ত RGB স্ট্রিপগুলি একবারে নিয়ন্ত্রিত হবে এবং 3 PWM পিনের প্রয়োজন হবে (প্রতিটি রঙের জন্য একটি)। ভবিষ্যতে আমি আমার চারটি RGB স্ট্রিপের প্রতিটি নিয়ন্ত্রণ করতে সক্ষম হতে চাই। এর মানে হল 4*3 = 12 PWM পিন (এবং সম্ভবত একটি Arduino মেগা) ঠিক আছে, কিছু স্কিম্যাটিক্সের জন্য সময়! এটি (ছবি দেখুন) সার্কিটের একটি মৌলিক উপস্থাপনা (শীঘ্রই একটি সুন্দর করে তুলবে)। ক্যাপাসিটিভ সেন্সরগুলিও অন্তর্ভুক্ত রয়েছে (সবুজ অংশ)। মূলত তিনটি উপাদান রয়েছে যা ব্যাখ্যা করতে হবে:- FET এই হল সেই পরিবর্ধক যার কথা আমি বলছিলাম। এটি একটি গেট, একটি উৎস এবং একটি ড্রেন আছে এটি গেটের (Arduino এর সাথে সংযুক্ত) একটি ছোট স্রোতকে বাড়িয়ে তোলে এবং 12 ভোল্টে চালিত RGB স্ট্রিপের পথ খুলে দেয়। উৎস +12V, GND (গ্রাউন্ড) এ ড্রেন হওয়া উচিত। সঠিক পিনআউটের জন্য আপনার FET এর স্পেসিফিকেশন শীট চেক করুন। প্রতিটি RGB চ্যানেল তার নিজস্ব FET এর আগে অবস্থান করা উচিত। এই অর্থে, এটি একটি Arduino নিয়ন্ত্রিত সুইচের মত কাজ করছে। অর্থাৎ, সাধারণ তারের +12V এর সাথে সংযুক্ত হওয়া উচিত এবং প্রতিটি পৃথক রঙের চ্যানেলের মাধ্যমে কারেন্ট ডুবে যায়। স্ট্রিপটি প্রতিরোধককে অন্তর্ভুক্ত করেছে, তাই এটি সম্পর্কে কোন উদ্বেগ নেই! আরও তিনজন FET এর সর্বাধিক বর্তমানকে সীমাবদ্ধ করবে। শীর্ষ তিনটি প্রতিরোধক ইতিমধ্যেই আরজিবি স্ট্রিপে আছে আমি আরজিবি স্ট্রিপগুলিতে ইউএসবি কেবলগুলি সোল্ডার করেছি যাতে আমি সহজেই তাদের মডুলারভাবে সংযুক্ত করতে পারি। একটি পুরানো হাব থেকে প্লাগগুলি আমার রুটিবোর্ডে রাখা হয়েছে। রসের জন্য একটি পুরানো কম্পিউটার পাওয়ার সাপ্লাই ব্যবহার করুন, আরজিবি স্ট্রিপ পাওয়ারের জন্য 12V এবং অবশেষে সার্কিটের জন্য 5V ব্যবহার করুন যদি আপনি এটি USB কেবল ছাড়া চালাতে চান।

ধাপ 5: মুড লাইট - কোড এবং নিয়ন্ত্রণ

মেজাজ আলো ক্যাপাসিটিভ সেন্সর দ্বারা নিয়ন্ত্রিত হয়। আপাতত, আমি কেবল রঙ পরিবর্তনের জন্য 2 এবং 3 সেন্সর প্রোগ্রাম করেছি। অন্যান্য সেন্সরের এখনো কোন কাজ নেই। এখানে কোড হল: --- Arduino মুড কন্ট্রোল কোড ---#অন্তর্ভুক্ত const বুলিয়ান ইনভার্ট = সত্য; const দীর্ঘ সময়সীমা = 10000; // ক্যাপাসিটিভ সেন্সর ঘোষণা CapSense In1 = CapSense (2, 4); // 2M পিন 4 এবং 2 এর মধ্যে প্রতিরোধক, পিন 2 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 2 = ক্যাপসেন্স (2, 7); // 2M পিন 4 এবং 6 এর মধ্যে প্রতিরোধক, পিন 6 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 3 = ক্যাপসেন্স (2, 8); // 2M পিন 4 এবং 8 এর মধ্যে প্রতিরোধক, পিন 8 হল সেন্সর পিন, তার যুক্ত করুন, ফয়েলক্যাপসেন্স ইন 4 = ক্যাপসেন্স (2, 12); // 2M পিন 4 এবং 8 এর মধ্যে প্রতিরোধক, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 5 = ক্যাপসেন্স (2, 13); // 2M পিন 4 এবং 8 এর মধ্যে রোধ, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েল // PWM পিন ঘোষণা PinR1 = 3; int PinG1 = 5; int PinB1 = 6; // অন্যান্য পরিবর্তনশীল রঙ 1 = 128; // রঙের মতো লাল রঙে শুরু করুন উজ্জ্বলতা 1 = 255; // সম্পূর্ণ উজ্জ্বলতায় শুরু করুন RedValue1, GreenValue1, BlueValue1; // RGB কম্পোনেন্টসভয়েড সেটআপ () {// সেট সেন্সর টাইমআউট মান In1.set_CS_AutocaL_Millis (টাইমআউট); In2.set_CS_AutocaL_Millis (সময় শেষ); In3.set_CS_AutocaL_Millis (সময় শেষ); In4.set_CS_AutocaL_Millis (সময়সীমা); In5.set_CS_AutocaL_Millis (সময়সীমা);} অকার্যকর লুপ () {দীর্ঘ শুরু = মিলিস (); দীর্ঘ মোট 1 = In1.capSense (30); দীর্ঘ মোট 2 = In2.capSense (30); দীর্ঘ মোট 3 = In3.capSense (30); দীর্ঘ মোট 4 = In4.capSense (30); দীর্ঘ মোট 5 = In5.capSense (30); যদি (মোট 2> 150) {Color1 ++; // রঙ বাড়ান যদি (Color1> 255) {// Color1 = 0; }} অন্যথায় যদি (মোট 3> 200) {Color1--; // রঙ হ্রাস করুন যদি (Color1 <0) {// Color1 = 255; } // রঙকে rgb hueToRGB (Color1, Brightness1) রূপান্তর করুন; // PWM পিন analogWrite রং লিখুন (PinR1, RedValue1); analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // ফাংশন একটি রঙকে তার লাল, সবুজ এবং নীল অংশে রূপান্তরিত করতে। hueToRGB বাদ দিয়ে স্বাক্ষরবিহীন int বিভাগ = স্কেলডহিউ / 256; // সেগমেন্ট 0 থেকে 5 রঙের চাকার চারপাশে স্বাক্ষরবিহীন int segmentOffset = scaledHue - (সেগমেন্ট * 256); // স্বাক্ষরবিহীন int প্রশংসা বিভাগের মধ্যে অবস্থান = 0; স্বাক্ষরবিহীন int prev = (উজ্জ্বলতা * (255 - সেগমেন্টঅফসেট)) / 256; স্বাক্ষরবিহীন int next = (উজ্জ্বলতা * সেগমেন্ট অফসেট) / 256; যদি (বিপরীত) {উজ্জ্বলতা = 255-উজ্জ্বলতা; প্রশংসা = 255; prev = 255-prev; পরবর্তী = 255-পরবর্তী; } সুইচ (সেগমেন্ট) {কেস 0: // = RedValue1 = উজ্জ্বলতা; GreenValue1 = পরবর্তী; BlueValue1 = প্রশংসা; বিরতি; কেস 1: // হলুদ RedValue1 = prev; GreenValue1 = উজ্জ্বলতা; BlueValue1 = প্রশংসা; বিরতি; কেস 2: // সবুজ RedValue1 = প্রশংসা; GreenValue1 = উজ্জ্বলতা; BlueValue1 = পরবর্তী; বিরতি; কেস 3: // সায়ান RedValue1 = প্রশংসা; GreenValue1 = prev; BlueValue1 = উজ্জ্বলতা; বিরতি; কেস 4: // নীল RedValue1 = পরবর্তী; GreenValue1 = প্রশংসা; BlueValue1 = উজ্জ্বলতা; বিরতি; কেস 5: // ম্যাজেন্টা ডিফল্ট: RedValue1 = উজ্জ্বলতা; GreenValue1 = প্রশংসা; BlueValue1 = prev; বিরতি; }}--- শেষ ---

ধাপ 6: অ্যাম্বি লাইট - আরডুইনো সাইড

অবশ্যই, আপনার কম্পিউটার থেকে মুড লাইট নিয়ন্ত্রণ করতে সক্ষম হওয়া সম্পূর্ণরূপে শীতল হবে। উদাহরণস্বরূপ একটি অ্যাম্বিলাইট বা একটি শব্দ নিয়ন্ত্রিত ডিস্কো তৈরি করতে। এই বিভাগটি অ্যাম্বিলাইট অংশে ফোকাস করে, ভবিষ্যতে আমি আরও কার্যকারিতা যুক্ত করব। আমরা কি ব্যবহার করতে যাচ্ছি সিরিয়াল যোগাযোগ ক্ষমতা এবং কিছু 'প্রসেসিং 1.0' সফটওয়্যার। একটি USB কেবল দ্বারা আপনার কম্পিউটারে আপনার arduino সংযুক্ত করুন (যদি আপনি এটিতে স্কেচ আপলোড করছেন, এটি ইতিমধ্যেই)। Arduino এর জন্য, সিরিয়াল যোগাযোগের জন্য কিছু অতিরিক্ত কোড যোগ করতে হবে। কোডটি শোনার মোডে স্যুইচ করবে, ক্যাপাসিটিভ সেন্সরগুলি চালু করবে যতক্ষণ এটি কম্পিউটার থেকে RGB মান গ্রহণ করে। এটি তারপর PWM পিনগুলিতে RGB মান সেট করে। আপাতত এটি আমার চূড়ান্ত কোড, নিজের পরিবর্তনগুলি পরীক্ষা করুন: --- Arduino Ambilight Code ---#const const boolean invert = true; const long timeout = 10000; long commStart = 0; char val; // Capacitive sensor declarationCapSense ইন 1 = ক্যাপসেন্স (2, 4); // 2M পিন 4 এবং 2 এর মধ্যে প্রতিরোধক, পিন 2 হল সেন্সর পিন, তার যুক্ত করুন, ফয়েলক্যাপসেন্স ইন 2 = ক্যাপসেন্স (2, 7); // 2M পিন 4 এবং 6 এর মধ্যে প্রতিরোধক, পিন 6 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 3 = ক্যাপসেন্স (2, 8); // 2M পিন 4 এবং 8 এর মধ্যে প্রতিরোধক, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 4 = ক্যাপসেন্স (2, 12); // পিন 4 এবং 8 এর মধ্যে 2M প্রতিরোধক, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েলক্যাপসেন্স ইন 5 = ক্যাপসেন্স (2, 13); // 2M পিন 4 এবং 8 এর মধ্যে রোধ, পিন 8 হল সেন্সর পিন, তারের যোগ করুন, ফয়েল // PWM পিন ঘোষণা PinR1 = 3; int PinG1 = 5; int PinB1 = 6; // অন্যান্য পরিবর্তনশীল রঙ 1 = 128; // রঙের মতো লাল রঙে শুরু করুন উজ্জ্বলতা 1 = 255; // RedValue1, GreenValue1, BlueValue1 তে সম্পূর্ণ উজ্জ্বলতায় শুরু করুন; // আরজিবি উপাদানগুলি সেটআপ এড়িয়ে যায় () {Serial.begin (9600); // সিরিয়াল কমিউনিকেশন শুরু // সেট সেন্সর টাইমআউট মান In1.set_CS_AutocaL_Millis (টাইমআউট); In2.set_CS_AutocaL_Millis (সময় শেষ); In3.set_CS_AutocaL_Millis (সময় শেষ); In4.set_CS_AutocaL_Millis (সময়সীমা); In5.set_CS_AutocaL_Millis (সময়সীমা);} অকার্যকর লুপ () {দীর্ঘ শুরু = মিলিস (); দীর্ঘ মোট 1 = In1.capSense (30); দীর্ঘ মোট 2 = In2.capSense (30); দীর্ঘ মোট 3 = In3.capSense (30); দীর্ঘ মোট 4 = In4.capSense (30); দীর্ঘ মোট 5 = In5.capSense (30); যদি (Serial.available ()) {// যদি তথ্য পড়ার জন্য পাওয়া যায়, val = Serial.read (); // এটি পড়ুন এবং ভাল কমস্টার্ট = মিলিস () এ সংরক্ষণ করুন; if (val == 'S') {// যদি start char পাওয়া যায়, যখন (! Serial.available ()) {} // পরবর্তী মান পর্যন্ত অপেক্ষা করুন। RedValue1 = Serial.read (); // একবার উপলব্ধ, বরাদ্দ করুন। while (! Serial.available ()) {} // উপরের মতই। GreenValue1 = Serial.read (); while (! Serial.available ()) {} BlueValue1 = Serial.read (); } Serial.print (RedValue1); Serial.print (GreenValue1); Serial.println (BlueValue1); } অন্যথায় যদি ((মিলিস () - কমস্টার্ট)> 1000) {যদি (মোট 2> 150) {রঙ 1 ++; // রঙ বাড়ান যদি (Color1> 255) {// Color1 = 0; }} অন্যথায় যদি (মোট 3> 200) {Color1--; // রঙ হ্রাস করুন যদি (Color1 <0) {// Color1 = 255; }} hueToRGB (Color1, Brightness1); } analogWrite (PinR1, RedValue1); analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // ফাংশন একটি রঙকে তার লাল, সবুজ এবং নীল অংশে রূপান্তরিত করতে। স্বাক্ষরবিহীন int বিভাগ = স্কেলডহিউ / 256; // সেগমেন্ট 0 থেকে 5 রঙের চাকার চারপাশে স্বাক্ষরবিহীন int segmentOffset = scaledHue - (সেগমেন্ট * 256); // স্বাক্ষরবিহীন int প্রশংসা বিভাগের মধ্যে অবস্থান = 0; স্বাক্ষরবিহীন int prev = (উজ্জ্বলতা * (255 - সেগমেন্টঅফসেট)) / 256; স্বাক্ষরবিহীন int পরবর্তী = (উজ্জ্বলতা * সেগমেন্টঅফসেট) / 256; যদি (বিপরীত) {উজ্জ্বলতা = 255-উজ্জ্বলতা; প্রশংসা = 255; prev = 255-prev; পরবর্তী = 255-পরবর্তী; } সুইচ (সেগমেন্ট) {কেস 0: // = RedValue1 = উজ্জ্বলতা; GreenValue1 = পরবর্তী; BlueValue1 = প্রশংসা; বিরতি; কেস 1: // হলুদ RedValue1 = prev; GreenValue1 = উজ্জ্বলতা; BlueValue1 = প্রশংসা; বিরতি; কেস 2: // সবুজ RedValue1 = প্রশংসা; GreenValue1 = উজ্জ্বলতা; BlueValue1 = পরবর্তী; বিরতি; কেস 3: // সায়ান RedValue1 = প্রশংসা; GreenValue1 = prev; BlueValue1 = উজ্জ্বলতা; বিরতি; কেস 4: // নীল RedValue1 = পরবর্তী; GreenValue1 = প্রশংসা; BlueValue1 = উজ্জ্বলতা; বিরতি; কেস 5: // ম্যাজেন্টা ডিফল্ট: RedValue1 = উজ্জ্বলতা; GreenValue1 = প্রশংসা; BlueValue1 = prev; বিরতি; }}--- শেষ ---

ধাপ 7: অ্যাম্বি লাইট - কম্পিউটার সাইড

কম্পিউটারের পাশে একটি প্রসেসিং 1.0 স্কেচ চালানো হয়, processing.org দেখুন। এই সামান্য (কিছুটা অগোছালো) প্রোগ্রামটি প্রতি মুহূর্তে গড় স্ক্রিন কালার গণনা করে এবং এটি সিরিয়াল পোর্টে পাঠায়। এটি এখনও পর্যন্ত খুব মৌলিক এবং এটি কিছু টুইকিং ব্যবহার করতে পারে, তবে এটি খুব ভাল কাজ করে! আমি ভবিষ্যতে একাধিক পৃথক আরজিবি স্ট্রিপ এবং স্ক্রিন বিভাগের জন্য এটি আপডেট করব। আপনি নিজেও এটি করতে পারেন, ভাষাটি বেশ সহজবোধ্য। এখানে কোড হল: --- প্রসেসিং 1.0 কোড --- আমদানি প্রক্রিয়াকরণ। সিরিয়াল।*; আমদানি java.awt. AWTException; আমদানি java.awt. Robot;; PImage screenShot; সিরিয়াল myPort; স্ট্যাটিক পাবলিক ভয়েড মেইন (স্ট্রিং আর্গস ) {PApplet.main (new String {"--present", "shooter"});} void setup () {size (100, 100); // সাইজ (স্ক্রিন। প্রস্থ, স্ক্রিন। // ডিবাগিং উদ্দেশ্যে সিরিয়াল পোর্টগুলির একটি তালিকা মুদ্রণ করুন: println (Serial.list ()); // আমি জানি যে আমার ম্যাকের সিরিয়াল তালিকার প্রথম পোর্ট // সর্বদা আমার FTDI অ্যাডাপ্টার, তাই আমি Serial.list () [0] খুলি। // উইন্ডোজ মেশিনে, এটি সাধারণত COM1 খোলে। // আপনি যে পোর্টটি ব্যবহার করছেন তা খুলুন। স্ট্রিং portName = Serial.list () [0]; myPort = নতুন সিরিয়াল (এই, portName, 9600);} void draw () {// image (screenShot, 0, 0, width, height); স্ক্রিনশট = getScreen (); রঙ kleur = রঙ (0, 0, 0); kleur = রঙ (স্ক্রিনশট); //myPort.write(int(red(kleur))++ ','+int (green (kleur))+','+int (blue (kleur))+13); //myPort.write(int(red(kleur))); //myPort.write (','); //myPort.write(int(green(kleur))); //myPort.write (','); //myPort.write(int(blue(kleur))); //myPort.write (13); পূরণ (kleur); রেকট (30, 20, 55, 55);} রঙের রঙ (PImage img) {int cols = (img.width); int সারি = (img.height); int মাত্রা = (img.width*img.height); int r = 0; int g = 0; int b = 0; img.loadPixels (); // Ga elke pixel langs (dimension) for (int i = 0; i <(dimension/2); i ++) {r = r+((img.pixels >> 16) & 0xFF); g = g + ((img.pixels >> 8) & 0xFF); b = b + (img.pixels & 0xFF);} int mean_r = r/(dimension/2); int mean_g = g/(dimension/2); int mean_b = b/(মাত্রা/2); রঙ mean_clr = রঙ (mean_r, mean_g, mean_b); myPort.write ('S'); myPort.write (mean_r); myPort.write (mean_g); myPort.write (mean_b); return (mean_clr);} PImage getScreen () {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); গ্রাফিক্স ডিভাইস gs = ge.getScreenDevices (); DisplayMode মোড = gs [0].getDisplayMode (); আয়তক্ষেত্র সীমা = নতুন আয়তক্ষেত্র (0, 0, mode.getWidth (), mode.getHeight ()); BufferedImage ডেস্কটপ = নতুন BufferedImage (mode.getWidth (), mode.getHeight (), BufferedImage. TYPE_INT_RGB); চেষ্টা করুন {ডেস্কটপ = নতুন রোবট (gs [0])। createScreenCapture (bounds); } catch (AWTException e) {System.err.println ("স্ক্রিন ক্যাপচার ব্যর্থ হয়েছে।"); } ফেরত (নতুন PImage (ডেস্কটপ));} --- শেষ ---

ধাপ 8: ফলাফল

ফলাফল
ফলাফল
ফলাফল
ফলাফল

এবং এই ফলাফল, এটা আসলে আমার বিছানার নিচের দিকে। আমার এখনও কাপড়টি প্রতিস্থাপন করা দরকার, এটি আলোকে আরও ছড়িয়ে দেবে। শীঘ্রই আরো ছবি আমি আশা করি আপনি এই নির্দেশযোগ্য পছন্দ করেন এবং আমি আশা করি এটি আপনার নিজের সৃজনশীলতার একটি ভিত্তি। সময়-সীমাবদ্ধতার কারণে আমি খুব দ্রুত লিখলাম। এটি বোঝার জন্য আপনার কিছু মৌলিক arduino/ইলেকট্রনিক্স জ্ঞান থাকতে হবে কিন্তু ভবিষ্যতে এটি ভালভাবে গ্রহণ করা হলে আমি এটি আপডেট করার পরিকল্পনা করছি।

প্রস্তাবিত: