সুচিপত্র:
- ধাপ 1: আমরা শুরু করার আগে
- পদক্ষেপ 2: যন্ত্রাংশ প্রয়োজন
- ধাপ 3: সংযোগ এবং হার্ডওয়্যার নির্মাণ
- ধাপ 4: 50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
- ধাপ 5: Arduino কোডিং এবং তারের
- ধাপ 6: ফলাফল এবং চলচ্চিত্র তৈরি
ভিডিও: আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ: 6 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
লাইট মডিউলের বৈশিষ্ট্য
- আরডুইনো উনো
- হার্ডওয়্যার এবং ঘের ইন্টারনেট থেকে কেনা
- নিওপিক্সেল এবং বিদ্যুৎ সরবরাহ স্কুল অফ ইনফরম্যাটিক্স অ্যান্ড প্রোডাক্ট ডিজাইন থেকে ধার করা
- বিদ্যুৎ সরবরাহ দ্বারা নিয়ন্ত্রিত হালকা মডিউল
- সমস্ত ফাংশন ব্যবহারকারীদের মিথস্ক্রিয়া দ্বারা নিয়ন্ত্রিত
- নিওপিক্সেল স্ট্রিপের অ্যানিমেশন প্রকার: বৃষ্টির ধরন, ঝরনার ধরন, স্পার্ক বাজের প্রকার, পপ প্রকার, অনিয়মিত প্রকার
- পুল আপ সুইচ নিওপিক্সেল স্ট্রিপের সাথে সংযুক্ত এবং নিওপিক্সেল স্ট্রিপ টানলে অ্যানিমেশন পরিবর্তন হয়
ধাপ 1: আমরা শুরু করার আগে
হ্যালো নির্দেশক এবং নির্মাতারা।
আমরা আলোর অ্যানিমেশনের মাধ্যমে বৃষ্টির আবেগ অনুভব করতে পারলে কি হবে তার পরিপ্রেক্ষিতে আমরা শুরু করেছি এবং ইন্টারেক্টিভ ডিজাইন প্রকল্প। আমি ভেবেছিলাম যে ব্যবহারকারীর সংবেদনশীলতা একটি ইন্টারফেসের মাধ্যমে সর্বাধিক করা হবে যা সরাসরি আলো টানবে।
পাছে কাজে লাগে
পদক্ষেপ 2: যন্ত্রাংশ প্রয়োজন
একটি হালকা মডিউলের উপর ভিত্তি করে
*** আমাদের বিভাগের সহায়তায় নিওপিক্সেল এবং বিদ্যুৎ সরবরাহ ব্যবহার করা হয়েছিল।
ইলেকট্রনিক্স:
- আরডুইনো উনো
- 3 রঙের তার (কালো, লাল, কোন রঙ)
- 3 পিন সংযোগকারী (কিনতে লিঙ্ক)
- পুল আপ সুইচ 1 (কিনতে লিঙ্ক)
- সঙ্কুচিত নল
- WS2812b 74 LED (Neopixel স্ট্রিপ)*2 সহ অ্যাড্রেসযোগ্য LED স্ট্রিপ
- বিদ্যুৎ সরবরাহ (5V 350A) 1
*** Arduino, Pull Switch এবং NeoPixels এর জন্য 50 টি সেট প্রয়োজন। ***
হার্ডওয়্যার:
- এক্রাইলিক বার 2t (10mm*1000mm) 1
- এক্রাইলিক বোর্ড 5t (60mm*60mm) 1
- Foemax 10t (1200mm*1800mm) 1
- কালো স্প্রে
- তারের গিট
- স্ট্রিং
- হার্ডবোর্ড
- গ্রিড বোর্ড
ধাপ 3: সংযোগ এবং হার্ডওয়্যার নির্মাণ
প্রথমত, আমাদের একটি একক মডিউল তৈরির জন্য এক্রাইলিক কাটিং দরকার।
- আলোর অ্যানিমেশন অনুভব করার মাধ্যম হিসেবে, 1M এলাকা সহ 2 মিমি পুরু এক্রাইলিক বারে নিওপিক্সেল স্ট্রিপ আকারে 74 LEDs সংযুক্ত করে একটি আলোক মডিউল তৈরি করুন। আমরা দুটি ধরণের আলো মডিউল তৈরি করেছি: সাধারণ রৈখিক এবং সর্পিল।
- রৈখিক প্রকারের জন্য, বিদ্যমান নিওপিক্সেল স্ট্রিপগুলি ধরে রাখা এবং সুরক্ষিত করা যেতে পারে, তবে সর্পিল ধরনের ম্যানুয়াল অপারেশন প্রয়োজন। 74 টি LED এর প্রত্যেকটি টুকরায় বিভক্ত, একটি সর্পিল এক্রাইলিকের সাথে সংযুক্ত এবং সীসার সাথে একত্রে আবদ্ধ।
এক্রাইলিকের সাথে নিওপিক্সেল স্ট্রিপটি সংযুক্ত করুন এবং প্রতিটি স্ট্রিপকে তাপ দ্বারা ছড়িয়ে পড়া রোধ করতে সুরক্ষিত করুন, বা একটি পাতলা মাছ ধরার লাইনের সাথে বেঁধে দিন। রৈখিক প্রকারের ক্ষেত্রে, মডিউলের শেষের দিকে টানতে হবে এমন গোলকটি নান্দনিক চেহারা ডিজাইন করার জন্য ইনস্টল করা হয়েছিল এবং আমরা একটি কালো স্প্রে দিয়ে পিং পং বলটি শেষ করেছি। তারপর তারা পিংপং বলের মধ্যে একটি ছোট গর্ত ড্রিল করে এবং এটি একটি দড়ি দিয়ে সংযুক্ত করে। পরবর্তী সবচেয়ে গুরুত্বপূর্ণ অংশ, সুইচ এবং নিওপিক্সেল, দেখানো হিসাবে সংযুক্ত। তারপর সুইচটি সিলিং সেলফে সুরক্ষিত।
সর্পিল প্রকারের ক্ষেত্রে, ঝুঁকি রয়েছে যে সর্পিল মডিউলটি সরাসরি টানতে চাপে এক্রাইলিক ভেঙে যেতে পারে, তাই পুল বিভাগ (ইনপুট) এবং মডিউল (আউটপুট) আলাদা করা হয়েছিল। সর্বাধিক আলো পড়ার জন্য, মডিউলগুলি সিলিংয়ে উল্লম্বভাবে ইনস্টল করা হয়েছিল, রৈখিক মডিউলগুলি বাতাসে স্থির করা হয়েছিল, সর্পিলগুলি সরাসরি সিলিংয়ে স্থির করা হয়েছিল। এবং আমরা পিং পং বল এবং সুইচটিকে মাছ ধরার লাইনে সংযুক্ত করেছি যাতে এটি পরিচালনা করা যায়।
উপরের অঙ্কনে দেখানো এক্রাইলিক কাটিংটি শেলফে সুইচ সুরক্ষিত করার জন্য প্রয়োজন। একটি 6cm বর্গ আকৃতির সুইচ আনুমানিক 5 মিমি পুরু, সুইচ কেন্দ্রীভূত এবং সুইচকে দৃ secure়ভাবে সুরক্ষিত করতে উভয় পাশে ছিদ্র দিয়ে একটি কেবল টাই োকানো হয়। কেন্দ্রের নিচের দিকে একটি বৃত্তাকার গর্ত সুইচের টান উন্মোচন করে, যার নিচে তিনটি তারের তার বের করে মডিউলের কেবল টার্মিনালে সংযুক্ত করা হয়। এবং একইভাবে, চার কোণে একটি গর্তের মাধ্যমে, তাক এবং এক্রাইলিক তারের বন্ধন দিয়ে সুরক্ষিত। উপরে বর্ণিত হিসাবে, রৈখিক মডিউলটি সরাসরি পুলের সাথে সংযুক্ত, তবে সর্পিল মডিউলটি পিন এবং সুইচকে আলাদাভাবে সংযুক্ত করে।
ধাপ 4: 50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
আমরা মোট 50 টি মডিউল মোতায়েন করে সমৃদ্ধ আলোর জন্য একটি ব্যবহারকারীর অভিজ্ঞতা তৈরি করেছি।
আমাদের একটি শেলফ ছিল যা 1, 800 মিমি প্রশস্ত এবং 1, 200 মিমি লম্বা ছিল এবং আমরা প্রতিটি সুইচ এবং মডিউল সংযুক্ত করেছি যাতে আপনি বৃষ্টি এবং বৃষ্টির পরিবেশ যা আমরা প্রাথমিকভাবে পরিকল্পনা করেছি তা অনুভব করতে পারে এবং মাল্টি-টাস্কিং সক্ষম করার জন্য আমাদের প্রতিটি মডিউল একা থাকে ।
নকশা অঙ্কনের উপর নির্ভর করে, একটি বৃত্তাকার গর্ত ফয়েম্যাক্সে ড্রিল করা হয়েছিল যাতে ইনস্টলেশনটি আড়াল করা যায় এবং নিশ্চিত করা যায় যে LED মডিউলের সংযুক্ত এলাকা দৃশ্যমান নয়। যেহেতু অ্যাক্রিলিক বোর্ড থেকে এলইডি মডিউল সংযোগের দূরত্ব যেখানে সুইচটি সংযুক্ত রয়েছে সেগুলি প্রায় 1 সেন্টিমিটার, তাই 1 সেন্টিমিটার পুরু ফয়েম্যাক্স ব্যবহার করা হয়েছিল।
মেটাল স্কয়ার ফ্রেমটি সামগ্রিক ওজন এবং ভারসাম্য বজায় রেখে স্ক্রু এবং তারের বন্ধন সহ ইনস্টলেশনটি ধরে রাখতে ব্যবহৃত হয়েছিল। যদি উন্মুক্ত সংযোগগুলির দৈর্ঘ্য নির্মাতা চেষ্টা করলে তার চেয়ে বেশি হয়, ঘন বোর্ড অকার্যকর এবং অন্যান্য কাঠামোর সুপারিশ করা হয়।
চোখের স্তরে ব্যবহারকারীর অভিজ্ঞতা সহজতর করার জন্য, সম্পূর্ণ ইনস্টলেশনটি প্রায় 2 মিটার উঁচুতে সাপোর্টে রাখা হয়েছে, কিন্তু সাবধানতা হল যে সুইচ দিয়ে এমবেডেড এলইডি মডিউল ইনস্টল করা খুব কষ্টকর, তাই সমস্ত সংযোগ সরিয়ে ফেলা উচিত। আমরা সিঁড়ি বেয়ে উপরে উঠেছি এবং মডিউলটিকে ইনস্টলেশনের সাথে সংযুক্ত করেছি।
এই পুরো প্রক্রিয়ার সবচেয়ে গুরুত্বপূর্ণ অংশটি নিশ্চিত করা যে কাজটি নিরাপদ এবং সম্পূর্ণরূপে নিরাপদ করা হয়েছে তা নিশ্চিত করার জন্য যাতে একটি নিরাপদ পরিবেশে অভিজ্ঞতা সম্ভব হয়।
মোট 10 টি আরডুইনো এবং 50 টি এলইডি মডিউল ব্যবহার করা হয়েছিল এবং আরও দক্ষ এবং বিজোড় মাল্টি-টাস্কিংয়ের জন্য প্রতি আরডুইনোতে পাঁচটি এলইডি মডিউল সংযুক্ত ছিল। বিস্তারিত জানার জন্য সংযুক্ত ব্লুপ্রিন্ট দেখুন। ডিজাইন ডায়াগ্রাম অনুযায়ী ফুল সুইচ ব্যবহার করে নিওপিক্সেল মাল্টি-টাস্কিং কোডিং নিয়ে পরবর্তী ধাপে বিস্তারিত আলোচনা করা হবে।
ধাপ 5: Arduino কোডিং এবং তারের
তারের
- ধাপ 4 এর বিন্যাস অনুযায়ী 50 টি মডিউল সংযুক্ত ছিল।
- মাল্টি-টাস্কিং সক্ষম করতে এবং সুস্পষ্ট সংযোগ প্রদানের জন্য প্রতিটি মডিউলকে 50 টি মডিউলের 10 সেটে বিভক্ত করা হয়েছিল।
- উপরের সেট 1 ছবিতে দেখানো হয়েছে, পাঁচটি মডিউল একটি একক আরডুইনোতে সংযুক্ত ছিল এবং বিদ্যুৎ সরবরাহের সংযোগের জন্য নিওপিক্সেলের 5v পিনগুলি একসঙ্গে বাঁধা ছিল।
- নিওপিক্সেলের GND এবং সুইচগুলিও একসঙ্গে বাঁধা ছিল এবং উপলব্ধির সুবিধার জন্য, সুইচগুলি পিন 2, 3, 4, 5, 6 এবং নিওপিক্সেলগুলি পিন 9, 10, 11, 12, 13 এ প্লাগ করা হয়েছিল ।
- সুইচ এবং নিওপিক্সেল যথাক্রমে 2-9, 3-10, 4-11, 5-12, 6-13 উপায়ে সংযুক্ত ছিল।
- এটি লক্ষ করা উচিত যে যেহেতু লাইনগুলির সংযোগগুলি জটিল এবং শর্ট সার্কিটের কারণে আগুনের ঝুঁকি রয়েছে, তাই দুর্বল অংশগুলি যাতে ভেঙে না যায় সেজন্য সঙ্কুচিত নলটি গরম করা হয়েছিল।
পুল আপ সুইচ সহ নিওপিক্সেল মাল্টি-টাস্কিং কোডিং
5 হালকা অ্যানিমেশন (বৃষ্টির ধরন, ঝরনার ধরন, স্পার্ক বাজের ধরন, পপ টাইপ, অনিয়মিত প্রকার)
#অন্তর্ভুক্ত
/*사용 하고자 하는 패턴 을 추가/*/
এনাম প্যাটার্ন /*네오 픽셀 픽셀 방향 방향 설정/*/ enum direction {FORWARD, REVERSE};
/*패턴 의 클래스 를 를 함/*/
ক্লাস NeoPatterns: public Adafruit_NeoPixel { /* 패턴 을 추가 하고 업데이트 하기 위한* / public: pattern ActivePattern; /*클레스 함수 함수 패턴 의///*/ দিক নির্দেশনা;
/*변수 ব্যবধান 을 추가*/ স্বাক্ষরবিহীন দীর্ঘ ব্যবধান; /*변수 lastUpdate 를 추가*/ স্বাক্ষরবিহীন দীর্ঘ lastUpdate; /*변수 Color1, Color2 를 추가*/ uint32_t Color1, Color2; /*변수 TotalSteps 를 추가*/ uint16_t TotalSteps; /*변수 সূচক 를 추가*/ uint16_t সূচক;
/*패턴 을 완료 했을 시///*/ বাতিল (*অন -কমপ্লিট) (); /*네오 패턴 에서 네오 네오 의 갯수 핀 핀 핀 핀 타입 핀/ অনকম্পলেট = কলব্যাক; }
/*패턴 을 업데이트 하기 위한 위한 구문/*/
অকার্যকর আপডেট () { /*의 의 시간। If 태스킹 을 구현 하는*if /*ActivePattern 의 스위치 구문*/ সুইচ (ActivePattern) {/*কেস RAINBOW_CYCLE 에서는 RainbowCycleUpdate 를 실행 하라*/ case RAINBOW_CYCLE: RainbowCycleUpdate (); /*কেস RAINBOW_CYCLE 에서 나와라*/ বিরতি;
/*ক্ষেত্রে THEATER_CHASE 에서는 TheatreChaseUpdate 를 실행 하라*/
ক্ষেত্রে THEATER_CHASE: TheatreChaseUpdate (); /*ক্ষেত্রে THEATER_CHASE 에서 나와라*/ বিরতি;
/*কেস COLOR_WIPE 에서는 ColorWipeUpdate 를 실행 하라*/
কেস COLOR_WIPE: ColorWipeUpdate (); /*কেস COLOR_WIPE 에서 나와라*/ বিরতি; /*কেস স্ক্যানার 에서는 স্ক্যানার আপডেট 를 실행 하라*/ কেস স্ক্যানার: স্ক্যানার আপডেট (); /*কেস স্ক্যানার 에서 나와라*/ বিরতি;
/*কেস FADE 에서는 FadeUpdate 를 실행 하라*/
কেস FADE: FadeUpdate (); /*কেস FADE 에서 나와라*/ বিরতি;
/*কেস TWINKLE 에서는 TwinkleUpdate 를 실행 하라*/
কেস TWINKLE: TwinkleUpdate (); /*কেস TWINKLE 에서 나와라*/ বিরতি;
/*কেস স্টার 에서는 স্টার আপডেট 를 실행 하라*/
কেস স্টার: স্টার আপডেট (); /*কেস স্টার 에서 나와라*/ বিরতি;
/*কেস RAINBOWSPARKLE 에서는 RainbowsparkleUpdate 실행 실행 하라*/
কেস রেইনবোসপার্কল: রেইনবোস্পার আপডেট (); /*কেস রেইনবো স্পার্কেল 나와라 나와라*/ বিরতি; /*case METEOR 에서는 MeteorUpdate 를 실행 하라*/ case METEOR: MeteorUpdate (); /*কেস METEOR 에서 나와라*/ বিরতি;
/*কেস লাইট 에서는 লাইট আপডেট 를 실행 하라*/
কেস লাইট: লাইট আপডেট (); /*কেস লাইট 에서 나와라*/ বিরতি;
/*ক্ষেত্রে BLOSSOM lo BlossomUpdate 를 실행 하라*/
BLOSSOM কেস: BlossomUpdate (); /*ক্ষেত্রে BLOSSOM 에서 나와라*/ বিরতি; }}}
/*패턴 의 방향 을 설정 설정 구문/*/
/*সূচক 를 증가 시키고 초기화 하는 함수*/
অকার্যকর বর্ধিতকরণ /*만약 인덱스 가 전체 네오 픽셀 구동 구동 갯수 면 면 으로 으로 으로 으로///// /*패턴 을 완료 시키는 함수*/ যদি (OnComplete! = NULL) {OnComplete (); }}}
/*만약 정방향 정방향 아니면 인덱스///*/ অন্যথায় { -ইন্ডেক্স; /*만약 인덱스 가 가 전체 네오 구동 갯수 에서 에서 에서/// 에서 에서 1 을 빼라*/ যদি (সূচী <= 0) {সূচক = মোট পদক্ষেপ - 1; /*패턴 을 완료 시키는 함수*/ যদি (OnComplete! = NULL) {OnComplete (); }}}}
/*반대 방향 으로 움직이게 움직이게 함수/*/
অকার্যকর বিপরীত () { /*애니메이션 함수 verse বিপরীত 를 썼을 시, 만약 방향 이 정방향 이면* / যদি (দিকনির্দেশ == এগিয়ে) { /*방향 은 그 와; সূচক = মোট ধাপ - 1; } /*그 외의 방향 이 이 이면 를 으로 으로 으로 / / / / / / সূচক = 0; }}
/*을 설정 하는 하는 들*
*রেইনবো সাইকেল 의 시간 과 방향 을/*/
অকার্যকর রেইনবো সাইকেল (uint8_t ব্যবধান, দিকনির্দেশ dir = FORWARD) { /*실행 되는 패턴 은 RainbowCycle 임* / ActivePattern = RAINBOW_CYCLE; /*시간 은 অকার্যকর RainbowCycle () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 255 임*/ মোট পদক্ষেপ = 255; /*는 는 0 으로 설정 함*/ সূচক = 0; /*은 은 অকার্যকর RainbowCycle () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }
/*রেনবো সাইকেল 를 업데이트 했을 경우*/
অকার্যকর RainbowCycleUpdate () { /*변수 i 가 네오 픽셀 보다 보다 으면 를 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*변수 i 가 증가 함 동시에 RGB 의 P 로 변화 하면서 작동 해라 * / setPixelColor (i, Wheel (((i * 256 / numPixels ()) + Index) & 255)); } / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
/*থিয়েটার চেস 의 컬러 와 시간 방향 을 입력*/
অকার্যকর থিয়েটারচেস (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 TH RTHEATER_CHASE* / ActivePattern = THEATER_CHASE; /*시간 은 void TheatreChase () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1, 2 를 설정*/ Color1 = color1; রঙ 2 = রঙ 2; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void TheatreChase () 입력 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }
/*থিয়েটার চেস 를 업데이트 했을 경우*/
void TheatreChaseUpdate () { /*변수 i 가 네오 픽셀 보다 작 으면 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*만약 변수 i 에 인덱스 를 으로 3 으로 것이 0 과 같다 면 i 를 Color 변환 변환 시켜라*/ if ((i + index) % 3 == 0) {setPixelColor (i, Color1); } /*않다면 않다면 i 를 রঙ 로 변환 시켜라* / অন্যথায় {setPixelColor (i, Color2); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
/*ColorWipe 의 컬러 와 시간 방향 을 입력*/
অকার্যকর ColorWipe (uint32_t color, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 은 COLOR_WIPE* / ActivePattern = COLOR_WIPE; /*시간 은 অকার্যকর ColorWipe () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ Color1 = রঙ; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void ColorWipe () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }
/*ColorWipeUpdate 를 업데이트 했을 경우*/
অকার্যকর ColorWipeUpdate () { /*index 컬러 컬러 1 로 변환 시켜라* / setPixelColor (সূচক, Color1); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }
/*স্ক্যানার 의 컬러 와 시간 을 입력*/
অকার্যকর স্ক্যানার (uint32_t color1, uint8_t ব্যবধান) { /*실행 되는 패턴 은 SCANNER* / ActivePattern = SCANNER; /*시간 은 অকার্যকর স্ক্যানার () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*구동 갯수 는 총 갯수 에서 1 을 빼고 2 를 곱 해라*/ TotalSteps = (numPixels () - 1)*2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; /*는 는 0 으로 설정 함*/ সূচক = 0; }
/*স্ক্যানার আপডেট 를 업데이트 했을 경우*/
void ScannerUpdate () { /*변수 i 는 영 이고 총 보다 작을 를 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*만약 변수 i 가 인덱스 같다 면 i 를 color1 로 변환 시켜라*/ if (i == Index) {setPixelColor (i, Color1); } / *그렇지 않다면 변수 i 를 전체 구동 갯수 갯수 에서 를 같다 / * / অন্যথায় (i == TotalSteps - Index) {setPixelColor (i, Color1); } / *밖에는 밖에는 i 를 디밍 시켜라 i 의 값 만큼 * / অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
/*স্ক্যানার 의 컬러 1, 2 와 스텝, 시간, 방향 을 입력*/
অকার্যকর বিবর্ণ (uint32_t color1, uint32_t color2, uint16_t step, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 AD FADE* / ActivePattern = FADE; /*시간 은 void Fade () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*구동 갯수 는 스텝 값임*/ TotalSteps = ধাপ; /*컬러 1, 2 를 설정*/ Color1 = color1; রঙ 2 = রঙ 2; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void Fade () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir;))) / মোট পদক্ষেপ; / * 변수 সবুজ 값 은 다음 과 같음 * / uint8_t সবুজ = ((সবুজ (রঙ 1) * (মোট ধাপ - সূচক)) + (সবুজ (রঙ 2) * সূচক)) / মোট পদক্ষেপ; / * 변수 নীল 값 은 다음 과 같음 * / uint8_t নীল = ((নীল (রঙ 1) * (মোট ধাপ - সূচক)) + (নীল (রঙ 2) * সূচক)) / মোট পদক্ষেপ; /*의 의 লাল, সবুজ, নীল 값 으로 컬러 를 셋팅 함*/ কালারসেট (রঙ (লাল, সবুজ, নীল)); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }
/*모든 네오 픽셀 을 을 구문/*/
অকার্যকর alloff () { /*네오 네오 픽셀 갯수 는 74 개 이며* / int NPIXEL = 74; /*변수 i 가 증가 하며 모든 네오 픽셀 컬러 값 으로 으로 으로/*/ for (int i = 0; i <NPIXEL; i ++) {setPixelColor (i, 0, 0, 0); }}
/*টুইঙ্কল 컬러 컬러 1 와 시간 을 입력*/
অকার্যকর টুইঙ্কল (uint32_t color1, uint8_t ব্যবধান) { /*실행 되는 패턴 은 TWINKLE* / ActivePattern = TWINKLE; /*은 은 অকার্যকর টুইঙ্কল () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*컬러 1 를 설정*/ রঙ 1 = রঙ 1; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); সূচক = 0; }
/*টুইঙ্কল আপডেট 를 업데이트 했을 경우*/
অকার্যকর TwinkleUpdate () { /*모든 네오 픽셀 의 를 0 으로* / setAll (0, 0, 0); /*변수 পিক্সেল 은 এলোমেলো 74*/ int পিক্সেল = এলোমেলো (74); /*এলোমেলো 74 개 에서 2 로나 눈 수 를 랜덤/*/setPixelColor (Pixel/2, 50, 100, 255); setPixelColor (Pixel, 250, 255, 250); setPixelColor (Pixel/2, 200, 250, 255); setPixelColor (Pixel, 255, 255, 255); setPixelColor (Pixel, 250, 230, 250); setPixelColor (Pixel/2, 150, 200, 255); / *애니메이션 을 보여주는 함수 */ শো (); / *랜덤 하게 끄는 함수 */ setPixelColor (পিক্সেল, 0, 0, 0); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }
/*স্টার 의 컬러 1 값 을 입력*/
অকার্যকর তারকা (uint32_t color1) { /*실행 되는 패턴 AR STAR* / ActivePattern = STAR; /*시간 은 অকার্যকর তারকা () 안에 되는 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }
/*স্টার আপডেট 를 업데이트 했을 경우*/
অকার্যকর StarUpdate () { /*인덱스 와 컬러 를 셋팅* / setPixelColor (সূচক, Color1); দেখান (); /*변수 i 가 0 이고 구동 갯수 보다 작 으면 i 를 감소 시킴 = 한칸 씩 이동 하는 애니메이션*/ for (int i = 0; i <numPixels (); i--) {setPixelColor (i, Color (0, 0, 0)); } / *애니메이션 을 보여주는 함수 * / বৃদ্ধি (); }
/*Rainbowsparkle 의 시간 과 방향 을/*/
অকার্যকর রেনবোস্পার্কল (uint8_t ব্যবধান, দিক নির্দেশ = ফরওয়ার্ড) { /*실행 되는 패턴 은 RAINBOWSPARKLE* / ActivePattern = RAINBOWSPARKLE; /*시간 은 অকার্যকর Rainbowsparkle () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); সূচক = 0; /*방향 은 অকার্যকর Rainbowsparkle () 안에 입력 되는 দিকনির্দেশ 과 같음*/ দিক = dir; }
/*Rainbowsparkle আপডেট 를 업데이트 했을 경우*/
অকার্যকর RainbowsparkleUpdate () { /*변수 i 가 0 이고 구동 갯수 보다 작 으면 i 값 을 증가 하는데* /for (int i = 0; i <numPixels (); i ++) { /*변수 i 가 0 이고 구동 갯수 작 으면 i 값 을 증가*if setPixelColor (i, c); } অন্য {setPixelColor (i, random (255)); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); } /*উল্কা 의 시간 과 방향 입력 입력* / অকার্যকর উল্কা (uint32_t color1) { /*실행 되는 패턴 ET METEOR* / ActivePattern = METEOR; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 후, *2 를 한 같음 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }
/*উল্কা আপডেট 를 업데이트 했을 경우*/
অকার্যকর MeteorUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == Index) {setPixelColor (i, 100, random (255), 255); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
/*আলো 의 시간 과 방향 을 입력*/
অকার্যকর আলো (uint32_t color1) { /*실행 되는 패턴 IG LIGHT* / ActivePattern = LIGHT; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 *, *2 를 한 것과 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }
/*লাইট আপডেট 를 업데이트 했을 경우*/
void LightUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == TotalSteps - Index) {setPixelColor (i, 150, random (200), 40); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
/*পুষ্প 의 시간 과 방향 을 입력*/
অকার্যকর ব্লসম (uint32_t color1) { /*실행 되는 패턴 L BLOSSOM* / ActivePattern = BLOSSOM; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 후, *2 를 한 같음 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }
/*ব্লসম আপডেট 를 업데이트 했을 경우*/
void BlossomUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == TotalSteps - Index) {setPixelColor (i, 255, random (255), 100); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/ *네오 픽셀 의 의 는 위치 와 색 을///, সবুজ, নীল); } দেখান (); }
/*네오 픽셀 의 디밍, 밝기 를 조절 하는 함수*/
uint32_t DimColor (uint32_t কালার) {// Shift R, G এবং B কম্পোনেন্ট এক ডানে uint32_t dimColor = Color (Red (color) >> 1, Green (color) >> 1, blue (color) >> 1); প্রত্যাবর্তন dimColor; }
/*모든 네오 픽셀 의 칼라 를/*/
void ColorSet (uint32_t color) {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, color); } দেখান (); }
/*레드 값 을 불러 옴*/
uint8_t লাল (uint32_t রঙ) {রিটার্ন (রঙ >> 16) & 0xFF; } /*그린 값 을 불러 옴* / uint8_t সবুজ (uint32_t রঙ) {রিটার্ন (রঙ >> 8) & 0xFF; } /*블루 값 을 불러 옴* / uint8_t নীল (uint32_t রঙ) {রিটার্ন কালার & 0xFF; }
/*রামধনু 컬러 를 불러 옴*/
uint32_t চাকা (বাইট WheelPos) {WheelPos = 255 - WheelPos; যদি (WheelPos <85) {রিটার্ন কালার (255 - WheelPos * 3, 0, WheelPos * 3); } অন্যথায় যদি (WheelPos <170) {WheelPos -= 85; রিটার্ন কালার (0, হুইলপস * 3, 255 - হুইলপস * 3); } অন্য {হুইলপস -= 170; রিটার্ন কালার (WheelPos * 3, 255 - WheelPos * 3, 0); }}};
/*স্ট্রিপ 을 불러 오기 위한 함수 /*사용 하는 스트립 별로 모두 지정 / /* /
অকার্যকর strip1Complete (); অকার্যকর strip2Complete (); অকার্যকর strip3Complete (); অকার্যকর strip4Complete (); অকার্যকর strip5Complete ();
/*네오 픽셀 의 갯수 설정*/
#সংজ্ঞায়িত NUMPIXELS 74 /*사용 하는 버튼 의 갯수 설정* / / NEO_GRB + NEO_KHZ800, & strip1Complete); NeoPatterns strip2 (74, 9, NEO_GRB + NEO_KHZ800, & strip2Complete); NeoPatterns strip3 (74, 10, NEO_GRB + NEO_KHZ800, & strip3Complete); NeoPatterns strip4 (74, 11, NEO_GRB + NEO_KHZ800, & strip4Complete); NeoPatterns strip5 (74, 12, NEO_GRB + NEO_KHZ800, & strip5Complete); /*배열 을 사용한 사용한 버튼 핀 설정*/ const int buttonPin [B_NUM] = {2, 3, 4, 5, 6}; /*배열 을 을 사용 하여 버튼 를 를/*/ int buttonState [B_NUM]; /*2 번핀 부터 6 번핀 까지 상태 는 OW OW LOW 임*/ int lastButtonState [B_NUM] = {LOW, LOW, LOW, LOW, LOW}; /*2 번핀 부터 6 번핀 까지 버튼 카운터 를 초기화/*/ int buttonCounter [B_NUM] = {0, 0, 0, 0, 0}; /*2 번핀 부터 6 번핀 까지 최대 버튼 카운터 는 5 임*/ int buttonCounterMax = 5; /*모든 버튼 버튼 핀 을 일수 있도록 있도록/*/ int reading [B_NUM]; স্বাক্ষরবিহীন দীর্ঘ lastDebounceTime [B_NUM] = {0, 0, 0, 0, 0}; /*모든 버튼 핀 을 읽는 은 은 은 বিলম্ব 50 과*
অকার্যকর সেটআপ(){
*****G G G G G G G; } Serial.begin (9600); /*스트립 1 ~ 5 를 셋팅*/ strip1.begin (); strip2.begin (); strip3.begin (); strip4.begin (); strip5.begin ();
//strip1. TheaterChase(strip1. Color(255, 0, 255), strip1. Color (255, 50, 0), 20, FORWARD);
}
/*버튼 카운터 변수 값 은 5 임*/
int কাউন্টার = 5; void loop () { /*버튼 수 보다 i 가 작 으면 i 를 증가 시키고* / for (int i = 0; i debounceDelay) {যদি (পড়া ! = buttonState ) {buttonState = পড়া [আমি]; buttonCounter ++; /*버튼 카운팅 이 위에서 설정 한 한 Max 값 5 를 넘으면 0 으로 시켜라*।*/ If (buttonCounter > buttonCounterMax) buttonCounter = 0; }} lastButtonState = পড়া ; } /*모든 스트립 을 업데이트*।* / স্ট্রিপ 1. আপডেট (); strip2. আপডেট (); strip3. আপডেট (); strip4. আপডেট (); স্ট্রিপ 5. আপডেট ();
///// SWITCH_2 //////////////////////////////////////////////// ///////////////////////////////////////////////////// ////////////////////////////////////////////
/*버튼 배열 의 0 번째। 2 번핀 에 연결된 연결된 을 을/ 애니메이션/////*/ সুইচ (buttonCounter [0]) {
/*첫번째 버튼 을 활동 활동 구동 구동 애니메이션/*/
কেস 0: strip1. ActivePattern = BLOSSOM; /*해당 애니메이션 의 시간 을 설정*/ স্ট্রিপ 1. অন্তর = 20; /*구동 되는 네오 픽셀 픽셀 갯수 를 설정*/ strip1. TotalSteps = strip1.numPixels (); বিরতি; /*두번째 버튼 을 활동 시키면 구동 되는/*/ ক্ষেত্রে 1: strip1. ActivePattern = RAINBOWSPARKLE; ফালা 1. অন্তর = 50; strip1. TotalSteps = strip1.numPixels (); বিরতি; /*세번째 버튼 버튼 활동 시키면///*/ ক্ষেত্রে 2: strip1. ActivePattern = SCANNER; ফালা 1. অন্তর = 10; strip1. TotalSteps = (strip1.numPixels () - 1) * 2; বিরতি; /*네번째 버튼 을 활동 시키면 구동 되는 애니메이션*/ কেস 3: স্ট্রিপ 1. ActivePattern = TWINKLE; স্ট্রিপ 1. ব্যবধান = 1; strip1. TotalSteps = strip1.numPixels (); বিরতি; ***///// ফালা 1. অন্তর = 10; strip1. TotalSteps = strip1.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);
///// SWITCH_3 //////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////
সুইচ (buttonCounter [1]) {case 0: strip2. ActivePattern = STAR; ফালা 2. অন্তর = 50; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 1: strip2. ActivePattern = RAINBOWSPARKLE; ফালা 2. ব্যবধান = 100; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 2: strip2. ActivePattern = SCANNER; ফালা 2. ব্যবধান = 20; strip2. TotalSteps = (strip2.numPixels () - 1) * 2; বিরতি; কেস 3: strip2. ActivePattern = TWINKLE; ফালা 2. অন্তর = 5; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 4: strip2. ActivePattern = METEOR; ফালা 2. ব্যবধান = 40; strip2. TotalSteps = strip2.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);
///// সুইচ_4 /////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////
সুইচ (buttonCounter [2]) {case 0: strip3. ActivePattern = STAR; strip3. ব্যবধান = 50; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 1: strip3. ActivePattern = RAINBOWSPARKLE; strip3. ব্যবধান = 100; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 2: strip3. ActivePattern = স্ক্যানার; strip3. ব্যবধান = 20; strip3. TotalSteps = (strip3.numPixels () - 1) * 2; বিরতি; কেস 3: strip3. ActivePattern = TWINKLE; strip3. ব্যবধান = 5; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 4: strip3. ActivePattern = METEOR; strip3. ব্যবধান = 25; strip3. TotalSteps = strip3.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);
///// সুইচ_5 /////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////
সুইচ (buttonCounter [3]) {case 0: strip4. ActivePattern = STAR; strip4. ব্যবধান = 50; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 1: strip4. ActivePattern = RAINBOWSPARKLE; strip4. Interval = 100; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 2: strip4. ActivePattern = স্ক্যানার; strip4. ব্যবধান = 20; strip4. TotalSteps = (strip4.numPixels () - 1) * 2; বিরতি; কেস 3: strip4. ActivePattern = TWINKLE; strip4. ব্যবধান = 5; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 4: strip4. ActivePattern = METEOR; strip4. ব্যবধান = 25; strip4. TotalSteps = strip4.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);
///// সুইচ_6 ////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////
সুইচ (buttonCounter [4]) {case 0: strip5. ActivePattern = STAR; স্ট্রিপ 5. অন্তর = 50; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 1: strip5. ActivePattern = RAINBOWSPARKLE; স্ট্রিপ 5. অন্তর = 100; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 2: স্ট্রিপ 5. অ্যাক্টিভ প্যাটার্ন = স্ক্যানার; স্ট্রিপ 5. ব্যবধান = 20; strip5. TotalSteps = (strip5.numPixels () - 1) * 2; বিরতি; কেস 3: strip5. ActivePattern = TWINKLE; স্ট্রিপ 5. ব্যবধান = 5; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 4: strip5. ActivePattern = METEOR; স্ট্রিপ 5. ব্যবধান = 25; strip5. TotalSteps = strip5.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]); }
// strip1 সমাপ্তি কলব্যাক
অকার্যকর strip1Complete () {strip1. Color1 = strip1. Wheel (এলোমেলো (255)); strip1. Color2 = strip1. Wheel (এলোমেলো (255)); স্ট্রিপ 1. ইন্ডেক্স = 0; }
// strip2 সমাপ্তি কলব্যাক
অকার্যকর strip2Complete () {strip2. Color1 = strip2. Wheel (এলোমেলো (255)); strip2. Color2 = strip2. Wheel (এলোমেলো (255)); স্ট্রিপ 2. ইনডেক্স = 0; }
// strip3 সমাপ্তি কলব্যাক
অকার্যকর strip3Complete () {strip3. Color1 = strip3. Wheel (এলোমেলো (255)); strip3. Color2 = strip3. Wheel (এলোমেলো (255)); strip3. সূচক = 0; }
// strip4 সমাপ্তি কলব্যাক
অকার্যকর strip4Complete () {strip4. Color1 = strip4. Wheel (এলোমেলো (255)); strip4. Color2 = strip4. Wheel (এলোমেলো (255)); strip4. ইন্ডেক্স = 0; }
// strip5 সমাপ্তি কলব্যাক
অকার্যকর strip5Complete () {strip5. Color1 = strip5. Wheel (এলোমেলো (255)); strip5. Color2 = strip5. Wheel (এলোমেলো (255)); স্ট্রিপ 5. ইন্ডেক্স = 0; }
ধাপ 6: ফলাফল এবং চলচ্চিত্র তৈরি
আমাদের প্রকল্পে আপনার আগ্রহের জন্য ধন্যবাদ যদিও এটি যথেষ্ট নয়।
প্রস্তাবিত:
চোখের পলক নিয়ন্ত্রিত আলো সুইচ আইজাওয়া এর ইরেজার হেড গগলস ব্যবহার করে (আমার হিরো একাডেমিয়া): 8 টি ধাপ (ছবি সহ)
শোটা আইজাওয়ার ইরেজার হেড গগলস (মাই হিরো একাডেমিয়া) ব্যবহার করে চোখের পলক নিয়ন্ত্রিত লাইট সুইচ: আপনি যদি আমার হিরো একাডেমিয়া মাঙ্গা পড়েন বা আমার হিরো একাডেমিয়া এনিমে দেখেন তবে আপনাকে অবশ্যই শোটা আইজাওয়া নামের একটি চরিত্র জানতে হবে। শোটা আইজাওয়া ইরেজার হেড নামেও পরিচিত, একজন প্রো হিরো এবং ইউএ'র ক্লাস 1-এ এর হোমরুম শিক্ষক। Shota's Quirk তাকে ab দেয়
Arduino এর সাথে 2.4Ghz NRF24L01 মডিউল ব্যবহার করে ওয়্যারলেস রিমোট - Nrf24l01 4 চ্যানেল / 6 চ্যানেল ট্রান্সমিটার রিসিভার কোয়াডকপ্টার - আরসি হেলিকপ্টার - আরডুইনো ব্যবহার করে আরসি প্লেন: 5 টি ধাপ (ছবি সহ)
Arduino এর সাথে 2.4Ghz NRF24L01 মডিউল ব্যবহার করে ওয়্যারলেস রিমোট | Nrf24l01 4 চ্যানেল / 6 চ্যানেল ট্রান্সমিটার রিসিভার কোয়াডকপ্টার | আরসি হেলিকপ্টার | আরডুইনো ব্যবহার করে আরসি প্লেন: একটি আরসি গাড়ি চালানোর জন্য | চতুর্ভুজ | ড্রোন | আরসি প্লেন | RC নৌকা, আমাদের সবসময় একটি রিসিভার এবং ট্রান্সমিটার দরকার, ধরুন RC QUADCOPTER এর জন্য আমাদের একটি 6 টি চ্যানেল ট্রান্সমিটার এবং রিসিভার দরকার এবং সেই ধরনের TX এবং RX খুব ব্যয়বহুল, তাই আমরা আমাদের একটি তৈরি করতে যাচ্ছি
পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: 12 টি ধাপ (ছবি সহ)
পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: বাড়িতে একটি পুল থাকা মজাদার, তবে বড় দায়িত্ব নিয়ে আসে। আমার সবচেয়ে বড় দুশ্চিন্তা হল কেউ যদি পুলের কাছাকাছি না থাকে (বিশেষ করে ছোট বাচ্চারা) পর্যবেক্ষণ করে। আমার সবচেয়ে বড় বিরক্তি হল নিশ্চিত করা যে পুলের পানির লাইন কখনই পাম্পের নিচে যাবে না
স্পর্শ সুইচ - কিভাবে একটি ট্রানজিস্টর এবং ব্রেডবোর্ড ব্যবহার করে একটি টাচ সুইচ তৈরি করতে হয় ।: 4 ধাপ
স্পর্শ সুইচ | কিভাবে একটি ট্রানজিস্টর এবং ব্রেডবোর্ড ব্যবহার করে একটি টাচ সুইচ তৈরি করতে হয় ।: টাচ সুইচ ট্রানজিস্টর প্রয়োগের উপর ভিত্তি করে একটি খুব সহজ প্রকল্প। এই প্রকল্পে BC547 ট্রানজিস্টার ব্যবহার করা হয়েছে যা টাচ সুইচ হিসাবে কাজ করে। ভিডিওটি দেখার জন্য নিশ্চিত থাকুন যা আপনাকে প্রকল্প সম্পর্কে সম্পূর্ণ বিবরণ দেবে
রিলে ব্যবহার করে কিভাবে 220v টাচ সুইচ হালকা করবেন: 8 টি ধাপ
কিভাবে রিলে ব্যবহার করে 220v টাচ সুইচ লাইট তৈরি করা যায়: রিলে বোর্ড এবং মোসফেট ট্রানজিস্টর ব্যবহার করে 220v লাইটের জন্য টাচ সুইচ কিভাবে তৈরি করা যায় এটি একটি খুব সহজ প্রকল্প এবং নিরাপদ কারণ প্রধান 220v পাওয়ারটি ডিসি 5v পাওয়ার থেকে বিচ্ছিন্ন কিন্তু প্রথমত, এটি নেওয়া যাক ধাপে ধাপে